diff --git a/.gitignore b/.gitignore index 31867d19..aa8d155 100644 --- a/.gitignore +++ b/.gitignore
@@ -202,6 +202,8 @@ /content/content_unittests_run.xml /content/test/data/gpu/generated/ /content/test/data/gpu/gpu_reference/ +/content/test/data/gpu/mediapipe/ +/content/test/data/gpu/mediapipe_zip/mediapipe_chromium_tests.zip /content/test/data/layout_tests/ /content/test/data/plugin/ /content/web_ui_test_mojo_bindings.xml
diff --git a/DEPS b/DEPS index f076cdc0..cf77fbb 100644 --- a/DEPS +++ b/DEPS
@@ -209,11 +209,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'fa06f102f13bcfa94748ae2d9beb9f66ab4ce150', + 'skia_revision': '2b8fd2e8e01043bd0e8adf773290ceb774f8bba6', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'ee9390c296d74c86241568f06d7eaaaada16d643', + 'v8_revision': 'c703dd554685dada82c43deb8b5566c3649b5310', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -256,7 +256,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling NaCl # and whatever else without interference from each other. - 'nacl_revision': 'b99d3e6cccb5004a5e400f1531cfdac033014d39', + 'nacl_revision': '678f5814e36d61e380bd81596b1f427ad09d5a03', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. @@ -288,7 +288,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '85c4713355a396eaae1b502df2bb589b32e1ac08', + 'devtools_frontend_revision': '2acbbd12f3085969d5443c0b29a5b299ccc86799', # 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. @@ -328,7 +328,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': '4d5e02366a582a4e21d73ce1e58a47fb176e07ed', + 'dawn_revision': '9a8df8603a9dc3e8646d01d90c3335ec66a5cbe4', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -946,7 +946,7 @@ # Tools used when building Chrome for Chrome OS. This affects both the Simple # Chrome workflow, as well as the chromeos-chrome ebuild. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'f54a40a99443e76a1557cd134554904b65cd664e', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '8bfbc1211c43853af17e3f301e1c1c858540909a', 'condition': 'checkout_chromeos', }, @@ -1338,7 +1338,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '424d8898471d8c779a0378ff6fb9117e1de3095e', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'a6c4cea7f7ff399ed4f69ec8ca30153ff60264fa', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1435,7 +1435,7 @@ }, 'src/third_party/re2/src': - Var('chromium_git') + '/external/github.com/google/re2.git' + '@' + '6ec705dcd7a44a458f2b41630ab2101dc404053c', + Var('chromium_git') + '/external/github.com/google/re2.git' + '@' + '969c3bd5a820ea0613b9a7ddcd97c3de1bb19285', 'src/third_party/r8': { 'packages': [ @@ -1474,7 +1474,7 @@ Var('chromium_git') + '/external/smhasher.git' + '@' + 'e87738e57558e0ec472b2fc3a643b838e5b6e88f', 'src/third_party/snappy/src': - Var('chromium_git') + '/external/github.com/google/snappy.git' + '@' + 'ea368c2f07de5f31146a10214f27d15091b09771', + Var('chromium_git') + '/external/github.com/google/snappy.git' + '@' + '9c1be17938429574cdec8fbf820f2d9d5ea66c5c', 'src/third_party/sqlite/src': Var('chromium_git') + '/chromium/deps/sqlite.git' + '@' + '144e06fad93722336e6b066071b941b1763f6f18', @@ -1552,7 +1552,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '34974c270a8740dcd63069fffa59741ab0416f1a', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '816b638048fb7cc5ba72968a59650b693b704101', + Var('webrtc_git') + '/src.git' + '@' + '73604615328f92daaee6dc7f78efa28e1dda2b60', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1613,7 +1613,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@1e9aaa658f76d5548db117085a93bd74e62cdef4', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@fd67a614e9904cd36fd2fe7e7b143e0404f438f8', 'condition': 'checkout_src_internal', },
diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw_contents.cc index 855b781..54ad96e8 100644 --- a/android_webview/browser/aw_contents.cc +++ b/android_webview/browser/aw_contents.cc
@@ -325,8 +325,8 @@ autofill::features::kAndroidAutofillQueryServerFieldTypes) && (!autofill::AutofillProvider:: is_download_manager_disabled_for_testing()) - ? autofill::AutofillHandler::ENABLE_AUTOFILL_DOWNLOAD_MANAGER - : autofill::AutofillHandler::DISABLE_AUTOFILL_DOWNLOAD_MANAGER, + ? autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER + : autofill::AutofillManager::DISABLE_AUTOFILL_DOWNLOAD_MANAGER, autofill_provider_.get()); }
diff --git a/android_webview/browser/aw_quota_manager_bridge.cc b/android_webview/browser/aw_quota_manager_bridge.cc index b5c4871..599c9496 100644 --- a/android_webview/browser/aw_quota_manager_bridge.cc +++ b/android_webview/browser/aw_quota_manager_bridge.cc
@@ -172,7 +172,7 @@ // AndroidWebview does not use per-site storage partitions. StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser_context_); + browser_context_->GetDefaultStoragePartition(); DCHECK(storage_partition); return storage_partition; }
diff --git a/android_webview/browser/aw_settings.cc b/android_webview/browser/aw_settings.cc index 891e4289..e135c9f 100644 --- a/android_webview/browser/aw_settings.cc +++ b/android_webview/browser/aw_settings.cc
@@ -259,7 +259,7 @@ AwBrowserContext::FromWebContents(web_contents()); // AndroidWebview does not use per-site storage partitions. content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(aw_browser_context); + aw_browser_context->GetDefaultStoragePartition(); std::string expanded_language_list = net::HttpUtil::ExpandLanguageList(prefs->accept_languages); storage_partition->GetNetworkContext()->SetAcceptLanguage(
diff --git a/android_webview/browser/safe_browsing/aw_safe_browsing_allowlist_manager.cc b/android_webview/browser/safe_browsing/aw_safe_browsing_allowlist_manager.cc index 2ddd293..27d38f50 100644 --- a/android_webview/browser/safe_browsing/aw_safe_browsing_allowlist_manager.cc +++ b/android_webview/browser/safe_browsing/aw_safe_browsing_allowlist_manager.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/sequenced_task_runner.h" +#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/task_runner_util.h" @@ -67,7 +68,7 @@ for (auto hostcomp = components.rbegin(); hostcomp != components.rend(); ++hostcomp) { DCHECK(!node->match_prefix); - std::string component = hostcomp->as_string(); + std::string component(*hostcomp); auto child_node = node->children.find(component); if (child_node == node->children.end()) { std::unique_ptr<TrieNode> temp = std::make_unique<TrieNode>(); @@ -117,7 +118,7 @@ started_with_dot = true; } // With the dot removed |rule| should look like a hostname. - GURL test_url("http://" + rule.as_string()); + GURL test_url("http://" + std::string(rule)); if (!test_url.is_valid()) { return false; } @@ -162,7 +163,7 @@ if (node->match_prefix) { return true; } - auto child_node = node->children.find(component->as_string()); + auto child_node = node->children.find(std::string(*component)); if (child_node == node->children.end()) { return false; } else {
diff --git a/android_webview/browser/safe_browsing/aw_safe_browsing_blocking_page.cc b/android_webview/browser/safe_browsing/aw_safe_browsing_blocking_page.cc index b320dca9..9f00daf 100644 --- a/android_webview/browser/safe_browsing/aw_safe_browsing_blocking_page.cc +++ b/android_webview/browser/safe_browsing/aw_safe_browsing_blocking_page.cc
@@ -72,7 +72,7 @@ AwBrowserContext* aw_browser_context = AwBrowserContext::FromWebContents(web_contents); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(aw_browser_context) + aw_browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); // TODO(timvolodine): create a proper history service; currently the // HistoryServiceFactory lives in the chrome/ layer and relies on Profile
diff --git a/ash/clipboard/clipboard_history_controller_unittest.cc b/ash/clipboard/clipboard_history_controller_unittest.cc index d937fd12..08e9690 100644 --- a/ash/clipboard/clipboard_history_controller_unittest.cc +++ b/ash/clipboard/clipboard_history_controller_unittest.cc
@@ -59,6 +59,7 @@ // ClipboardImageModelFactory: void Render(const base::UnguessableToken& clipboard_history_item_id, const std::string& markup, + const gfx::Size& bounding_box_size, ImageModelCallback callback) override { std::move(callback).Run(ui::ImageModel()); }
diff --git a/ash/clipboard/clipboard_history_resource_manager.cc b/ash/clipboard/clipboard_history_resource_manager.cc index bcef0bf..6e726cc9 100644 --- a/ash/clipboard/clipboard_history_resource_manager.cc +++ b/ash/clipboard/clipboard_history_resource_manager.cc
@@ -7,7 +7,9 @@ #include <string> #include "ash/clipboard/clipboard_history_util.h" +#include "ash/display/display_util.h" #include "ash/public/cpp/clipboard_image_model_factory.h" +#include "ash/public/cpp/window_tree_host_lookup.h" #include "ash/resources/vector_icons/vector_icons.h" #include "base/bind.h" #include "base/containers/contains.h" @@ -18,9 +20,13 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "ui/aura/window_tree_host.h" #include "ui/base/clipboard/clipboard_data.h" #include "ui/base/clipboard/custom_data_helper.h" +#include "ui/base/ime/input_method.h" +#include "ui/base/ime/text_input_client.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/display/screen.h" #include "ui/gfx/canvas.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/image/canvas_image_source.h" @@ -279,8 +285,20 @@ cached_image_model.clipboard_history_item_ids.push_back(item.id()); cached_image_models_.push_back(std::move(cached_image_model)); + // `text_input_client` can be nullptr in tests. + const auto* text_input_client = + ash::GetWindowTreeHostForDisplay( + display::Screen::GetScreen()->GetPrimaryDisplay().id()) + ->GetInputMethod() + ->GetTextInputClient(); + + const gfx::Rect bounding_box = + text_input_client ? text_input_client->GetSelectionBoundingBox() + : gfx::Rect(); ClipboardImageModelFactory::Get()->Render( id, item.data().markup_data(), + IsRectContainedByAnyDisplay(bounding_box) ? bounding_box.size() + : gfx::Size(), base::BindOnce(&ClipboardHistoryResourceManager::CacheImageModel, weak_factory_.GetWeakPtr(), id)); return;
diff --git a/ash/clipboard/clipboard_history_resource_manager_unittest.cc b/ash/clipboard/clipboard_history_resource_manager_unittest.cc index b8214f2..972484d 100644 --- a/ash/clipboard/clipboard_history_resource_manager_unittest.cc +++ b/ash/clipboard/clipboard_history_resource_manager_unittest.cc
@@ -70,6 +70,7 @@ Render, (const base::UnguessableToken&, const std::string&, + const gfx::Size&, ImageModelCallback), (override)); MOCK_METHOD(void, CancelRequest, (const base::UnguessableToken&), (override)); @@ -189,7 +190,7 @@ TEST_F(ClipboardHistoryResourceManagerTest, BasicImgCachedImageModel) { ui::ImageModel expected_image_model = GetRandomImageModel(); ON_CALL(*mock_image_factory(), Render) - .WillByDefault(testing::WithArg<2>( + .WillByDefault(testing::WithArg<3>( [&](ClipboardImageModelFactory::ImageModelCallback callback) { std::move(callback).Run(expected_image_model); })); @@ -213,7 +214,7 @@ TEST_F(ClipboardHistoryResourceManagerTest, BasicTableCachedImageModel) { ui::ImageModel expected_image_model = GetRandomImageModel(); ON_CALL(*mock_image_factory(), Render) - .WillByDefault(testing::WithArg<2>( + .WillByDefault(testing::WithArg<3>( [&](ClipboardImageModelFactory::ImageModelCallback callback) { std::move(callback).Run(expected_image_model); })); @@ -237,7 +238,7 @@ TEST_F(ClipboardHistoryResourceManagerTest, BasicIneligibleCachedImageModel) { ui::ImageModel expected_image_model = GetRandomImageModel(); ON_CALL(*mock_image_factory(), Render) - .WillByDefault(testing::WithArg<2>( + .WillByDefault(testing::WithArg<3>( [&](ClipboardImageModelFactory::ImageModelCallback callback) { std::move(callback).Run(expected_image_model); })); @@ -260,7 +261,7 @@ // history, but they should share a CachedImageModel. ui::ImageModel expected_image_model = GetRandomImageModel(); ON_CALL(*mock_image_factory(), Render) - .WillByDefault(testing::WithArg<2>( + .WillByDefault(testing::WithArg<3>( [&](ClipboardImageModelFactory::ImageModelCallback callback) { std::move(callback).Run(expected_image_model); })); @@ -295,7 +296,7 @@ std::deque<ui::ImageModel> expected_image_models{first_expected_image_model, second_expected_image_model}; ON_CALL(*mock_image_factory(), Render) - .WillByDefault(testing::WithArg<2>( + .WillByDefault(testing::WithArg<3>( [&](ClipboardImageModelFactory::ImageModelCallback callback) { std::move(callback).Run(expected_image_models.front()); expected_image_models.pop_front();
diff --git a/ash/public/cpp/clipboard_image_model_factory.h b/ash/public/cpp/clipboard_image_model_factory.h index 753d688..89810a39 100644 --- a/ash/public/cpp/clipboard_image_model_factory.h +++ b/ash/public/cpp/clipboard_image_model_factory.h
@@ -35,6 +35,7 @@ // empty ImageModel will be passed through |callback|. virtual void Render(const base::UnguessableToken& id, const std::string& html_markup, + const gfx::Size& bounding_box_size, ImageModelCallback callback) = 0; // Called to stop rendering which was requested with |id|.
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_ar.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_ar.xtb index a4c0224..1c5704af 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_ar.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_ar.xtb
@@ -168,7 +168,7 @@ <translation id="6755851152783057058">التبديل إلى آخر أسلوب إدخال تم استخدامه</translation> <translation id="6760706756348334449">خفض مستوى الصوت</translation> <translation id="6941333068993625698">إرسال التعليقات</translation> -<translation id="6981982820502123353">إمكانية الوصول</translation> +<translation id="6981982820502123353">تسهيل الاستخدام</translation> <translation id="7020813747703216897">لم يتم العثور على أي نتائج مطابقة.</translation> <translation id="7025325401470358758">الجزء التالي</translation> <translation id="7076878155205969899">كتم الصوت</translation>
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb index be03d151..cd3c7da 100644 --- a/ash/strings/ash_strings_af.xtb +++ b/ash/strings/ash_strings_af.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Kom meer te wete oor die jongste <ph name="SYSTEM_APP_NAME" />-opdatering</translation> <translation id="1995660704900986789">Skakel af</translation> <translation id="1998100899771863792">Huidige lessenaar</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Tik 'n boodskap</translation> <translation id="2018630726571919839">Vertel vir my 'n grappie</translation> <translation id="2021864487439853900">Klik om te ontsluit</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Maak seker dat jou foon in die omtrek is en dat Bluetooth aangeskakel is.</translation> <translation id="4895488851634969361">Battery is vol.</translation> <translation id="490375751687810070">Vertikaal</translation> -<translation id="4905614135390995787">Die kortpad om hoëkontras-modus te wissel het verander. Gebruik <ph name="NEW_SHORTCUT" /> pleks van <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% batterykrag</translation> <translation id="4917385247580444890">Sterk</translation> <translation id="4918086044614829423">Aanvaar</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Koppel aan jou foon se warmkol, spoor jou toestel op en maak dit stil, en bekyk onlangse Chrome-oortjies wat oop is op jou foon</translation> <translation id="6670153871843998651">Lessenaar 3</translation> <translation id="6671495933530132209">Kopieer prent</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Kry inligting wat met jou keuse verband hou</translation> <translation id="6696025732084565524">Jou ontkoppelbare sleutelbord moet dringend opgedateer word</translation> <translation id="6700713906295497288">IME-kieslysknoppie</translation>
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb index d58249f..e2e554c 100644 --- a/ash/strings/ash_strings_am.xtb +++ b/ash/strings/ash_strings_am.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ስለቅርብ ጊዜው የ<ph name="SYSTEM_APP_NAME" /> ዝማኔ የበለጠ ይረዱ</translation> <translation id="1995660704900986789">ኃይል አጥፋ</translation> <translation id="1998100899771863792">የአሁኑ ዴስክ</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">መልዕክት ይተይቡ</translation> <translation id="2018630726571919839">ቀልድ ንገረኝ</translation> <translation id="2021864487439853900">ለመክፈት ጠቅ ያድርጉ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">ስልክዎ በአቅራቢያ እንዳለ፣ እና ብሉቱዝ እንደበራ ያረጋግጡ።</translation> <translation id="4895488851634969361">ባትሪው ሙሉ ነው።</translation> <translation id="490375751687810070">አቀባዊ</translation> -<translation id="4905614135390995787">ባለከፍተኛ ንፅፅር ሁነታ የሚቀይረው አቋራጭ ተለውጧል። እባክዎ በ<ph name="OLD_SHORTCUT" /> ምትክ <ph name="NEW_SHORTCUT" />ን ይጠቀሙ።</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% ባትሪ</translation> <translation id="4917385247580444890">ጠንካራ</translation> <translation id="4918086044614829423">ይቀበሉ</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">ከስልክዎ መገናኛ ነጥብ ጋር ያገናኙ፣ የመሣሪያዎ ድምጽ ይዝጉትና ያግኙት፣ እና በስልክዎ ላይ የተከፈቱ የቅርብ ጊዜ የChrome ትሮችን ይመልከቱ</translation> <translation id="6670153871843998651">ዴስክ 3</translation> <translation id="6671495933530132209">ምስል ቅዳ</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">ከእርስዎ ምርጫ ጋር የተገናኘ መረጃ ያግኙ</translation> <translation id="6696025732084565524">የእርስዎ ተነቃይ የቁልፍ ሰሌዳ ወሳኝ የሆነ ዝማኔ ያስፈልገዋል</translation> <translation id="6700713906295497288">የIME ምናሌ አዝራር</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb index dbad2ad..0d4bc65 100644 --- a/ash/strings/ash_strings_ar.xtb +++ b/ash/strings/ash_strings_ar.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">مزيد من المعلومات حول آخر تحديث لتطبيق <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">إيقاف التشغيل</translation> <translation id="1998100899771863792">سطح المكتب الحالي</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">كتابة رسالة</translation> <translation id="2018630726571919839">أريد سماع نكتة</translation> <translation id="2021864487439853900">انقر لفتح قفل الشبكة.</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">يُرجى التأكُّد من أنّ هاتفك قريب وأنّ البلوتوث مفعَّل عليه.</translation> <translation id="4895488851634969361">البطارية مملوءة.</translation> <translation id="490375751687810070">عمودي</translation> -<translation id="4905614135390995787">تم تغيير اختصار تشغيل وضع التباين العالي. يُرجى استخدام <ph name="NEW_SHORTCUT" /> بدلاً من <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">مستوى شحن البطارية: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">قوية</translation> <translation id="4918086044614829423">قبول</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">يمكنك الاتصال بنقطة الاتصال المفعّلة على الهاتف وكتم صوته وتحديد موقعه والاطّلاع على علامات تبويب Chrome المفتوحة مؤخرًا عليه.</translation> <translation id="6670153871843998651">مكتب 3</translation> <translation id="6671495933530132209">نسخ الصورة</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">الحصول على معلومات ذات صلة باختيارك</translation> <translation id="6696025732084565524">تحتاج لوحة المفاتيح القابلة للفصل إلى تحديث مهم</translation> <translation id="6700713906295497288">زر قائمة أداة تحرير أسلوب الإدخال (IME)</translation> @@ -707,7 +704,7 @@ <translation id="6961121602502368900">لا تتوفّر ميزة "كتم صوت الهاتف" على الملف الشخصي للعمل.</translation> <translation id="6965382102122355670">حسنًا</translation> <translation id="6972754398087986839">البدء</translation> -<translation id="6981982820502123353">إمكانية الوصول</translation> +<translation id="6981982820502123353">تسهيل الاستخدام</translation> <translation id="698231206551913481">سيتم حذف جميع الملفات والبيانات المحلية المرتبطة بهذا المستخدم نهائيًا بمجرد إزالة هذا المستخدم.</translation> <translation id="7007983414944123363">تعذّر التحقُّق من رقم التعريف الشخصي أو كلمة المرور الخاصّة بك. يُرجى إعادة المحاولة.</translation> <translation id="7015766095477679451">يمكنك العودة لاستخدام الجهاز في <ph name="COME_BACK_TIME" />.</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index aaf8952..02d2676 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">শেহতীয়া <ph name="SYSTEM_APP_NAME" /> আপডে’ট সম্পর্কে অধিক জানক</translation> <translation id="1995660704900986789">পাৱাৰ অফ কৰক</translation> <translation id="1998100899771863792">বৰ্তমানৰ ডেস্ক</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">বাৰ্তা এটা টাইপ কৰক</translation> <translation id="2018630726571919839">মোক এটা কৌতুক শুনাওক</translation> <translation id="2021864487439853900">আনলক কৰিবলৈ ক্লিক কৰক</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">সংজ্ঞা</translation> <translation id="3510164367642747937">মাউছৰ কাৰ্ছৰ হাইলাইট কৰক</translation> <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" />এ একাউণ্ট পৰিচালনা কৰে</translation> +<translation id="3552189655002856821">ৱাই-ফাই অফ কৰা হ’ল</translation> <translation id="3563775809269155755">হটস্পট সক্ষম কৰক</translation> <translation id="3571734092741541777">ছেট আপ কৰক</translation> <translation id="3573179567135747900">পুনৰ "<ph name="FROM_LOCALE" />"লৈ সলনি কৰক (ৰিষ্টাৰ্ট কৰাৰ প্ৰয়োজন)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">ধ্বনি ইনপুট</translation> <translation id="3900355044994618856">আপোনাৰ ছেশ্বনটো <ph name="SESSION_TIME_REMAINING" />ত অন্ত পৰিব</translation> <translation id="3901991538546252627"><ph name="NAME" />ৰ সৈতে সংযোগ কৰি থকা হৈছে</translation> +<translation id="3923494859158167397">কোনো ম'বাইলৰ নেটৱৰ্ক ছেট আপ কৰা হোৱা নাই</translation> <translation id="394485226368336402">অডিঅ’ ছেটিংসমূহ</translation> <translation id="3945319193631853098">ছেট আপ সম্পূৰ্ণ কৰিবলৈ টিপক</translation> <translation id="3945867833895287237">হটস্পটৰ সৈতে সংযোগ কৰি থকা হৈছে...</translation> @@ -378,6 +379,7 @@ <translation id="4195877955194704651">স্বয়ংক্ৰিয়ভাৱে ক্লিকৰ বুটাম</translation> <translation id="4197790712631116042">অফ আছে</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> উপলব্ধ নহয়।</translation> +<translation id="4209973997261364186">ৱাই-ফাই অন কৰা হ’ল</translation> <translation id="4212472694152630271">পিনলৈ সলনি কৰক</translation> <translation id="4215497585250573029">ভিপিএনৰ ছেটিংসমূহ</translation> <translation id="4217571870635786043">শ্ৰুতলিপি</translation> @@ -462,7 +464,6 @@ <translation id="4890408602550914571">আপোনাৰ ফ’নটো ওচৰত থকাটো আৰু ব্লুটুথ অন হৈ থকাটো নিশ্চিত কৰক।</translation> <translation id="4895488851634969361">বেটাৰী চ্চার্জ সম্পূর্ণ হৈছে।</translation> <translation id="490375751687810070">উলম্ব</translation> -<translation id="4905614135390995787">উচ্চ বৈষাদৃশ্যৰ ম’ড ট’গল কৰাৰ শ্বৰ্টকাটটো সলনি হৈছে। <ph name="OLD_SHORTCUT" />ৰ পৰিৱৰ্তে <ph name="NEW_SHORTCUT" /> ব্যৱহাৰ কৰক।</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% বেটাৰী</translation> <translation id="4917385247580444890">শক্তিশালী</translation> <translation id="4918086044614829423">গ্ৰহণ কৰক</translation> @@ -554,6 +555,7 @@ <translation id="5689633613396158040">ৰাতিৰ পোহৰে আপোনাৰ স্ক্ৰীনখনলৈ চোৱা অথবা কম পোহৰত পঢ়া সহজ কৰি তোলে। ৰাতিৰ পোহৰ কোন সময়ত অন হয় সেয়া সলনি কৰিবলৈ অথবা এইটো সম্পূর্ণকৈ অফ কৰিবলৈ টিপক।</translation> <translation id="5691772641933328258">ফিংগাৰপ্ৰিণ্ট চিনাক্ত কৰিব পৰা নগ’ল</translation> <translation id="5710450975648804523">অসুবিধা নিদিব ম’ড অন হৈ আছে</translation> +<translation id="571295407079589142">ম’বাইল ডেটা অফ কৰা হ'ল</translation> <translation id="573413375004481890">আপোনাৰ সকলো ডিছপ্লে’ এই ডিভাইচটোৱে সমৰ্থন কৰিব নোৱাৰিলে, সেয়েহে এটাৰ সংযোগ বিচ্ছিন্ন কৰা হৈছে</translation> <translation id="574392208103952083">মধ্যমীয়া</translation> <translation id="5744083938413354016">টিপি ধৰি টানি অনা সুবিধা</translation> @@ -668,7 +670,6 @@ <translation id="6667908387435388584">আপোনাৰ ফ'নৰ হ'টস্প'টৰ সৈতে সংযোগ কৰক, আপোনাৰ ডিভাইচটো নিৰৱ কৰক আৰু সেইটোৰ অৱস্থান নিৰ্ধাৰণ কৰক আৰু আপোনাৰ ফ'নত খোলা শেহতীয়া Chromeৰ টেবসমূহ চাওক</translation> <translation id="6670153871843998651">ডেস্ক ৩</translation> <translation id="6671495933530132209">প্ৰতিচ্ছবি প্ৰতিলিপি কৰক</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">আপুনি বাছনি সম্পর্কীয় তথ্য পাওক</translation> <translation id="6696025732084565524">আপোনাৰ পৃথক কৰিব পৰা কীব’ৰ্ডত এটা গুৰুত্বপূর্ণ আপডে’ট কৰাৰ প্ৰয়োজন</translation> <translation id="6700713906295497288">IME মেনু বুটাম</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index 24c1161..5c2e395 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Ən son <ph name="SYSTEM_APP_NAME" /> güncəlləməsi ilə bağlı ətraflı məlumat əldə edin</translation> <translation id="1995660704900986789">Söndürün</translation> <translation id="1998100899771863792">Cari masa</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Mesaj yazın</translation> <translation id="2018630726571919839">Gülməli əhvalat danış</translation> <translation id="2021864487439853900">Kiliddən çıxarmaq üçün toxunun</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Telefonunuzun yaxınlıqda olduğuna və Bluetooth'un aktiv olduğuna əmin olun.</translation> <translation id="4895488851634969361">Batareya doludur.</translation> <translation id="490375751687810070">Vertikal</translation> -<translation id="4905614135390995787">Yüksək Kontrast Rejiminə keçmək üçün qısayol dəyişib. <ph name="OLD_SHORTCUT" /> əvəzinə <ph name="NEW_SHORTCUT" /> istifadə edin.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% batareya</translation> <translation id="4917385247580444890">Güclü</translation> <translation id="4918086044614829423">Qəbul edin</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Telefonunuzun hotspotuna qoşulun, cihazınızı susdurun və tapın və telefonunuzda açılan son Chrome tablarına baxın</translation> <translation id="6670153871843998651">Masa 3</translation> <translation id="6671495933530132209">Şəkli kopyalayın</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Seçiminizlə bağlı məlumat əldə edin</translation> <translation id="6696025732084565524">Çıxarıla bilən klaviatura mühüm yeniləmə tələb edir</translation> <translation id="6700713906295497288">IME menyu düyməsi</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb index c884f073..1d2382d 100644 --- a/ash/strings/ash_strings_be.xtb +++ b/ash/strings/ash_strings_be.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Даведацца больш пра апошняе абнаўленне <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Выключыць</translation> <translation id="1998100899771863792">Бягучы працоўны стол</translation> -<translation id="2012624427112548395">Ctrl+Пошук+H</translation> <translation id="2016340657076538683">Напішыце паведамленне</translation> <translation id="2018630726571919839">Раскажы мне жарт</translation> <translation id="2021864487439853900">Націсніце, каб разблакіраваць</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Упэўніцеся, што тэлефон знаходзіцца паблізу і на ім уключаны Bluetooth.</translation> <translation id="4895488851634969361">Акумулятар зараджаны.</translation> <translation id="490375751687810070">Вертыкальна</translation> -<translation id="4905614135390995787">Спалучэнне клавіш для пераключэння рэжыму высокага кантрасту змянілася. Замест <ph name="OLD_SHORTCUT" /> выкарыстоўвайце <ph name="NEW_SHORTCUT" />.</translation> <translation id="490788395437447240">Зарад акумулятара: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Моцны</translation> <translation id="4918086044614829423">Прыняць</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Вы зможаце падключацца да хот-спота свайго тэлефона, выяўляць яго месцазнаходжанне, выключаць на ім гук, а таксама праглядаць адкрытыя на тэлефоне ўкладкі Chrome</translation> <translation id="6670153871843998651">Стол 3</translation> <translation id="6671495933530132209">Скапіраваць відарыс</translation> -<translation id="6691659475504239918">"Пошук"+Shift+H</translation> <translation id="6692996468359469499">Атрыманне інфармацыі, звязанай з вылучаным вамі</translation> <translation id="6696025732084565524">Патрабуецца крытычнае абнаўленне для здымнай клавіятуры</translation> <translation id="6700713906295497288">Кнопка меню рэдактара метадаў уводу</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index 62e3027c..6b5dad86 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Научете повече за най-новата актуализация на <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Изключване</translation> <translation id="1998100899771863792">Настоящ работен кът</translation> -<translation id="2012624427112548395">Ctrl + клавиш „Търсене“ + H</translation> <translation id="2016340657076538683">Въведете съобщение</translation> <translation id="2018630726571919839">Tell me a joke</translation> <translation id="2021864487439853900">Кликнете за отключване</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Уверете се, че телефонът ви е наблизо и че сте включили Bluetooth.</translation> <translation id="4895488851634969361">Батерията е пълна.</translation> <translation id="490375751687810070">Вертикално</translation> -<translation id="4905614135390995787">Клавишната комбинация за превключване на режима на висок контраст е променена. Моля, използвайте <ph name="NEW_SHORTCUT" /> вместо <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% батерия</translation> <translation id="4917385247580444890">Силен</translation> <translation id="4918086044614829423">Приемам</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Свързвайте се с точката за достъп на телефона си, заглушавайте и намирайте устройството си и преглеждайте наскоро отворените на телефона ви раздели на Chrome</translation> <translation id="6670153871843998651">Работен кът 3</translation> <translation id="6671495933530132209">Копиране на изображението</translation> -<translation id="6691659475504239918">Клавиш „Търсене“ + Shift + H</translation> <translation id="6692996468359469499">Получаване на информация, свързана с избраното от вас</translation> <translation id="6696025732084565524">Вашата отделяща се клавиатура се нуждае от критична актуализация</translation> <translation id="6700713906295497288">Бутон за меню на редактора за метод на въвеждане</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb index 7b08394..f3901500 100644 --- a/ash/strings/ash_strings_bn.xtb +++ b/ash/strings/ash_strings_bn.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">সাম্প্রতিক <ph name="SYSTEM_APP_NAME" /> আপডেট সম্পর্কে আরও জানুন</translation> <translation id="1995660704900986789">পাওয়ার বন্ধ করুন</translation> <translation id="1998100899771863792">বর্তমান ডেক্স</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">একটি মেসেজ লিখুন</translation> <translation id="2018630726571919839">একটি জোকস শোনাও</translation> <translation id="2021864487439853900">আনলক করতে ক্লিক করুন</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">সংজ্ঞা</translation> <translation id="3510164367642747937">মাউস কার্সার হাইলাইট করুন</translation> <translation id="3513798432020909783">অ্যাকাউন্টটি <ph name="MANAGER_EMAIL" /> ম্যানেজ করছেন</translation> +<translation id="3552189655002856821">ওয়াই-ফাই বন্ধ করা আছে</translation> <translation id="3563775809269155755">হটস্পট চালু করুন</translation> <translation id="3571734092741541777">সেট-আপ</translation> <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />" তে ফেরান (পুনর্সূচনা প্রয়োজন)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">ভয়েস ইনপুট</translation> <translation id="3900355044994618856">আপনার সেশনটি <ph name="SESSION_TIME_REMAINING" /> এ শেষ হবে</translation> <translation id="3901991538546252627"><ph name="NAME" />-এ সংযোগ করা হচ্ছে</translation> +<translation id="3923494859158167397">কোনও মোবাইল নেটওয়ার্ক সেট-আপ করা নেই</translation> <translation id="3943857333388298514">পেস্ট করুন</translation> <translation id="394485226368336402">অডিও সেটিংস</translation> <translation id="3945319193631853098">সেট আপ করা সম্পূর্ণ করতে ট্যাপ করুন</translation> @@ -379,6 +380,7 @@ <translation id="4195877955194704651">অটোমেটিক ক্লিক বোতাম</translation> <translation id="4197790712631116042">বন্ধ করা আছে</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> উপলভ্য নেই।</translation> +<translation id="4209973997261364186">ওয়াই-ফাই চালু করা আছে</translation> <translation id="4212472694152630271">যাচাইকরণের জন্য পিন ব্যবহার করুন</translation> <translation id="4215497585250573029">ভিপিএন সেটিংস</translation> <translation id="4217571870635786043">ডিক্টেশন</translation> @@ -463,7 +465,6 @@ <translation id="4890408602550914571">আপনার ফোন কাছাকাছি রয়েছে কিনা এবং তাতে ব্লুটুথ চালু আছে কিনা দেখে নিন।</translation> <translation id="4895488851634969361">ব্যাটারি পূর্ণ৷</translation> <translation id="490375751687810070">উল্লম্ব</translation> -<translation id="4905614135390995787">উচ্চ কনট্রাস্ট মোড টগল করার শর্টকাটটি পরিবর্তিত হয়েছে। <ph name="OLD_SHORTCUT" />-এর পরিবর্তে অনুগ্রহ করে <ph name="NEW_SHORTCUT" /> ব্যবহার করুন।</translation> <translation id="490788395437447240">ব্যাটারিতে <ph name="BATTERY_PERCENTAGE" />% চার্জ আছে</translation> <translation id="4917385247580444890">জোরালো</translation> <translation id="4918086044614829423">স্বীকার</translation> @@ -555,6 +556,7 @@ <translation id="5689633613396158040">নাইট লাইট ফিচারের জন্য স্ক্রিনের দিকে স্বচ্ছন্দে তাকানো যায় বা কম আলোতে পড়তে পারা যায়। কোন সময় নাইট লাইট ফিচারটি সম্পূর্ণভাবে চালু করা হবে বা বন্ধ করা হবে তা পরিবর্তন করতে ট্যাপ করুন।</translation> <translation id="5691772641933328258">আঙ্গুলের ছাপ শনাক্ত করা যায়নি</translation> <translation id="5710450975648804523">'বিরক্ত করবে না' মোড চালু আছে</translation> +<translation id="571295407079589142">মোবাইল ডেটা বন্ধ করা আছে</translation> <translation id="573413375004481890">এই ডিভাইসে সব ডিসপ্লে করা যাবে না তাই একটি ডিসকানেক্ট করা হয়েছে</translation> <translation id="574392208103952083">মাঝারি</translation> <translation id="5744083938413354016">ট্যাপ করে টেনে আনা</translation> @@ -669,7 +671,6 @@ <translation id="6667908387435388584">ফোনের হটস্পটের সাথে কানেক্ট করুন, ডিভাইস 'সাইলেন্ট' মোডে রাখুন ও ডিভাইসের লোকেশন জানুন এবং আপনার ফোনে খোলা সাম্প্রতিক Chrome ট্যাবগুলি দেখুন</translation> <translation id="6670153871843998651">ডেস্ক ৩</translation> <translation id="6671495933530132209">ছবি কপি করুন</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">আপনার বেছে নেওয়া প্রশ্ন সম্পর্কিত উত্তর পান</translation> <translation id="6696025732084565524">আলাদা করা যায় এমন কীবোর্ডের একটি জরুরি আপডেট প্রয়োজন</translation> <translation id="6700713906295497288">IME মেনু বোতাম</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index ad22a50c..bafd2555 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Saznajte više o najnovijem ažuriranju za aplikaciju <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Isključi</translation> <translation id="1998100899771863792">Trenutna radna površina</translation> -<translation id="2012624427112548395">Ctrl + Search + H</translation> <translation id="2016340657076538683">Napišite poruku</translation> <translation id="2018630726571919839">Ispričaj mi vic</translation> <translation id="2021864487439853900">Kliknite da otključate</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Provjerite nalazi li se telefon u blizini i je li Bluetooth uključen.</translation> <translation id="4895488851634969361">Baterija je puna.</translation> <translation id="490375751687810070">Vertikalno</translation> -<translation id="4905614135390995787">Prečica za mijenjanje načina rada u visokom kontrastu se promijenila. Koristite <ph name="NEW_SHORTCUT" /> umjesto <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% baterije</translation> <translation id="4917385247580444890">Jako</translation> <translation id="4918086044614829423">Prihvati</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Povežite se s pristupnom tačkom telefona, utišajte i pronađite svoj uređaj i pregledajte Chromeove kartice nedavno otvorene na vašem telefonu</translation> <translation id="6670153871843998651">Radna površina 3</translation> <translation id="6671495933530132209">Kopiraj sliku</translation> -<translation id="6691659475504239918">Tipka za pretraživanje + Shift + H</translation> <translation id="6692996468359469499">Primajte informacije u vezi s vašim odabirom</translation> <translation id="6696025732084565524">Vašoj odvojivoj tastaturi je potrebno važno ažuriranje</translation> <translation id="6700713906295497288">IME dugme menija</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb index f34deef..f96ff44 100644 --- a/ash/strings/ash_strings_ca.xtb +++ b/ash/strings/ash_strings_ca.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Obtén més informació sobre l'última actualització de: <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Apaga</translation> <translation id="1998100899771863792">Escriptori actual</translation> -<translation id="2012624427112548395">Ctrl+Cerca+H</translation> <translation id="2016340657076538683">Escriu un missatge</translation> <translation id="2018630726571919839">Explica'm un acudit</translation> <translation id="2021864487439853900">Fes clic per desbloquejar</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Comprova que el telèfon sigui a prop teu i que tingui el Bluetooth activat.</translation> <translation id="4895488851634969361">La bateria està carregada.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">La drecera per activar/desactivar el mode d'alt contrast ha canviat. A partir d'ara, utilitza <ph name="NEW_SHORTCUT" /> en lloc de la drecera <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% de bateria</translation> <translation id="4917385247580444890">Forta</translation> <translation id="4918086044614829423">Accepta</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Connecta't al punt d'accés Wi-Fi del telèfon, silencia i localitza el dispositiu i consulta les pestanyes de Chrome obertes recentment al telèfon</translation> <translation id="6670153871843998651">Escriptori 3</translation> <translation id="6671495933530132209">Copia la imatge</translation> -<translation id="6691659475504239918">Cerca+Maj+H</translation> <translation id="6692996468359469499">Obtén informació relacionada amb la teva selecció</translation> <translation id="6696025732084565524">El teclat extraïble necessita una actualització molt important</translation> <translation id="6700713906295497288">Botó del menú d'IME</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb index 91b94c0b..a6c5bc19 100644 --- a/ash/strings/ash_strings_cs.xtb +++ b/ash/strings/ash_strings_cs.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Další informace o nejnovější aktualizaci systému <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Vypnout</translation> <translation id="1998100899771863792">Aktuální plocha</translation> -<translation id="2012624427112548395">Ctrl+Hledat+H</translation> <translation id="2016340657076538683">Zadejte zprávu</translation> <translation id="2018630726571919839">Řekni mi vtip</translation> <translation id="2021864487439853900">Odemknete kliknutím</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Zkontrolujte, zda je telefon poblíž a je na něm zapnuté rozhraní Bluetooth.</translation> <translation id="4895488851634969361">Baterie je plně nabita.</translation> <translation id="490375751687810070">Na výšku</translation> -<translation id="4905614135390995787">Zkratka k přepínání režimu vysokého kontrastu se změnila. Namísto zkratky <ph name="OLD_SHORTCUT" /> používejte zkratku <ph name="NEW_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % baterie</translation> <translation id="4917385247580444890">Silný</translation> <translation id="4918086044614829423">Přijmout</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Připojení k hotspotu telefonu, ztlumení a nalezení zařízení a zobrazení karet Chromu nedávno otevřených v telefonu</translation> <translation id="6670153871843998651">Plocha 3</translation> <translation id="6671495933530132209">Zkopírovat obrázek</translation> -<translation id="6691659475504239918">Hledat+Shift+H</translation> <translation id="6692996468359469499">Získejte informace týkající se vybraného obsahu</translation> <translation id="6696025732084565524">Odpojitelná klávesnice vyžaduje kritickou aktualizaci</translation> <translation id="6700713906295497288">Tlačítko nabídky IME</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index 492f11c..1aa2b2e 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Få flere oplysninger om den nyeste <ph name="SYSTEM_APP_NAME" />-opdatering</translation> <translation id="1995660704900986789">Sluk</translation> <translation id="1998100899771863792">Aktuelt skrivebord</translation> -<translation id="2012624427112548395">Ctrl+Søg+H</translation> <translation id="2016340657076538683">Skriv en besked</translation> <translation id="2018630726571919839">Fortæl en vittighed</translation> <translation id="2021864487439853900">Klik for at låse op</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Sørg for, at din telefon er i nærheden, og at Bluetooth er aktiveret.</translation> <translation id="4895488851634969361">Batteriet er helt opladet.</translation> <translation id="490375751687810070">Lodret</translation> -<translation id="4905614135390995787">Genvejen til at aktivere eller deaktivere tilstanden Høj kontrast er ændret. Brug <ph name="NEW_SHORTCUT" /> i stedet for <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % batteri</translation> <translation id="4917385247580444890">Stærk</translation> <translation id="4918086044614829423">Accepter</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Opret forbindelse til din telefons hotspot, sæt din telefon på lydløs, eller find den, og se dine seneste Chrome-faner på din telefon</translation> <translation id="6670153871843998651">Skrivebord 3</translation> <translation id="6671495933530132209">Kopiér billede</translation> -<translation id="6691659475504239918">Søg+Shift+H</translation> <translation id="6692996468359469499">Få oplysninger om det, du har markeret</translation> <translation id="6696025732084565524">Dit aftagelige tastatur kræver en vigtig opdatering</translation> <translation id="6700713906295497288">IME-menuknap</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index cfee0ad..a9bb621 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Weitere Informationen zum aktuellen <ph name="SYSTEM_APP_NAME" />-Update</translation> <translation id="1995660704900986789">Ausschalten</translation> <translation id="1998100899771863792">Aktueller Desktop</translation> -<translation id="2012624427112548395">Strg + Suche + H</translation> <translation id="2016340657076538683">Nachricht eingeben</translation> <translation id="2018630726571919839">Erzähl mir einen Witz</translation> <translation id="2021864487439853900">Zum Entsperren klicken</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Achten Sie darauf, dass sich Ihr Smartphone in der Nähe befindet und Bluetooth aktiviert ist.</translation> <translation id="4895488851634969361">Akku ist vollständig geladen.</translation> <translation id="490375751687810070">Vertikal</translation> -<translation id="4905614135390995787">Die Tastenkombination zum Deaktivieren des Modus mit hohem Kontrast hat sich geändert. Bitte drücken Sie <ph name="NEW_SHORTCUT" /> statt <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Akku: <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="4917385247580444890">Stark</translation> <translation id="4918086044614829423">Annehmen</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">In Phone Hub können Sie sich mit dem Hotspot Ihres Smartphones verbinden, Ihr Gerät stummschalten und suchen und kürzlich auf Ihrem Smartphone geöffnete Chrome-Tabs aufrufen</translation> <translation id="6670153871843998651">Desktop 3</translation> <translation id="6671495933530132209">Bild kopieren</translation> -<translation id="6691659475504239918">Suche + Umschalttaste + H</translation> <translation id="6692996468359469499">Informationen zu Ihrer Auswahl erhalten</translation> <translation id="6696025732084565524">Wichtiges Update für Ihre abnehmbare Tastatur</translation> <translation id="6700713906295497288">IME-Menüschaltfläche</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb index 77aeb32..d1dc285 100644 --- a/ash/strings/ash_strings_el.xtb +++ b/ash/strings/ash_strings_el.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Μάθετε περισσότερα σχετικά με την πιο πρόσφατη ενημέρωση της εφαρμογής <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Απενεργοποίηση</translation> <translation id="1998100899771863792">Τρέχον γραφείο</translation> -<translation id="2012624427112548395">Ctrl+Πλήκτρο αναζήτησης+H</translation> <translation id="2016340657076538683">Πληκτρολογήστε ένα μήνυμα</translation> <translation id="2018630726571919839">Πες μου ένα ανέκδοτο</translation> <translation id="2021864487439853900">Κάντε κλικ για ξεκλείδωμα</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Βεβαιωθείτε ότι το τηλέφωνο βρίσκεται κοντά σας και ότι το Bluetooth είναι ενεργοποιημένο.</translation> <translation id="4895488851634969361">Η μπαταρία είναι πλήρης.</translation> <translation id="490375751687810070">Κατακόρυφη περιστροφή</translation> -<translation id="4905614135390995787">Η συντόμευση για την εναλλαγή της Λειτουργίας υψηλής αντίθεσης άλλαξε. Χρησιμοποιήστε τη συντόμευση <ph name="NEW_SHORTCUT" /> αντί για τη συντόμευση <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Μπαταρία <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Ισχυρό</translation> <translation id="4918086044614829423">Αποδοχή</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Συνδεθείτε στο σημείο πρόσβασης Wi-Fi του τηλεφώνου σας, θέστε σε σίγαση και εντοπίστε τη συσκευή σας και δείτε τις πρόσφατες καρτέλες Chrome που είναι ανοικτές στο τηλέφωνό σας.</translation> <translation id="6670153871843998651">Γραφείο 3</translation> <translation id="6671495933530132209">Αντιγραφή εικόνας</translation> -<translation id="6691659475504239918">Πλήκτρο αναζήτησης+Shift+H</translation> <translation id="6692996468359469499">Λάβετε πληροφορίες σχετικά με την επιλογή σας.</translation> <translation id="6696025732084565524">Απαιτείται σημαντική ενημέρωση του αποσπώμενου πληκτρολογίου σας</translation> <translation id="6700713906295497288">Κουμπί μενού IME</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index 834f4dbe..dc82943 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Learn more about the latest <ph name="SYSTEM_APP_NAME" /> update</translation> <translation id="1995660704900986789">Power off</translation> <translation id="1998100899771863792">Current desk</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Type a message</translation> <translation id="2018630726571919839">Tell me a joke</translation> <translation id="2021864487439853900">Click to unlock</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Make sure that your phone is nearby and has Bluetooth turned on.</translation> <translation id="4895488851634969361">Battery is full.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">The shortcut to toggle high contrast mode has changed. Please use <ph name="NEW_SHORTCUT" /> instead of <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% battery</translation> <translation id="4917385247580444890">Strong</translation> <translation id="4918086044614829423">Accept</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Connect to your phone’s hotspot, silence and locate your device, and view recent Chrome tabs open on your phone</translation> <translation id="6670153871843998651">Desk 3</translation> <translation id="6671495933530132209">Copy image</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Get info related to your selection</translation> <translation id="6696025732084565524">Your detachable keyboard needs a critical update</translation> <translation id="6700713906295497288">IME menu button</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index c9c49be0..f3bf30e 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Más información sobre la actualización más reciente de <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Apagar</translation> <translation id="1998100899771863792">Escritorio actual</translation> -<translation id="2012624427112548395">Ctrl+Buscar+H</translation> <translation id="2016340657076538683">Escribe un mensaje</translation> <translation id="2018630726571919839">Cuéntame un chiste</translation> <translation id="2021864487439853900">Haz clic para desbloquear.</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Asegúrate de que el teléfono esté cerca y tenga la conexión Bluetooth activada.</translation> <translation id="4895488851634969361">La batería está completa.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">Se cambió el acceso directo para activar o desactivar el Modo de contraste alto. Usa <ph name="NEW_SHORTCUT" /> en lugar de <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Batería: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Fuerte</translation> <translation id="4918086044614829423">Aceptar</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Conéctate al hotspot de tu teléfono, silencia y ubica tu dispositivo, y visualiza las pestañas recientes de Chrome que tengas abiertas en tu teléfono.</translation> <translation id="6670153871843998651">Escritorio 3</translation> <translation id="6671495933530132209">Copiar imagen</translation> -<translation id="6691659475504239918">Buscar+mayúscula+H</translation> <translation id="6692996468359469499">Obtén información relacionada con tu selección</translation> <translation id="6696025732084565524">Tu teclado desmontable necesita una actualización muy importante</translation> <translation id="6700713906295497288">Botón de menú IME</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index e1d47c2..13ec9c35 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Consulta más información sobre la última actualización de <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Apagar</translation> <translation id="1998100899771863792">Escritorio actual</translation> -<translation id="2012624427112548395">Ctrl + Tecla de búsqueda + H</translation> <translation id="2016340657076538683">Escribe un mensaje</translation> <translation id="2018630726571919839">Cuéntame un chiste</translation> <translation id="2021864487439853900">Haz clic para desbloquear</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Comprueba que tengas el teléfono cerca y que el Bluetooth esté activado.</translation> <translation id="4895488851634969361">La batería está llena.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">La combinación de teclas para activar el modo de contraste alto ha cambiado. Utiliza <ph name="NEW_SHORTCUT" /> en lugar de <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % de batería</translation> <translation id="4917385247580444890">Buena</translation> <translation id="4918086044614829423">Aceptar</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Conéctate al punto de acceso de tu teléfono, silencia y localiza tu dispositivo, y visualiza las pestañas de Chrome recientes abiertas en tu teléfono</translation> <translation id="6670153871843998651">Escritorio 3</translation> <translation id="6671495933530132209">Copiar imagen</translation> -<translation id="6691659475504239918">Tecla de búsqueda + Mayús + H</translation> <translation id="6692996468359469499">Obtener información sobre tu selección</translation> <translation id="6696025732084565524">Tu teclado independiente necesita una actualización crítica</translation> <translation id="6700713906295497288">Botón de menú de IME</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb index a74223a..86d98a8 100644 --- a/ash/strings/ash_strings_et.xtb +++ b/ash/strings/ash_strings_et.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Vaadake lisateavet operatsioonisüsteemi <ph name="SYSTEM_APP_NAME" /> uusima värskenduse kohta</translation> <translation id="1995660704900986789">Lülita välja</translation> <translation id="1998100899771863792">Praegune töölaud</translation> -<translation id="2012624427112548395">Ctrl + otsinguklahv + H</translation> <translation id="2016340657076538683">Sisestage sõnum</translation> <translation id="2018630726571919839">Räägi mõni nali</translation> <translation id="2021864487439853900">Klõpsake avamiseks</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Veenduge, et teie telefon oleks läheduses ja Bluetooth oleks sisse lülitatud.</translation> <translation id="4895488851634969361">Aku on täis.</translation> <translation id="490375751687810070">Vertikaalne</translation> -<translation id="4905614135390995787">Suure kontrastsusega režiimi aktiveerimise otsetee on muutunud. Kasutage edaspidi otseteed <ph name="NEW_SHORTCUT" />, mitte <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% akut</translation> <translation id="4917385247580444890">Tugev</translation> <translation id="4918086044614829423">Nõustu</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Ühendage oma telefoni kuumkoht, vaigistage oma seade ja määrake selle asukoht ning vaadake telefonis hiljuti avatud Chrome'i vahelehti</translation> <translation id="6670153871843998651">Töölaud 3</translation> <translation id="6671495933530132209">Kopeeri kujutis</translation> -<translation id="6691659475504239918">Otsinguklahv + tõstuklahv + H</translation> <translation id="6692996468359469499">Hankige oma valiku kohta teavet</translation> <translation id="6696025732084565524">Eemaldatav klaviatuur vajab kriitilist värskendust</translation> <translation id="6700713906295497288">IME menüünupp</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb index 1cb553b8..5113e7b 100644 --- a/ash/strings/ash_strings_eu.xtb +++ b/ash/strings/ash_strings_eu.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Lortu informazio gehiago <ph name="SYSTEM_APP_NAME" /> aplikazioaren azken eguneratzeari buruz</translation> <translation id="1995660704900986789">Itzali</translation> <translation id="1998100899771863792">Oraingo lan-eremua</translation> -<translation id="2012624427112548395">Ktrl + Bilatu + H</translation> <translation id="2016340657076538683">Idatzi mezu bat</translation> <translation id="2018630726571919839">Kontatu txiste bat</translation> <translation id="2021864487439853900">Desblokeatzeko, sakatu</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Ziurtatu telefonoa hurbil dagoela eta Bluetooth-a aktibatuta daukala.</translation> <translation id="4895488851634969361">Bateria beteta dago.</translation> <translation id="490375751687810070">Bertikala</translation> -<translation id="4905614135390995787">Aldatu egin da kontraste handiko modua aktibatzeko eta desaktibatzeko lasterbidea. Hemendik aurrera, erabili <ph name="NEW_SHORTCUT" />, eta ez <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Bateria: % <ph name="BATTERY_PERCENTAGE" /></translation> <translation id="4917385247580444890">Sendoa</translation> <translation id="4918086044614829423">Onartu</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Konektatu telefonoaren wifi-gunera, desaktibatu gailuaren audioa, aurkitu gailua eta ikusi bertan Chrome-n ireki dituzu azken fitxak</translation> <translation id="6670153871843998651">3. lan-eremua</translation> <translation id="6671495933530132209">Kopiatu irudia</translation> -<translation id="6691659475504239918">Bilatu + Maius + H</translation> <translation id="6692996468359469499">Lortu hautatutakoari buruzko informazioa</translation> <translation id="6696025732084565524">Bereiz daitekeen teklatuak ezinbesteko eguneratze bat behar du</translation> <translation id="6700713906295497288">IME menu-botoia</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index 7e84924..794362a5 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">درباره جدیدترین بهروزرسانی <ph name="SYSTEM_APP_NAME" /> بیشتر بدانید.</translation> <translation id="1995660704900986789">خاموش کردن</translation> <translation id="1998100899771863792">میزکار کنونی</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">پیامی تایپ کنید</translation> <translation id="2018630726571919839">Tell me a joke (لطیفهای بگو)</translation> <translation id="2021864487439853900">قفلگشایی با کلیک کردن</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">مطمئن شوید تلفنتان در همین اطراف باشد و بلوتوث آن روشن باشد.</translation> <translation id="4895488851634969361">باتری پر است.</translation> <translation id="490375751687810070">عمودی</translation> -<translation id="4905614135390995787">میانبر روشن/خاموش کردن «حالت تضاد بالا» تغییر کرده است. لطفاً بهجای <ph name="OLD_SHORTCUT" /> از <ph name="NEW_SHORTCUT" /> استفاده کنید.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />٪ باتری</translation> <translation id="4917385247580444890">قوی</translation> <translation id="4918086044614829423">میپذیرم</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">به نقطه اتصال تلفنتان وصل شوید، دستگاهتان را بیصدا و موقعیتیابی کنید، و برگههای اخیر Chrome را که در تلفنتان باز هستند مشاهده کنید</translation> <translation id="6670153871843998651">میز ۳</translation> <translation id="6671495933530132209">کپی تصویر</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">دریافت اطلاعاتی که با انتخابتان مرتبط است</translation> <translation id="6696025732084565524">لازم است صفحهکلید قابل جدا شدن بهروزرسانی ضروری شود</translation> <translation id="6700713906295497288">دکمه منو IME</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb index 0fa52b5e..c4344d9f 100644 --- a/ash/strings/ash_strings_fi.xtb +++ b/ash/strings/ash_strings_fi.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Lue lisää uusimmasta <ph name="SYSTEM_APP_NAME" /> ‑päivityksestä.</translation> <translation id="1995660704900986789">Virta pois</translation> <translation id="1998100899771863792">Nykyinen työpöytä</translation> -<translation id="2012624427112548395">Ctrl + haku + H</translation> <translation id="2016340657076538683">Kirjoita viesti</translation> <translation id="2018630726571919839">Kerro vitsi</translation> <translation id="2021864487439853900">Klikkaa avataksesi lukituksen</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Varmista, että puhelin on lähellä ja sen Bluetooth on päällä.</translation> <translation id="4895488851634969361">Akku on täynnä.</translation> <translation id="490375751687810070">Pystysuora</translation> -<translation id="4905614135390995787">Suuren kontrastin tilan pikanäppäin on muuttunut. Käytä uutta pikanäppäintä <ph name="NEW_SHORTCUT" /> vanhan (<ph name="OLD_SHORTCUT" />) sijaan.</translation> <translation id="490788395437447240">Akku: <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="4917385247580444890">Vahva</translation> <translation id="4918086044614829423">Hyväksy</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Yhdistä puhelimesi hotspotiin, hiljennä ja paikanna laitteesi sekä katso viimeaikaiset Chrome-välilehdet, jotka ovat avoinna puhelimellasi</translation> <translation id="6670153871843998651">Pöytä 3</translation> <translation id="6671495933530132209">Kopioi kuva</translation> -<translation id="6691659475504239918">Haku + vaihto + H</translation> <translation id="6692996468359469499">Tietoja valinnastasi</translation> <translation id="6696025732084565524">Irrotettavaan näppäimistöösi täytyy asentaa kriittinen päivitys</translation> <translation id="6700713906295497288">IME-valikkopainike</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index 53918e5..f7712079 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Matuto pa tungkol sa pinakabagong update sa <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">I-off</translation> <translation id="1998100899771863792">Kasalukuyang desk</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Mag-type ng mensahe</translation> <translation id="2018630726571919839">Pahingi ng joke</translation> <translation id="2021864487439853900">I-click para i-unlock</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Tiyaking nasa malapit ang iyong telepono at naka-on ang Bluetooth nito.</translation> <translation id="4895488851634969361">Puno na ang baterya.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">Nagbago ang shortcut upang i-toggle ang High Contrast Mode. Pakigamit ang <ph name="NEW_SHORTCUT" /> sa halip na <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% ang baterya</translation> <translation id="4917385247580444890">Malakas</translation> <translation id="4918086044614829423">Tanggapin</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Kumonekta sa hotspot ng iyong telepono, i-silent at hanapin ang device mo, at tingnan ang mga kamakailang tab ng Chrome na nakabukas sa iyong telepono</translation> <translation id="6670153871843998651">Desk 3</translation> <translation id="6671495933530132209">Kopyahin ang larawan</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Kumuha ng impormasyon kaugnay ng iyong pinili</translation> <translation id="6696025732084565524">Nangangailangan ng mahalagang update ang iyong naaalis na keyboard</translation> <translation id="6700713906295497288">Button ng menu ng IME</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index e21ff0b..e515e99 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">En savoir plus sur la dernière mise à jour de <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Éteindre</translation> <translation id="1998100899771863792">Bureau actuel</translation> -<translation id="2012624427112548395">Ctrl+Recherche+H</translation> <translation id="2016340657076538683">Rédiger un message</translation> <translation id="2018630726571919839">Raconte-moi une blague</translation> <translation id="2021864487439853900">Cliquez pour le déverrouiller</translation> @@ -465,7 +464,6 @@ <translation id="4890408602550914571">Assurez-vous que votre téléphone est à proximité et que le Bluetooth est activé.</translation> <translation id="4895488851634969361">La batterie est pleinement chargée.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">Le raccourci qui permet d'activer/de désactiver le mode de contraste élevé a changé. Veuillez utiliser <ph name="NEW_SHORTCUT" /> à la place de <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Pile chargée à <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="4917385247580444890">Fort</translation> <translation id="4918086044614829423">Accepter</translation> @@ -672,7 +670,6 @@ <translation id="6667908387435388584">Connectez-vous au point d'accès de votre téléphone, mettez votre appareil en mode silencieux, localisez-le et consultez les onglets récents ouverts dans Chrome sur votre téléphone</translation> <translation id="6670153871843998651">Bureau 3</translation> <translation id="6671495933530132209">Copier l'image</translation> -<translation id="6691659475504239918">Recherche+Maj+H</translation> <translation id="6692996468359469499">Obtenir de l'information sur votre sélection</translation> <translation id="6696025732084565524">Votre clavier amovible nécessite une mise à jour critique</translation> <translation id="6700713906295497288">Bouton de menu IME</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index 52952ef..2e42dbcc 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">En savoir plus sur la dernière mise à jour <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Éteindre</translation> <translation id="1998100899771863792">Bureau actuel</translation> -<translation id="2012624427112548395">Ctrl+Recherche+H</translation> <translation id="2016340657076538683">Saisissez un message</translation> <translation id="2018630726571919839">Raconte-moi une blague</translation> <translation id="2021864487439853900">Cliquez pour le déverrouiller</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Vérifiez que votre téléphone est à proximité et que le Bluetooth est activé.</translation> <translation id="4895488851634969361">La batterie est pleine.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">Le raccourci permettant d'activer ou de désactiver le mode Contraste élevé a été modifié. Veuillez utiliser "<ph name="NEW_SHORTCUT" />" au lieu de "<ph name="OLD_SHORTCUT" />".</translation> <translation id="490788395437447240">Niveau de la batterie : <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="4917385247580444890">Très bon</translation> <translation id="4918086044614829423">Accepter</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Connectez-vous au point d'accès de votre téléphone, faites passer votre appareil en mode silencieux ou localisez-le, et affichez les onglets Chrome ouverts récemment sur votre téléphone</translation> <translation id="6670153871843998651">Bureau 3</translation> <translation id="6671495933530132209">Copier l'image</translation> -<translation id="6691659475504239918">Recherche+Maj+H</translation> <translation id="6692996468359469499">Obtenir des informations sur votre sélection</translation> <translation id="6696025732084565524">Votre clavier amovible nécessite une mise à jour critique</translation> <translation id="6700713906295497288">Bouton de menu IME</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index f381c1d..d9e0d2e 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Máis información sobre a última actualización de <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Apagar</translation> <translation id="1998100899771863792">Este escritorio</translation> -<translation id="2012624427112548395">Ctrl+Buscar+H</translation> <translation id="2016340657076538683">Escribe unha mensaxe</translation> <translation id="2018630726571919839">Cóntame un chiste</translation> <translation id="2021864487439853900">Para desbloqueala, fai clic</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Asegúrate de ter o teléfono preto e co Bluetooth activado.</translation> <translation id="4895488851634969361">A batería está completamente cargada.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">Cambiou o atallo para alternar o modo de alto contraste. Utiliza <ph name="NEW_SHORTCUT" /> en lugar de <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % de batería</translation> <translation id="4917385247580444890">Forte</translation> <translation id="4918086044614829423">Aceptar</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Conéctate á zona wifi do teléfono, silencia e localiza o teu dispositivo, e accede ás pestanas de Chrome que se abriron recentemente no teu teléfono</translation> <translation id="6670153871843998651">Escritorio 3</translation> <translation id="6671495933530132209">Copiar imaxe</translation> -<translation id="6691659475504239918">Buscar+Maiúsculas+H</translation> <translation id="6692996468359469499">Consultar a información relacionada coa túa selección</translation> <translation id="6696025732084565524">É necesario instalar unha actualización esencial do teclado extraíble</translation> <translation id="6700713906295497288">Botón de menú de IME</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index bf60bef..edc28ff 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">નવીનતમ <ph name="SYSTEM_APP_NAME" /> અપડેટ વિશે વધુ જાણો</translation> <translation id="1995660704900986789">પાવર બંધ કરો</translation> <translation id="1998100899771863792">વર્તમાન ડેસ્ક</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">એક સંદેશ લખો</translation> <translation id="2018630726571919839">મને કોઈ જોક સંભળાવો</translation> <translation id="2021864487439853900">અનલૉક કરવા માટે ક્લિક કરો</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">વિવરણ</translation> <translation id="3510164367642747937">માઉસ કર્સરને હાઇલાઇટ કરો</translation> <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> દ્વારા મેનેજ કરાતું એકાઉન્ટ</translation> +<translation id="3552189655002856821">વાઇ-ફાઇ બંધ છે</translation> <translation id="3563775809269155755">હૉટસ્પૉટ ચાલુ કરો</translation> <translation id="3571734092741541777">સેટ અપ</translation> <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />" પર પાછા જાઓ (ફરી શરૂ કરવું જરૂરી છે)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">વૉઇસ ઇનપુટ</translation> <translation id="3900355044994618856">તમારું સત્ર <ph name="SESSION_TIME_REMAINING" />માં સમાપ્ત થશે</translation> <translation id="3901991538546252627"><ph name="NAME" /> થી કનેક્ટ કરી રહ્યું છે</translation> +<translation id="3923494859158167397">કોઈ મોબાઇલ નેટવર્ક સેટઅપ કરેલા નથી</translation> <translation id="3943857333388298514">પેસ્ટ કરો</translation> <translation id="394485226368336402">ઑડિઓ સેટિંગ્સ</translation> <translation id="3945319193631853098">સેટઅપ કરવાનું પૂર્ણ કરવા માટે ટૅપ કરો</translation> @@ -379,6 +380,7 @@ <translation id="4195877955194704651">ઑટોમૅટિક ક્લિક બટન</translation> <translation id="4197790712631116042">બંધ</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> ઉપલબ્ધ નથી.</translation> +<translation id="4209973997261364186">વાઇ-ફાઇ ચાલુ છે</translation> <translation id="4212472694152630271">પિન પર સ્વિચ કરો</translation> <translation id="4215497585250573029">VPN સેટિંગ</translation> <translation id="4217571870635786043">ડિક્ટેશન</translation> @@ -463,7 +465,6 @@ <translation id="4890408602550914571">ખાતરી કરો કે તમારો ફોન નજીકમાં હોય અને બ્લૂટૂથ ચાલુ કરેલું હોય.</translation> <translation id="4895488851634969361">બેટરી સંપૂર્ણ છે.</translation> <translation id="490375751687810070">વર્ટિકલ</translation> -<translation id="4905614135390995787">હાઇ કોન્ટ્રાસ્ટ મોડને ટૉગલ કરવાનો શૉર્ટકટ બદલાઇ ગયો છો. <ph name="OLD_SHORTCUT" />ને બદલે કૃપા કરીને <ph name="NEW_SHORTCUT" />નો ઉપયોગ કરો.</translation> <translation id="490788395437447240">બૅટરી <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">સશક્ત</translation> <translation id="4918086044614829423">સ્વીકારો</translation> @@ -555,6 +556,7 @@ <translation id="5689633613396158040">રાત્રિ પ્રકાશથી તમે સરળતાથી તમારી સ્ક્રીનને જોઈ શકો છો અથવા ઓછા પ્રકાશમાં વાંચી શકો છો. રાત્રિ પ્રકાશ ચાલુ થવાનો સમય બદલવા અથવા તેને સંપૂર્ણપણે બંધ કરવા ટૅપ કરો.</translation> <translation id="5691772641933328258">ફિંગરપ્રિન્ટ ઓળખી શકાઈ નથી</translation> <translation id="5710450975648804523">ખલેલ પાડશો નહીં ચાલુ છે</translation> +<translation id="571295407079589142">મોબાઇલ ડેટા બંધ છે</translation> <translation id="573413375004481890">આ ડિવાઇસ તમારા બધા ડિસ્પ્લેને સપોર્ટ કરી શક્યું નથી, તેથી એકને ડિસ્કનેક્ટ કરવામાં આવ્યું છે</translation> <translation id="574392208103952083">મધ્યમ</translation> <translation id="5744083938413354016">ખેંચવાને ટૅપ કરો</translation> @@ -669,7 +671,6 @@ <translation id="6667908387435388584">ફોન હબને તમારા ફોનના હૉટસ્પૉટથી કનેક્ટ કરો, સાઇલન્ટ કરો અને તમારું ડિવાઇસ શોધો તેમજ તમારા ફોનમાં ખોલવામાં આવેલી તાજેતરની Chrome ટૅબ જુઓ</translation> <translation id="6670153871843998651">ડેસ્ક 3</translation> <translation id="6671495933530132209">છબી કૉપિ કરો</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">તમારી પસંદગી સંબંધિત માહિતી મેળવો</translation> <translation id="6696025732084565524">અલગ પાડી શકાય તેવા તમારા કીબોર્ડ માટે મહત્ત્વપૂર્ણ અપડેટ જરૂરી છે</translation> <translation id="6700713906295497288">IME મેનૂ બટન</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index 2a62c73c..4ebbe80 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> के नए अपडेट के बारे में ज़्यादा जानें</translation> <translation id="1995660704900986789">पावर बंद करें</translation> <translation id="1998100899771863792">मौजूदा डेस्क</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">कोई मैसेज लिखें</translation> <translation id="2018630726571919839">मुझे कोई चुटकुला सुनाओ</translation> <translation id="2021864487439853900">क्लिक करके अनलॉक करें</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">पक्का करें कि आपका फ़ोन आस-पास हो और उस पर ब्लूटूथ चालू हो.</translation> <translation id="4895488851634969361">बैटरी भरी हुई है.</translation> <translation id="490375751687810070">वर्टिकल व्यू</translation> -<translation id="4905614135390995787">उच्च कंट्रास्ट मोड को टॉगल करने का शॉर्टकट बदल गया है. कृपया<ph name="OLD_SHORTCUT" /> के बजाय <ph name="NEW_SHORTCUT" /> का उपयोग करें.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% बैटरी</translation> <translation id="4917385247580444890">मज़बूत</translation> <translation id="4918086044614829423">स्वीकार करें</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">फ़ोन हब को अपने फ़ोन के हॉटस्पॉट से कनेक्ट करें, अपने डिवाइस की आवाज़ बंद करें और जगह की जानकारी का पता लगाने वाली सेटिंग चालू करें. साथ ही, अपने फ़ोन पर हाल ही में खोले गए Chrome टैब देखें</translation> <translation id="6670153871843998651">डेस्क 3</translation> <translation id="6671495933530132209">चित्र की कॉपी बनाएं</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">चुनी हुई सामग्री से जुड़ी जानकारी पाएं</translation> <translation id="6696025732084565524">आपके अलग किए जाने लायक कीबोर्ड में एक महत्वपूर्ण अपडेट ज़रूरी है</translation> <translation id="6700713906295497288">IME मेन्यू बटन</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb index ff7ce5e..d2ddc1bb 100644 --- a/ash/strings/ash_strings_hr.xtb +++ b/ash/strings/ash_strings_hr.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Saznajte više o najnovijem ažuriranju za <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Isključi</translation> <translation id="1998100899771863792">Trenutačna radna površina</translation> -<translation id="2012624427112548395">Ctrl + Search + H</translation> <translation id="2016340657076538683">Unesite poruku</translation> <translation id="2018630726571919839">Ispričaj mi vic</translation> <translation id="2021864487439853900">Kliknite da biste otključali</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Provjerite je li telefon u blizini i je li na njemu uključen Bluetooth.</translation> <translation id="4895488851634969361">Baterija je puna.</translation> <translation id="490375751687810070">Okomito</translation> -<translation id="4905614135390995787">Promijenio se prečac za uključivanje i isključivanje načina visokog kontrasta. Upotrebljavajte <ph name="NEW_SHORTCUT" /> umjesto <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% baterije</translation> <translation id="4917385247580444890">Jak</translation> <translation id="4918086044614829423">Prihvati</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Spojite se na žarišnu točku telefona, utišajte i locirajte uređaj i pregledajte nedavne kartice u Chromeu otvorene na telefonu</translation> <translation id="6670153871843998651">Radna površina 3</translation> <translation id="6671495933530132209">Kopiraj sliku</translation> -<translation id="6691659475504239918">Search + Shift + H</translation> <translation id="6692996468359469499">Dohvaćanje informacija povezanih s vašim odabirom</translation> <translation id="6696025732084565524">Potrebno je preuzeti važno ažuriranje za vašu odvojivu tipkovnicu</translation> <translation id="6700713906295497288">Gumb izbornika IME-a</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb index a6e24dc..b56632d 100644 --- a/ash/strings/ash_strings_hu.xtb +++ b/ash/strings/ash_strings_hu.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">További információ a legújabb <ph name="SYSTEM_APP_NAME" />-frissítésről</translation> <translation id="1995660704900986789">Kikapcsolás</translation> <translation id="1998100899771863792">Jelenlegi asztal</translation> -<translation id="2012624427112548395">Ctrl+Keresés+H</translation> <translation id="2016340657076538683">Írja be az üzenetet</translation> <translation id="2018630726571919839">Mondj egy viccet</translation> <translation id="2021864487439853900">Kattintson a feloldáshoz</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Gondoskodjon arról, hogy telefonja a közelben legyen, bekapcsolt Bluetooth funkcióval.</translation> <translation id="4895488851634969361">Az akkumulátor feltöltve.</translation> <translation id="490375751687810070">Függőleges</translation> -<translation id="4905614135390995787">Módosult a nagy kontrasztú mód billentyűparancsa. Használja a(z) <ph name="NEW_SHORTCUT" /> billentyűparancsot a(z) <ph name="OLD_SHORTCUT" /> helyett.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />%-os töltöttség</translation> <translation id="4917385247580444890">Erős</translation> <translation id="4918086044614829423">Elfogadás</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Csatlakozhat telefonja hotspotjára, lenémíthatja eszközét, illetve meghatározhatja a helyzetét, valamint megtekintheti a telefonján nemrég megnyitott Chrome-lapokat</translation> <translation id="6670153871843998651">3. asztal</translation> <translation id="6671495933530132209">Kép másolása</translation> -<translation id="6691659475504239918">Keresés+Shift+H</translation> <translation id="6692996468359469499">Információk kérése a kiválasztott elemmel kapcsolatban</translation> <translation id="6696025732084565524">Szükség van a leválasztható billentyűzet kritikus frissítésének telepítésére</translation> <translation id="6700713906295497288">IME-menü gomb</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb index faf3947..158f4ef4 100644 --- a/ash/strings/ash_strings_hy.xtb +++ b/ash/strings/ash_strings_hy.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Իմացեք ավելին <ph name="SYSTEM_APP_NAME" /> հավելվածի վերջին թարմացման մասին</translation> <translation id="1995660704900986789">Անջատել</translation> <translation id="1998100899771863792">Ընթացիկ աշխատասեղանը</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Մուտքագրեք հաղորդագրություն</translation> <translation id="2018630726571919839">Անեկդոտ պատմիր</translation> <translation id="2021864487439853900">Սեղմեք՝ ապակողպելու համար</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Համոզվեք, որ ձեր հեռախոսը մոտակայքում է, ապակողպված է, և որ Bluetooth-ը միացված է։</translation> <translation id="4895488851634969361">Մարտկոցը լիցքավորված է:</translation> <translation id="490375751687810070">Ուղղաձիգ</translation> -<translation id="4905614135390995787">Բարձր կոնտրաստի ռեժիմի միացման/անջատման դյուրանցումը փոխվել է։ <ph name="OLD_SHORTCUT" /> դյուրանցման փոխարեն օգտագործեք <ph name="NEW_SHORTCUT" />։</translation> <translation id="490788395437447240">Մարտկոցի լիցքը՝ <ph name="BATTERY_PERCENTAGE" /></translation> <translation id="4917385247580444890">Ուժեղ</translation> <translation id="4918086044614829423">Ընդունել</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Միացեք ձեր հեռախոսի թեժ կետին, անջատեք սարքի ձայնը կամ տեղորոշեք այն, ինչպես նաև դիտեք ձեր հեռախոսում բացված Chrome-ի վերջին ներդիրները</translation> <translation id="6670153871843998651">Աշխատասեղան 3</translation> <translation id="6671495933530132209">Պատճենել պատկերը</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Ստացեք տեղեկություններ էկրանի տարրերի վերաբերյալ</translation> <translation id="6696025732084565524">Անհրաժեշտ է թարմացնել արտաքին ստեղնաշարը</translation> <translation id="6700713906295497288">IME ընտրացանկի կոճակ</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb index c3daf1a..b74f9b2 100644 --- a/ash/strings/ash_strings_id.xtb +++ b/ash/strings/ash_strings_id.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Pelajari lebih lanjut update <ph name="SYSTEM_APP_NAME" /> terbaru</translation> <translation id="1995660704900986789">Matikan perangkat</translation> <translation id="1998100899771863792">Desktop saat ini</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Ketik pesan</translation> <translation id="2018630726571919839">Ceritakan lelucon</translation> <translation id="2021864487439853900">Klik untuk membuka kunci</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Pastikan ponsel berada di dekat Anda dan Bluetooth aktif.</translation> <translation id="4895488851634969361">Baterai penuh.</translation> <translation id="490375751687810070">Vertikal</translation> -<translation id="4905614135390995787">Pintasan untuk beralih Mode Kontras Tinggi telah berubah. Gunakan <ph name="NEW_SHORTCUT" /> sebagai ganti <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Baterai <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Kuat</translation> <translation id="4918086044614829423">Terima</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Hubungkan ke hotspot ponsel, nonaktifkan suara dan temukan perangkat, serta lihat tab Chrome terbaru yang dibuka di ponsel</translation> <translation id="6670153871843998651">Halaman kerja 3</translation> <translation id="6671495933530132209">Salin gambar</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Dapatkan info terkait pilihan Anda</translation> <translation id="6696025732084565524">Keyboard yang dapat dilepas memerlukan update penting</translation> <translation id="6700713906295497288">Tombol menu IME</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb index 40ce210..b9706af9 100644 --- a/ash/strings/ash_strings_is.xtb +++ b/ash/strings/ash_strings_is.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Frekari upplýsingar um nýjustu uppfærslu <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Slökkva</translation> <translation id="1998100899771863792">Núverandi skrifborð</translation> -<translation id="2012624427112548395">Ctrl+leitarhnappur+H</translation> <translation id="2016340657076538683">Sláðu inn skilaboð</translation> <translation id="2018630726571919839">Segðu mér brandara</translation> <translation id="2021864487439853900">Smelltu til að opna</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Gakktu úr skugga um að síminn þinn sé nálægt og kveikt sé á Bluetooth.</translation> <translation id="4895488851634969361">Rafhlaðan er fullhlaðin.</translation> <translation id="490375751687810070">Lóðrétt</translation> -<translation id="4905614135390995787">Flýtilykli fyrir stillingu með miklum birtuskilum var breytt. Notaðu <ph name="NEW_SHORTCUT" /> í staðinn fyrir <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% rafhlaða</translation> <translation id="4917385247580444890">Sterkt</translation> <translation id="4918086044614829423">Samþykkja</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Tengstu heitum reit símans, þaggaðu niður í og finndu tækið þitt og skoðaðu nýlega Chrome flipa sem eru opnir í símanum þínum</translation> <translation id="6670153871843998651">Skrifborð 3</translation> <translation id="6671495933530132209">Afrita mynd</translation> -<translation id="6691659475504239918">Leitarhnappur+Shift+H</translation> <translation id="6692996468359469499">Fá upplýsingar í tengslum við val þitt</translation> <translation id="6696025732084565524">Lausa lyklaborðið þarf að fá áríðandi uppfærslu</translation> <translation id="6700713906295497288">IME-valmyndarhnappur</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index 7fa86e8c..ba37ceb 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Leggi ulteriori informazioni sull'ultimo aggiornamento di <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Spegni</translation> <translation id="1998100899771863792">Scrivania corrente</translation> -<translation id="2012624427112548395">CTRL + tasto per la ricerca + H</translation> <translation id="2016340657076538683">Digita un messaggio</translation> <translation id="2018630726571919839">Raccontami una barzelletta</translation> <translation id="2021864487439853900">Fai clic per sbloccare</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Assicurati che il tuo telefono sia nelle vicinanze e che il Bluetooth sia attivo.</translation> <translation id="4895488851634969361">La batteria è carica.</translation> <translation id="490375751687810070">Verticale</translation> -<translation id="4905614135390995787">La scorciatoia per attivare/disattivare la modalità ad alto contrasto è cambiata. Usa <ph name="NEW_SHORTCUT" /> anziché <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Livello batteria: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Forte</translation> <translation id="4918086044614829423">Accetto</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Connettiti all'hotspot del tuo telefono, disattiva i suoni del dispositivo, individualo e visualizza le schede recenti di Chrome aperte sul telefono</translation> <translation id="6670153871843998651">Scrivania 3</translation> <translation id="6671495933530132209">Copia immagine</translation> -<translation id="6691659475504239918">Tasto per la ricerca + MAIUSC + H</translation> <translation id="6692996468359469499">Ricevi informazioni correlate alla tua selezione</translation> <translation id="6696025732084565524">La tastiera rimovibile richiede un aggiornamento critico</translation> <translation id="6700713906295497288">Pulsante di menu IME</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index 1420172..2b80848 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">מידע נוסף על העדכון האחרון של <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">כיבוי</translation> <translation id="1998100899771863792">שולחן העבודה הווירטואלי הנוכחי</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">כאן מקלידים את ההודעה</translation> <translation id="2018630726571919839">אני רוצה לשמוע בדיחה</translation> <translation id="2021864487439853900">יש ללחוץ כדי לבטל את הנעילה</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">יש לוודא שהטלפון נמצא בקרבת מקום ושה-Bluetooth מופעל.</translation> <translation id="4895488851634969361">הסוללה טעונה במלואה.</translation> <translation id="490375751687810070">אנכי</translation> -<translation id="4905614135390995787">מקש הקיצור להפעלה או כיבוי של מצב ניגודיות גבוהה השתנה. יש להשתמש ב-<ph name="NEW_SHORTCUT" /> במקום ב-<ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">%<ph name="BATTERY_PERCENTAGE" /> סוללה</translation> <translation id="4917385247580444890">חזק</translation> <translation id="4918086044614829423">אישור</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">ניתן להתחבר לנקודה לשיתוף אינטרנט (Hotspot) של הטלפון, להשתיק את המכשיר ולאתר אותו וכן להציג את הכרטיסיות האחרונות שפתוחות בטלפון</translation> <translation id="6670153871843998651">שולחן עבודה 3</translation> <translation id="6671495933530132209">העתקת התמונה</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">קבלת מידע בקשר לבחירה שלך</translation> <translation id="6696025732084565524">למקלדת הניתנת לניתוק דרוש עדכון קריטי</translation> <translation id="6700713906295497288">לחצן תפריט IME</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 7668cb2..4bbd9df 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> の最新アップデートの詳細をご確認ください</translation> <translation id="1995660704900986789">電源を切る</translation> <translation id="1998100899771863792">現在のデスク</translation> -<translation id="2012624427112548395">Ctrl+検索+H</translation> <translation id="2016340657076538683">メッセージを入力</translation> <translation id="2018630726571919839">面白いこと言って</translation> <translation id="2021864487439853900">クリックしてロックを解除</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">スマートフォンが近くにあり、Bluetooth がオンになっていることを確認してください。</translation> <translation id="4895488851634969361">バッテリー残量: 満。</translation> <translation id="490375751687810070">縦</translation> -<translation id="4905614135390995787">ハイ コントラスト モードを切り替えるショートカットが変わりました。これまでの <ph name="OLD_SHORTCUT" /> キーではなく <ph name="NEW_SHORTCUT" /> キーを使用してください。</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% のバッテリー残量</translation> <translation id="4917385247580444890">強い</translation> <translation id="4918086044614829423">同意する</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">スマートフォンのアクセス ポイントに接続することや、スマートフォンをサイレント モードに切り替える、探すなどのほか、スマートフォンで最近使った Chrome タブを表示することができます</translation> <translation id="6670153871843998651">デスク 3</translation> <translation id="6671495933530132209">画像をコピー</translation> -<translation id="6691659475504239918">検索+Shift+H</translation> <translation id="6692996468359469499">選択した項目に関連する情報を取得する</translation> <translation id="6696025732084565524">お使いのキーボード(取り外し可能)に重要なアップデートを適用する必要があります</translation> <translation id="6700713906295497288">IME メニューボタン</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb index 154c4e3..6f64ed90 100644 --- a/ash/strings/ash_strings_ka.xtb +++ b/ash/strings/ash_strings_ka.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">შეიტყვეთ მეტი <ph name="SYSTEM_APP_NAME" />-ის ბოლო განახლების შესახებ</translation> <translation id="1995660704900986789">გამორთვა</translation> <translation id="1998100899771863792">ამჟამინდელი სამუშაო მაგიდა</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">აკრიფეთ შეტყობინება</translation> <translation id="2018630726571919839">მომიყევი ანეკდოტი</translation> <translation id="2021864487439853900">განსაბლოკად დააწკაპუნეთ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">ტელეფონი ახლოს უნდა გქონდეთ და მასზე ჩართული იყოს Bluetooth.</translation> <translation id="4895488851634969361">ბატარეა სავსეა.</translation> <translation id="490375751687810070">ვერტიკალური</translation> -<translation id="4905614135390995787">მაღალკონტრასტული რეჟიმის გადართვის მალსახმობი შეიცვალა. გთხოვთ, <ph name="OLD_SHORTCUT" />-ის ნაცვლად გამოიყენოთ <ph name="NEW_SHORTCUT" />.</translation> <translation id="490788395437447240">ბატარეის დონეა <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">ძლიერი</translation> <translation id="4918086044614829423">მიღება</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">დაუკავშირდით თქვენი ტელეფონის უსადენო ქსელს, დაადუმეთ თქვენი მოწყობილობა და იპოვეთ მისი მდებარეობა, ასევე, იხილეთ თქვენს ტელეფონზე გახსნილი ბოლოდროინდელი Chrome ჩანართები</translation> <translation id="6670153871843998651">დესკტოპი 3</translation> <translation id="6671495933530132209">გამოსახულების კოპირება</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">მიიღეთ თქვენს არჩევანთან დაკავშირებული ინფორმაცია</translation> <translation id="6696025732084565524">თქვენი განცალკევებადი კლავიატურა საჭიროებს კრიტიკულ განახლებას</translation> <translation id="6700713906295497288">IME მენიუს ღილაკი</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 4cd1f902..208dfb7d 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> қолданбасының ең соңғы жаңартылған нұсқасы туралы толығырақ</translation> <translation id="1995660704900986789">Өшіру</translation> <translation id="1998100899771863792">Қазіргі жұмыс үстелі</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Хабар мәтінін енгізіңіз</translation> <translation id="2018630726571919839">Әзіл айтып бер</translation> <translation id="2021864487439853900">Құлыпты ашу үшін басыңыз</translation> @@ -302,7 +301,7 @@ <translation id="3486220673238053218">анықтама</translation> <translation id="3510164367642747937">Тінтуір курсорын бөлектеу</translation> <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> басқаратын есептік жазба</translation> -<translation id="3552189655002856821">Wi-Fi өшірулі</translation> +<translation id="3552189655002856821">Wi-Fi өшірулі.</translation> <translation id="3563775809269155755">Хотспотты қосу</translation> <translation id="3571734092741541777">Орнату</translation> <translation id="3573179567135747900">Қайта "<ph name="FROM_LOCALE" />" етіп өзгерту (қайта іске қосуды қажет етеді)</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Телефоныңыз жаныңызда болуы және Bluetooth қосылып тұруы керек.</translation> <translation id="4895488851634969361">Батарея толы.</translation> <translation id="490375751687810070">Тік</translation> -<translation id="4905614135390995787">Жоғары контраст режимін ауыстыру таңбашасы өзгертілді. <ph name="OLD_SHORTCUT" /> таңбашасының орнына <ph name="NEW_SHORTCUT" /> таңбашасын пайдаланыңыз.</translation> <translation id="490788395437447240">Батарея заряды: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Күшті</translation> <translation id="4918086044614829423">Қабылдау</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Телефоныңыздың хотспотына қосылыңыз, құрылғыңыздың дауысын өшіріп, қай жерде тұрғанын көріңіз, сондай-ақ телефоныңызда соңғы ашылған Chrome қойындыларын көре аласыз.</translation> <translation id="6670153871843998651">3-ші жұмыс үстелі</translation> <translation id="6671495933530132209">Кескінді көшіру</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Таңдауға қатысты ақпарат алу</translation> <translation id="6696025732084565524">Алынбалы пернетақтаны жаңарту қажет</translation> <translation id="6700713906295497288">IME мәзір түймесі</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb index cd453a0e..6003175 100644 --- a/ash/strings/ash_strings_km.xtb +++ b/ash/strings/ash_strings_km.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ស្វែងយល់បន្ថែមអំពីកំណែ <ph name="SYSTEM_APP_NAME" /> ថ្មីបំផុត</translation> <translation id="1995660704900986789">បិទ</translation> <translation id="1998100899771863792">តុនិម្មិតបច្ចុប្បន្ន</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">សរសេរសារ</translation> <translation id="2018630726571919839">និយាយរឿងកំប្លែងឱ្យខ្ញុំស្ដាប់</translation> <translation id="2021864487439853900">ចុចដើម្បីដោះសោ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">សូមប្រាកដថា ទូរសព្ទរបស់អ្នកនៅជិត និងបានបើកប៊្លូធូស។</translation> <translation id="4895488851634969361">ថ្មពេញ។</translation> <translation id="490375751687810070">បញ្ឈរ</translation> -<translation id="4905614135390995787">ផ្លូវកាត់សម្រាប់បិទ/បើកមុខងារកម្រិតពណ៌ខ្ពស់បានផ្លាស់ប្តូរ។ សូមប្រើ <ph name="NEW_SHORTCUT" /> ជំនួសឲ្យ <ph name="OLD_SHORTCUT" /> ។</translation> <translation id="490788395437447240">ថ្ម <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">ខ្លាំង</translation> <translation id="4918086044614829423">ទទួល</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">ភ្ជាប់ហតស្ប៉តរបស់ទូរសព្ទអ្នក បិទសំឡេងនិងកំណត់ទីតាំងឧបករណ៍របស់អ្នក ព្រមទាំងមើលផ្ទាំង Chrome ថ្មីៗ ដែលបើកនៅលើទូរសព្ទរបស់អ្នក</translation> <translation id="6670153871843998651">តុទី 3</translation> <translation id="6671495933530132209">ចម្លងរូបភាព</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">ទទួលបានព័ត៌មានពាក់ព័ន្ធនឹងការជ្រើសរើសរបស់អ្នក</translation> <translation id="6696025732084565524">ក្ដារចុចដែលអាចផ្ដាច់ចេញបានរបស់អ្នកត្រូវការកំណែថ្មីជាចាំបាច់</translation> <translation id="6700713906295497288">ប៊ូតុងម៉ឺនុយ IME</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index ae118258..3ee3f7f1 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ಇತ್ತೀಚಿನ <ph name="SYSTEM_APP_NAME" /> ಅಪ್ಡೇಟ್ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation> <translation id="1995660704900986789">ಪವರ್ ಆಫ್</translation> <translation id="1998100899771863792">ಪ್ರಸ್ತುತ ಡೆಸ್ಕ್</translation> -<translation id="2012624427112548395">Ctrl+ಹುಡುಕಾಟ+H</translation> <translation id="2016340657076538683">ಸಂದೇಶವನ್ನು ಟೈಪ್ ಮಾಡಿ</translation> <translation id="2018630726571919839">ನನಗೊಂದು ಜೋಕ್ ಹೇಳಿ</translation> <translation id="2021864487439853900">ಅನ್ಲಾಕ್ ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">ನಿಮ್ಮ ಫೋನ್ ಸಮೀಪದಲ್ಲಿದೆ ಮತ್ತು ಅದರಲ್ಲಿ ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.</translation> <translation id="4895488851634969361">ಬ್ಯಾಟರಿ ತುಂಬಿದೆ.</translation> <translation id="490375751687810070">ಲಂಬ</translation> -<translation id="4905614135390995787">ಹೆಚ್ಚು ಕಾಂಟ್ರಾಸ್ಟ್ ಮೋಡ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಲು ಶಾರ್ಟ್ಕಟ್ ಬದಲಾಗಿದೆ. <ph name="OLD_SHORTCUT" /> ಬದಲಿಗೆ <ph name="NEW_SHORTCUT" /> ಅನ್ನು ಬಳಸಿ.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% ರಷ್ಟು ಬ್ಯಾಟರಿ</translation> <translation id="4917385247580444890">ಪ್ರಬಲ</translation> <translation id="4918086044614829423">ಸಮ್ಮತಿಸು</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">ನಿಮ್ಮ ಫೋನ್ನ ಹಾಟ್ಸ್ಪಾಟ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ, ನಿಶ್ಯಬ್ದಗೊಳಿಸಿ ಹಾಗೂ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಪತ್ತೆ ಮಾಡಿ ಮತ್ತು ಇತ್ತೀಚೆಗೆ ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ತೆರೆಯಲಾದ Chrome ಟ್ಯಾಬ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ</translation> <translation id="6670153871843998651">ಡೆಸ್ಕ್ 3</translation> <translation id="6671495933530132209">ಚಿತ್ರವನ್ನು ನಕಲಿಸಿ</translation> -<translation id="6691659475504239918">ಹುಡುಕಾಟ+Shift+H</translation> <translation id="6692996468359469499">ನಿಮ್ಮ ಆಯ್ಕೆಗೆ ಸಂಬಂಧಿಸಿದ ಮಾಹಿತಿ ಪಡೆಯಿರಿ</translation> <translation id="6696025732084565524">ನಿಮ್ಮ ಪ್ರತ್ಯೇಕಿಸಬಹುದಾದ ಕೀಬೋರ್ಡ್ಗೆ ವಿಷಮಸ್ಥಿತಿ ಅಪ್ಡೇಟ್ನ ಅಗತ್ಯವಿದೆ</translation> <translation id="6700713906295497288">IME ಮೆನು ಬಟನ್</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb index a8ad297d..6630284 100644 --- a/ash/strings/ash_strings_ko.xtb +++ b/ash/strings/ash_strings_ko.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">최신 <ph name="SYSTEM_APP_NAME" /> 업데이트에 관해 자세히 알아보세요.</translation> <translation id="1995660704900986789">끄기</translation> <translation id="1998100899771863792">현재 데스크</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">메시지 입력</translation> <translation id="2018630726571919839">재미있는 이야기 듣기</translation> <translation id="2021864487439853900">잠금 해제하려면 클릭</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">휴대전화가 근처에 있고 블루투스가 켜져 있는지 확인하세요.</translation> <translation id="4895488851634969361">배터리 충전이 완료되었습니다.</translation> <translation id="490375751687810070">세로</translation> -<translation id="4905614135390995787">고대비 모드 전환 단축키가 변경되었습니다. <ph name="OLD_SHORTCUT" /> 대신 <ph name="NEW_SHORTCUT" />을(를) 사용하세요.</translation> <translation id="490788395437447240">배터리 <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">강함</translation> <translation id="4918086044614829423">수락</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">휴대전화 핫스팟에 연결하고, 기기를 음소거하고, 기기를 찾고, 휴대전화에서 최근 열었던 Chrome 탭을 확인하세요.</translation> <translation id="6670153871843998651">데스크 3</translation> <translation id="6671495933530132209">이미지 복사</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">선택 항목과 관련된 정보 얻기</translation> <translation id="6696025732084565524">분리식 키보드에 중요 업데이트 필요</translation> <translation id="6700713906295497288">IME 메뉴 버튼</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb index 7f1c128..18e7cd9 100644 --- a/ash/strings/ash_strings_ky.xtb +++ b/ash/strings/ash_strings_ky.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> колдонмосундагы жаңыртуу жөнүндө кененирээк маалымат алуу</translation> <translation id="1995660704900986789">Өчүрүү</translation> <translation id="1998100899771863792">Учурдагы иш такта</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Бир нерсе деп жазыңыз</translation> <translation id="2018630726571919839">Мага тамаша айтып бер</translation> <translation id="2021864487439853900">Кулпусун ачуу үчүн басыңыз</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Телефонуңуз жакын жерде турганын жана анда Bluetooth күйгүзүлгөнүн текшериңиз.</translation> <translation id="4895488851634969361">Батарея толду.</translation> <translation id="490375751687810070">Тигинен</translation> -<translation id="4905614135390995787">Жогорку контраст режимин которуштуруучу кыска жол өзгөрдү. <ph name="OLD_SHORTCUT" /> ордуна <ph name="NEW_SHORTCUT" /> кыска жолун колдонуңуз.</translation> <translation id="490788395437447240">Батарея <ph name="BATTERY_PERCENTAGE" />% кубатталган</translation> <translation id="4917385247580444890">Күчтүү</translation> <translation id="4918086044614829423">Кабыл алуу</translation> @@ -651,7 +649,7 @@ <translation id="649452524636452238">Акылдуу картанын PIN коду</translation> <translation id="6501401484702599040">Тышкы экранга чыгаруу <ph name="RECEIVER_NAME" /></translation> <translation id="6520517963145875092">Сүрөткө тартуу үчүн терезе тандаңыз</translation> -<translation id="652139407789908527">Бул жаңыртуу учурунда экраныңыз адаттагыдан узагыраак (бир мүнөткө чейин) өчүп турушу мүмкүн. Жаңыртылып жатканда күйгүзүү/өчүрүү баскычын баспай туруңуз.</translation> +<translation id="652139407789908527">Бул жаңыртуу учурунда экраныңыз адаттагыдан узагыраак (бир мүнөткө чейин) өчүп турушу мүмкүн. Жаңыртылып жатканда кубат баскычын баспай туруңуз.</translation> <translation id="6528179044667508675">Тынчымды алба</translation> <translation id="65320610082834431">Быйтыкчалар</translation> <translation id="6537270692134705506">Экранды тартуу</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Телефонуңуздагы байланыш түйүнүнө туташтырып, үнүн басып, түзмөгүңүздү аныктаңыз да, андан соң телефонуңузда ачылган акыркы Chrome өтмөктөрүн көрүңүз</translation> <translation id="6670153871843998651">3-иш такта</translation> <translation id="6671495933530132209">Сүрөттү көчүрүү</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Сиз тандаган нерсеге тиешелүү маалыматты алуу</translation> <translation id="6696025732084565524">Ажыратылуучу баскычтопко жаңыртуу талап кылынат</translation> <translation id="6700713906295497288">IME меню баскычы</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb index c1ba9f6d..91c19f386e 100644 --- a/ash/strings/ash_strings_lo.xtb +++ b/ash/strings/ash_strings_lo.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ສຶກສາເພີ່ມເຕີມກ່ຽວກັບການອັບເດດ <ph name="SYSTEM_APP_NAME" /> ຫຼ້າສຸດ</translation> <translation id="1995660704900986789">ປິດເຄື່ອງ</translation> <translation id="1998100899771863792">ໂຕະປັດຈຸບັນ</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">ພິມຂໍ້ຄວາມ</translation> <translation id="2018630726571919839">ເລົ່າເລື່ອງຕະຫຼົກໃຫ້ຂ້ອຍຟັງ</translation> <translation id="2021864487439853900">ຄລິກເພື່ອປົດລັອກ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">ກວດໃຫ້ແນ່ໃຈວ່າໂທລະສັບຂອງທ່ານຢູ່ໃກ້ ແລະ ເປີດ Bluetooth ແລ້ວ.</translation> <translation id="4895488851634969361">ແບັດເຕີຣີເຕັມ.</translation> <translation id="490375751687810070">ລວງຕັ້ງ</translation> -<translation id="4905614135390995787">ທາງລັດເພື່ອປິດເປີດໂໝດສີຕັດສູງໄດ້ປ່ຽນແປງແລ້ວ. ກະລຸນາໃຊ້ <ph name="NEW_SHORTCUT" /> ແທນ <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">ລະດັບແບັດເຕີຣີ <ph name="BATTERY_PERCENTAGE" /></translation> <translation id="4917385247580444890">ແຮງ</translation> <translation id="4918086044614829423">ຍອມຮັບ</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">ເຊື່ອມຕໍ່ກັບຮັອດສະປອດຂອງໂທລະສັບຂອງທ່ານ, ກະລຸນາປິດສຽງ ແລະ ຊອກຫາໂທລະສັບຂອງທ່ານ ແລະ ເບິ່ງແຖບ Chrome ຫຼ້າສຸດທີ່ເປີດຢູ່ໃນໂທລະສັບຂອງທ່ານ</translation> <translation id="6670153871843998651">ໂຕະ 3</translation> <translation id="6671495933530132209">ກັອບປີ້ຮູບ</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">ຮັບຂໍ້ມູນທີ່ກ່ຽວຂ້ອງກັບການເລືອກຂອງທ່ານ</translation> <translation id="6696025732084565524">ແປ້ນພິມທີ່ສາມາດແຍກອອກໄດ້ຂອງທ່ານຈຳເປັນຕ້ອງມີການອັບເດດສຳຄັນ</translation> <translation id="6700713906295497288">ປຸ່ມເມນູ IME</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb index 9f6c759..59fb19e 100644 --- a/ash/strings/ash_strings_lt.xtb +++ b/ash/strings/ash_strings_lt.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Sužinokite daugiau apie naujausią „<ph name="SYSTEM_APP_NAME" />“ naujinį</translation> <translation id="1995660704900986789">Išjungti maitinimą</translation> <translation id="1998100899771863792">Dabartinis darbalaukis</translation> -<translation id="2012624427112548395">„Ctrl“ + paieškos klavišas + H</translation> <translation id="2016340657076538683">Įveskite pranešimą</translation> <translation id="2018630726571919839">Papasakok pokštą</translation> <translation id="2021864487439853900">Atrakinti spustelėjus</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Įsitikinkite, kad telefonas netoliese ir jame įjungtas „Bluetooth“ ryšys.</translation> <translation id="4895488851634969361">Akumuliatorius visiškai įkrautas.</translation> <translation id="490375751687810070">Vertikaliai</translation> -<translation id="4905614135390995787">Spartusis klavišas, kurį naudojant perjungiamas didelio kontrasto režimas, pakeistas. Naudokite <ph name="NEW_SHORTCUT" /> vietoj <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Akumuliatoriaus įkrovos lygis: <ph name="BATTERY_PERCENTAGE" /> proc.</translation> <translation id="4917385247580444890">Stiprus</translation> <translation id="4918086044614829423">Priimti</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Prisijunkite prie telefono viešosios interneto prieigos taško, nutildykite įrenginį, nustatykite jo buvimo vietą ir peržiūrėkite naujausius „Chrome“ skirtukus, atidarytus telefone</translation> <translation id="6670153871843998651">3 pultas</translation> <translation id="6671495933530132209">Kopijuoti vaizdą</translation> -<translation id="6691659475504239918">Paieškos klavišas + „Shift“ + H</translation> <translation id="6692996468359469499">Su pasirinkimu susijusios informacijos gavimas</translation> <translation id="6696025732084565524">Atjungiamai klaviatūrai reikia pritaikyti kritinį naujinį</translation> <translation id="6700713906295497288">IME meniu mygtukas</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb index f7cae114..8ebbb0fb 100644 --- a/ash/strings/ash_strings_lv.xtb +++ b/ash/strings/ash_strings_lv.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Uzzināt vairāk par pēdējo <ph name="SYSTEM_APP_NAME" /> atjauninājumu</translation> <translation id="1995660704900986789">Izslēgt</translation> <translation id="1998100899771863792">Pašreizējā darbvieta</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Ierakstiet ziņojumu</translation> <translation id="2018630726571919839">Pastāstīt joku</translation> <translation id="2021864487439853900">Noklikšķiniet, lai atbloķētu</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Tālrunim ir jāatrodas tuvumā, un tajā ir jābūt ieslēgtam Bluetooth savienojumam.</translation> <translation id="4895488851634969361">Akumulators ir pilnībā uzlādēts.</translation> <translation id="490375751687810070">Vertikāli</translation> -<translation id="4905614135390995787">Īsinājumtaustiņi, ar kuriem pārslēgt augsta kontrasta režīmu, ir mainījušies. Lūdzu, izmantojiet <ph name="NEW_SHORTCUT" />, nevis <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Akumulators: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Spēcīgs</translation> <translation id="4918086044614829423">Pieņemt</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Varat izveidot savienojumu ar tālruņa tīklāju, izslēgt ierīces skaņu, noteikt tās atrašanās vietu, kā arī skatīt nesen jūsu tālrunī atvērtās Chrome cilnes</translation> <translation id="6670153871843998651">3. galds</translation> <translation id="6671495933530132209">Kopēt attēlu</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Iespēja saņemt informāciju par atlasīto saturu</translation> <translation id="6696025732084565524">Noņemamajai tastatūrai nepieciešams svarīgs atjauninājums</translation> <translation id="6700713906295497288">IME izvēlnes poga</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb index 1a03988..6c3a888 100644 --- a/ash/strings/ash_strings_mk.xtb +++ b/ash/strings/ash_strings_mk.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Дознајте повеќе за најновото ажурирање на <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Исклучи</translation> <translation id="1998100899771863792">Моментална работна површина</translation> -<translation id="2012624427112548395">Ctrl+„Пребарување“+H</translation> <translation id="2016340657076538683">Напишете порака</translation> <translation id="2018630726571919839">Кажи ми шега</translation> <translation id="2021864487439853900">Кликнете за да отклучите</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Проверете дали телефонот е во близина и со вклучен Bluetooth.</translation> <translation id="4895488851634969361">Батеријата е полна.</translation> <translation id="490375751687810070">Вертикално</translation> -<translation id="4905614135390995787">Кратенката за префрлање во режим на висок контраст е променета. Користете <ph name="NEW_SHORTCUT" /> наместо <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % батерија</translation> <translation id="4917385247580444890">Силен</translation> <translation id="4918086044614829423">Прифати</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Поврзете се со точката на пристап на телефонот, исклучете го звукот на уредот, лоцирајте го уредот и прегледувајте ги неодамнешните картички на Chrome што ви се отворени на телефонот</translation> <translation id="6670153871843998651">Биро 3</translation> <translation id="6671495933530132209">Копирај слика</translation> -<translation id="6691659475504239918">„Пребарување“+Shift+H</translation> <translation id="6692996468359469499">Добивајте информации поврзани со вашиот избор</translation> <translation id="6696025732084565524">Отстранливата тастатура има потреба од важно ажурирање</translation> <translation id="6700713906295497288">Копче за мени на IME</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index 8928fad..4e466f2 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ഏറ്റവും പുതിയ <ph name="SYSTEM_APP_NAME" /> അപ്ഡേറ്റിനെ കുറിച്ച് കൂടുതലറിയുക</translation> <translation id="1995660704900986789">പവർ ഓഫാക്കുക</translation> <translation id="1998100899771863792">നിലവിലെ ഡെസ്ക്</translation> -<translation id="2012624427112548395">Ctrl+തിരയൽ+H</translation> <translation id="2016340657076538683">ഒരു സന്ദേശം ടൈപ്പ് ചെയ്യുക</translation> <translation id="2018630726571919839">എന്നോട് ഒരു തമാശ പറയൂ</translation> <translation id="2021864487439853900">അൺലോക്കുചെയ്യാൻ ക്ലിക്കുചെയ്യൂ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">നിങ്ങളുടെ ഫോൺ സമീപത്തുണ്ടെന്നും Bluetooth ഓണാക്കിയിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക.</translation> <translation id="4895488851634969361">ബാറ്ററി ചാർജുചെയ്യൽ പൂർണ്ണമായി.</translation> <translation id="490375751687810070">ലംബം</translation> -<translation id="4905614135390995787">ഉയർന്ന ദൃശ്യതീവ്രത മോഡ് ടോഗിൾ ചെയ്യാനുള്ള കുറുക്കുവഴി മാറ്റി. <ph name="OLD_SHORTCUT" /> എന്നതിനുപകരം <ph name="NEW_SHORTCUT" /> ഉപയോഗിക്കുക.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% ബാറ്ററി</translation> <translation id="4917385247580444890">ശക്തം</translation> <translation id="4918086044614829423">സ്വീകരിക്കുക</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">നിങ്ങളുടെ ഫോണിന്റെ ഹോട്ട്സ്പോട്ടിലേക്ക് കണക്റ്റ് ചെയ്യുക, നിങ്ങളുടെ ഉപകരണം നിശബ്ദമാക്കുകയും കണ്ടെത്തുകയും ചെയ്യുക, നിങ്ങളുടെ ഫോണിൽ അടുത്തിടെ തുറന്ന Chrome ടാബുകൾ കാണുക</translation> <translation id="6670153871843998651">ഡെസ്ക് 3</translation> <translation id="6671495933530132209">ചിത്രം പകർത്തുക</translation> -<translation id="6691659475504239918">തിരയൽ+Shift+H</translation> <translation id="6692996468359469499">നിങ്ങളുടെ തിരഞ്ഞെടുക്കലുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ നേടുക</translation> <translation id="6696025732084565524">നിങ്ങളുടെ വേർപെടുത്താനാകുന്ന കീബോഡിന് നിർണ്ണായക അപ്ഡേറ്റ് ആവശ്യമാണ്</translation> <translation id="6700713906295497288">IME മെനു ബട്ടൺ</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index 0ddee83..bdeb8f19 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Хамгийн сүүлийн <ph name="SYSTEM_APP_NAME" /> шинэчлэлтийн талаар дэлгэрэнгүй үзэх</translation> <translation id="1995660704900986789">Унтраах</translation> <translation id="1998100899771863792">Одоогийн дэлгэц</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Мессеж бичих</translation> <translation id="2018630726571919839">Надад онигоо ярьж өгөөч</translation> <translation id="2021864487439853900">Түгжээг тайлахын тулд товших</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Таны утас ойролцоо бөгөөд Bluetooth-г нь асаасан эсэхийг шалгана уу.</translation> <translation id="4895488851634969361">Цэнэг дүүрсэн байна.</translation> <translation id="490375751687810070">Босоо</translation> -<translation id="4905614135390995787">Өндөр нягтралтай горимыг асаах/унтраах товчлол өөрчлөгдсөн байна. <ph name="OLD_SHORTCUT" />-н оронд <ph name="NEW_SHORTCUT" />-г ашиглана уу.</translation> <translation id="490788395437447240">Батерей <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Хүчтэй</translation> <translation id="4918086044614829423">Хүлээн зөвшөөрөх</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Утасныхаа сүлжээний цэгт холбогдож, төхөөрөмжөө чимээгүй болгож, байршлыг нь тогтоож мөн утсан дээр тань нээлттэй байгаа Chrome-н саяхны табуудыг хараарай</translation> <translation id="6670153871843998651">Дэлгэц 3</translation> <translation id="6671495933530132209">Зургийг хуулах</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Сонголттойгоо холбоотой мэдээлэл авах</translation> <translation id="6696025732084565524">Та салгах боломжтой гараа зайлшгүй шинэчлэх шаардлагатай байна</translation> <translation id="6700713906295497288">IME цэсийн товчлуур</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb index 1fa48a6..4495646 100644 --- a/ash/strings/ash_strings_mr.xtb +++ b/ash/strings/ash_strings_mr.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> च्या नवीनतम अपडेटबाबत अधिक जाणून घ्या</translation> <translation id="1995660704900986789">बंद करा</translation> <translation id="1998100899771863792">सध्याचा डेस्क</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">मेसेज टाइप करा</translation> <translation id="2018630726571919839">मला एक विनोद सांगा</translation> <translation id="2021864487439853900">अनलॉक करण्यासाठी क्लिक करा</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">परिभाषा</translation> <translation id="3510164367642747937">माउसचा कर्सर हायलाइट करा</translation> <translation id="3513798432020909783">खाते <ph name="MANAGER_EMAIL" /> ने व्यवस्थापित केले आहे</translation> +<translation id="3552189655002856821">वाय-फाय बंद केले आहे</translation> <translation id="3563775809269155755">हॉटस्पॉट सुरू करा</translation> <translation id="3571734092741541777">सेट अप</translation> <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />"मध्ये परत बदला (रीस्टार्ट करणे आवश्यक)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">व्हॉइस इनपुट</translation> <translation id="3900355044994618856"><ph name="SESSION_TIME_REMAINING" /> मध्ये तुमचे सेशन समाप्त होईल</translation> <translation id="3901991538546252627"><ph name="NAME" /> वर कनेक्ट करीत आहे</translation> +<translation id="3923494859158167397">कोणतीही मोबाइल नेटवर्क सेट केलेली नाहीत</translation> <translation id="3943857333388298514">पेस्ट करा</translation> <translation id="394485226368336402">ऑडिओ सेटिंग्ज</translation> <translation id="3945319193631853098">सेट करणे पूर्ण करण्यासाठी टॅप करा</translation> @@ -379,6 +380,7 @@ <translation id="4195877955194704651">आपोआप क्लिक बटण</translation> <translation id="4197790712631116042">बंद</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> उपलब्ध नाही.</translation> +<translation id="4209973997261364186">वाय-फाय सुरू केले आहे</translation> <translation id="4212472694152630271">पिन वर स्विच करा</translation> <translation id="4215497585250573029">VPN सेटिंग्ज</translation> <translation id="4217571870635786043">डिक्टेशन</translation> @@ -463,7 +465,6 @@ <translation id="4890408602550914571">तुमचा फोन जवळपास असल्याची आणि ब्लूटूथ सुरू असल्याची खात्री करा.</translation> <translation id="4895488851634969361">बॅटरी भरली आहे.</translation> <translation id="490375751687810070">उभा</translation> -<translation id="4905614135390995787">उच्च तीव्रता मोड टॉगल करण्यासाठी शॉर्टकट बदलला आहे. कृपया <ph name="OLD_SHORTCUT" /> ऐवजी <ph name="NEW_SHORTCUT" /> वापरा.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% बॅटरी</translation> <translation id="4917385247580444890">मजबूत</translation> <translation id="4918086044614829423">स्वीकारा</translation> @@ -555,6 +556,7 @@ <translation id="5689633613396158040">रात्रीच्या प्रकाशामुळे तुमच्या स्क्रीनकडे पाहणे किंवा मंद प्रकाशात वाचणे आणखी सोपे होते. रात्रीचा प्रकाश कधी सुरू होईल किंवा पूर्ण बंद होईल हे बदलण्यासाठी टॅप करा.</translation> <translation id="5691772641933328258">फिंगरप्रिंट ओळखले नाही</translation> <translation id="5710450975648804523">व्यत्यय आणू नका सुरू आहे</translation> +<translation id="571295407079589142">मोबाइल डेटा बंद केला आहे</translation> <translation id="573413375004481890">हे डिव्हाइस तुमच्या सर्व डिस्प्लेंना सपोर्ट करू शकले नाही, त्यामुळे एक डिस्प्ले डिस्कनेक्ट केला गेला</translation> <translation id="574392208103952083">मध्यम</translation> <translation id="5744083938413354016">टॅप ड्रॅगिंग</translation> @@ -669,7 +671,6 @@ <translation id="6667908387435388584">तुमच्या फोनच्या हॉटस्पॉटशी कनेक्ट करा, सायलंट करा व तुमचे डिव्हाइस शोधा आणि तुमच्या फोनवर उघडलेले अलीकडील Chrome टॅब पाहा</translation> <translation id="6670153871843998651">डेस्क ३</translation> <translation id="6671495933530132209">इमेज कॉपी करा</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">तुमच्या निवडीशी संबंधित माहिती मिळवा</translation> <translation id="6696025732084565524">तुमच्या वेगळ्या करण्यायोग्य कीबोर्डला गंभीर अपडेटची आवश्यकता आहे</translation> <translation id="6700713906295497288">IME मेनू बटण</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb index 0fd1f1d..8215e897 100644 --- a/ash/strings/ash_strings_ms.xtb +++ b/ash/strings/ash_strings_ms.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Ketahui lebih lanjut tentang kemas kini <ph name="SYSTEM_APP_NAME" /> yang terbaharu</translation> <translation id="1995660704900986789">Matikan kuasa</translation> <translation id="1998100899771863792">Meja semasa</translation> -<translation id="2012624427112548395">Ctrl+Cari+H</translation> <translation id="2016340657076538683">Taip mesej</translation> <translation id="2018630726571919839">Beritahu saya jenaka</translation> <translation id="2021864487439853900">Klik untuk membuka kunci</translation> @@ -467,7 +466,6 @@ <translation id="4890408602550914571">Pastikan telefon anda berada berdekatan dan Bluetooth dihidupkan.</translation> <translation id="4895488851634969361">Bateri penuh.</translation> <translation id="490375751687810070">Menegak</translation> -<translation id="4905614135390995787">Pintasan untuk menogol Mod Kontras Tinggi telah ditukar. Sila gunakan <ph name="NEW_SHORTCUT" /> dan bukannya <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Bateri <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Kuat</translation> <translation id="4918086044614829423">Terima</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Sambung kepada tempat liputan telefon anda, senyapkan dan kesan lokasi peranti anda serta lihat tab Chrome baru-baru ini yang dibuka pada telefon anda</translation> <translation id="6670153871843998651">Meja 3</translation> <translation id="6671495933530132209">Salin imej</translation> -<translation id="6691659475504239918">Cari+Shift+H</translation> <translation id="6692996468359469499">Dapatkan maklumat yang berkaitan dengan pilihan anda</translation> <translation id="6696025732084565524">Papan kekunci anda yang boleh dicabut memerlukan kemas kini kritikal</translation> <translation id="6700713906295497288">Butang menu IME</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 010710d..02e99a8 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">နောက်ဆုံးထွက် <ph name="SYSTEM_APP_NAME" /> အပ်ဒိတ်အကြောင်း ပိုမိုလေ့လာပါ</translation> <translation id="1995660704900986789">စက်ပိတ်ရန်</translation> <translation id="1998100899771863792">လက်ရှိမျက်နှာပြင်နေရာ</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">မက်ဆေ့ဂျ် ရိုက်ပါ</translation> <translation id="2018630726571919839">ဟာသတစ်ခု ပြောပါ</translation> <translation id="2021864487439853900">ဖွင့်ရန် နှိပ်ပါ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">သင့်ဖုန်းသည် အနီးတွင်ရှိပြီး ဘလူးတုသ်ဖွင့်ထားကြောင်း သေချာပါစေ။</translation> <translation id="4895488851634969361">ဘတ်ထရီပြည့်ပါပြီ။</translation> <translation id="490375751687810070">ဒေါင်လိုက်</translation> -<translation id="4905614135390995787">ခြားနားမှုမြင့်သည့်မုဒ်သို့ ဖြတ်လမ်းလင့်ခ်ကို ပြောင်းထားပါသည်။ <ph name="OLD_SHORTCUT" /> အစား <ph name="NEW_SHORTCUT" /> ကို သုံးပါ။</translation> <translation id="490788395437447240">ဘက်ထရီ <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">အားကောင်းသည်</translation> <translation id="4918086044614829423">လက်ခံရန်</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">သင့်ဖုန်း၏ဟော့စပေါ့ကို ချိတ်ဆက်ခြင်း၊ သင့်စက်ကို အသံပိတ်ခြင်း၊ ရှာဖွေခြင်းနှင့် သင့်ဖုန်းတွင်ဖွင့်ထားသည့် လတ်တလော Chrome တဘ်များကို ကြည့်ခြင်းတို့ ပြုလုပ်နိုင်သည်</translation> <translation id="6670153871843998651">စာရေးခုံ ၃</translation> <translation id="6671495933530132209">ပုံကို ကူးယူရန်</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">သင့်ရွေးချယ်မှုနှင့် သက်ဆိုင်သည့် အချက်အလက်များ ရယူခြင်း</translation> <translation id="6696025732084565524">သင်၏ ဖြုတ်လွယ်တပ်လွယ်ကီးဘုတ်အတွက် အရေးကြီးသည့်အပ်ဒိတ် လိုအပ်နေသည်</translation> <translation id="6700713906295497288">IME မီနူးခလုတ်</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb index 32a4c45..388de18 100644 --- a/ash/strings/ash_strings_ne.xtb +++ b/ash/strings/ash_strings_ne.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> को पछिल्लो अद्यावधिकबारे थप जान्नुहोस्</translation> <translation id="1995660704900986789">निष्क्रिय पार्नुहोस्</translation> <translation id="1998100899771863792">हालको डेस्क</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">एउटा सन्देश टाइप गर्नुहोस्</translation> <translation id="2018630726571919839">मलाई एउटा चुट्किला सुनाउनुहोस्</translation> <translation id="2021864487439853900">अनलक गर्न क्लिक गर्नुहोस्</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">परिभाषा</translation> <translation id="3510164367642747937">माउसको कर्सरलाई हाइलाइट</translation> <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> ले व्यवस्थापन गरेको खाता</translation> +<translation id="3552189655002856821">Wi-Fi अफ गरियो</translation> <translation id="3563775809269155755">हटस्पट अन गर्नुहोस्</translation> <translation id="3571734092741541777">सेटअप गर्नुहोस्</translation> <translation id="3573179567135747900">पुन: "<ph name="FROM_LOCALE" />" मा परिवर्तन गर्नुहोस् (फेरि सुरु गर्न आवश्यक छ)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">आवाज मार्फत इनपुट</translation> <translation id="3900355044994618856">तपाईंको सत्र <ph name="SESSION_TIME_REMAINING" /> मा समाप्त हुने छ</translation> <translation id="3901991538546252627"><ph name="NAME" /> मा जडान हुँदै</translation> +<translation id="3923494859158167397">कुनै पनि मोबाइल नेटवर्क सेटअप गरिएको छैन</translation> <translation id="3943857333388298514">टाँस्नुहोस्</translation> <translation id="394485226368336402">अडियो सम्बन्धी सेटिङहरू</translation> <translation id="3945319193631853098">सेटअप गर्ने प्रक्रिया पूरा गर्न ट्याप गर्नुहोस्</translation> @@ -379,6 +380,7 @@ <translation id="4195877955194704651">स्वतः क्लिक गर्ने बटन</translation> <translation id="4197790712631116042">अफ</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> उपलब्ध छैन।</translation> +<translation id="4209973997261364186">Wi-Fi अन गरियो</translation> <translation id="4212472694152630271">पिन प्रयोग गर्न थाल्नुहोस्</translation> <translation id="4215497585250573029">VPN सेटिङहरू</translation> <translation id="4217571870635786043">श्रुतिलेखन</translation> @@ -463,7 +465,6 @@ <translation id="4890408602550914571">तपाईंको फोन नजिकै छ त्यसको ब्लुटुथ अन छ भन्ने कुरा सुनिश्चित गर्नुहोस्।</translation> <translation id="4895488851634969361">ब्याटरी पूर्ण भयो।</translation> <translation id="490375751687810070">ठाडो</translation> -<translation id="4905614135390995787">उच्च कन्ट्रास्ट मोड टगल गर्ने सर्टकट परिवर्तन भएको छ। कृपया <ph name="OLD_SHORTCUT" /> को सट्टामा <ph name="NEW_SHORTCUT" /> प्रयोग गर्नुहोस्।</translation> <translation id="490788395437447240">ब्याट्री <ph name="BATTERY_PERCENTAGE" />% छ</translation> <translation id="4917385247580444890">बलियो</translation> <translation id="4918086044614829423">स्वीकार्नुहोस्</translation> @@ -555,6 +556,7 @@ <translation id="5689633613396158040">रात्रि प्रकाशले मधुरो प्रकाशमा आफ्नो स्क्रिनमा हेर्न वा पढ्न अझ सजिलो बनाउँछ। रात्रि प्रकाश सक्रिय हुने समय परिवर्तन गर्न वा यसलाई पूर्ण रूपमा निष्क्रिय पार्न ट्याप गर्नुहोस्।</translation> <translation id="5691772641933328258">फिंगरप्रिन्ट पहिचान गरिएन</translation> <translation id="5710450975648804523">बाधा नपुर्याउनुहोस् नामक सेवा सक्रिय छ</translation> +<translation id="571295407079589142">मोबाइल डेटा अफ गरियो</translation> <translation id="573413375004481890">यो यन्त्रले तपाईंको कुनै पनि डिस्प्ले समर्थन गर्न सकेन, त्यसैले एउटाको जडान विच्छेद गरियो</translation> <translation id="574392208103952083">मध्यम</translation> <translation id="5744083938413354016">ड्र्याग गर्ने विकल्पमा ट्याप गर्नुहोस्</translation> @@ -669,7 +671,6 @@ <translation id="6667908387435388584">फोनको हटस्पटमा कनेक्ट गर्नुहोस्, यन्त्रलाई साइलेन्ट मोडमा राख्नुहोस् र यन्त्र रहेको स्थान पत्ता लगाउनुका साथै आफ्नो फोनको Chrome मा हालसालै खोलिएका ट्याबहरू हेर्नुहोस्</translation> <translation id="6670153871843998651">डेस्क ३</translation> <translation id="6671495933530132209">छविको प्रतिलिपि गर्नुहोस्</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">आफ्नो चयनसँग सम्बन्धित जानकारी प्राप्त गर्नुहोस्</translation> <translation id="6696025732084565524">तपाईंको अलग्याउन मिल्ने किबोर्डलाई महत्त्वपूर्ण अद्यावधिक आवश्यक छ</translation> <translation id="6700713906295497288">IME सम्बन्धी मेनुको बटन</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index bfbf6d2..6b6bce0 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Meer informatie over de laatste update van <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Uitzetten</translation> <translation id="1998100899771863792">Huidig bureau</translation> -<translation id="2012624427112548395">Ctrl+Zoeken+H</translation> <translation id="2016340657076538683">Typ een bericht</translation> <translation id="2018630726571919839">Vertel me een grap</translation> <translation id="2021864487439853900">Klik om te ontgrendelen</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Zorg dat je telefoon in de buurt is en dat bluetooth aanstaat.</translation> <translation id="4895488851634969361">De batterij is vol.</translation> <translation id="490375751687810070">Verticaal</translation> -<translation id="4905614135390995787">De sneltoets om de modus voor hoog contrast aan of uit te zetten, is gewijzigd. Gebruik <ph name="NEW_SHORTCUT" /> in plaats van <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Batterij <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Sterk</translation> <translation id="4918086044614829423">Accepteren</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Maak verbinding met de hotspot van je telefoon, demp en lokaliseer je apparaat en bekijk recente Chrome-tabbladen die op je telefoon zijn geopend</translation> <translation id="6670153871843998651">Bureau 3</translation> <translation id="6671495933530132209">Afbeelding kopiëren</translation> -<translation id="6691659475504239918">Zoeken+Shift+H</translation> <translation id="6692996468359469499">Informatie over je selectie bekijken</translation> <translation id="6696025732084565524">Je afneembare toetsenbord heeft een essentiële update nodig</translation> <translation id="6700713906295497288">IME-menuknop</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index 2aae03cb1..c8318ea0 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Finn ut mer om den nyeste <ph name="SYSTEM_APP_NAME" />-oppdateringen</translation> <translation id="1995660704900986789">Slå av</translation> <translation id="1998100899771863792">Gjeldende skrivebord</translation> -<translation id="2012624427112548395">Ctrl + Søk + H</translation> <translation id="2016340657076538683">Skriv inn en melding</translation> <translation id="2018630726571919839">Fortell meg en vits</translation> <translation id="2021864487439853900">Klikk for å låse opp</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Sørg for at telefonen er i nærheten, og at Bluetooth er slått på.</translation> <translation id="4895488851634969361">Batteriet er fullt.</translation> <translation id="490375751687810070">Vertikal</translation> -<translation id="4905614135390995787">Hurtigtasten for å slå høykontrastmodus av eller på er endret. Bruk <ph name="NEW_SHORTCUT" /> i stedet for <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % batteri</translation> <translation id="4917385247580444890">Sterkt</translation> <translation id="4918086044614829423">Godta</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Koble til telefonens Wi-Fi-sone, demp og finn enheten, og se nylige Chrome-faner som er åpne på telefonen</translation> <translation id="6670153871843998651">Skrivebord 3</translation> <translation id="6671495933530132209">Kopiér bildet</translation> -<translation id="6691659475504239918">Søk + Shift + H</translation> <translation id="6692996468359469499">Få informasjon tilknyttet det du har merket</translation> <translation id="6696025732084565524">Det avtakbare tastaturet trenger en kritisk oppdatering</translation> <translation id="6700713906295497288">IME-menyknappen</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index ae3fda4..bfe0295b 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ନବୀନତମ <ph name="SYSTEM_APP_NAME" /> ଅପ୍ଡେଟ୍ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ</translation> <translation id="1995660704900986789">ପାୱାର୍ ଅଫ୍</translation> <translation id="1998100899771863792">ବର୍ତ୍ତମାନର ଡେସ୍କ</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">ଏକ ମେସେଜ୍ ଟାଇପ୍ କରନ୍ତୁ</translation> <translation id="2018630726571919839">ମୋତେ ଏକ ଜୋକ୍ କୁହନ୍ତୁ</translation> <translation id="2021864487439853900">ଅନଲକ୍ କରିବାକୁ କ୍ଲିକ୍ କରନ୍ତୁ</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">ସଂଜ୍ଞା</translation> <translation id="3510164367642747937">ମାଉସ୍ କର୍ସର୍ ହାଇଲାଇଟ୍ କରନ୍ତୁ</translation> <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> ଦ୍ୱାରା ଆକାଉଣ୍ଟ ପରିଚାଳିତ ହେଉଛି</translation> +<translation id="3552189655002856821">ୱାଇ-ଫାଇ ବନ୍ଦ ଅଛି</translation> <translation id="3563775809269155755">ହଟସ୍ପଟକୁ ସକ୍ଷମ କରନ୍ତୁ</translation> <translation id="3571734092741541777">ସେଟ୍ ଅପ୍</translation> <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />"ରେ ପୁଣି ପରିବର୍ତ୍ତନ କରନ୍ତୁ (ପୁନରାରମ୍ଭର ଆବଶ୍ୟକତା ଅଛି)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">ଭଏସ୍ ଇନ୍ପୁଟ୍</translation> <translation id="3900355044994618856">ଆପଣଙ୍କ ଅବଧି <ph name="SESSION_TIME_REMAINING" />ରେ ସମାପ୍ତ ହେବ</translation> <translation id="3901991538546252627"><ph name="NAME" />କୁ ସଂଯୋଗ ହେଉଛି</translation> +<translation id="3923494859158167397">କୌଣସି ମୋବାଇଲ ନେଟୱାର୍କ ସେଟ୍ ଅପ୍ କରାଯାଇନାହିଁ</translation> <translation id="3943857333388298514">ପେଷ୍ଟ କରନ୍ତୁ</translation> <translation id="394485226368336402">ଅଡିଓ ସେଟିଂସ୍</translation> <translation id="3945319193631853098">ସେଟ୍ ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ</translation> @@ -379,6 +380,7 @@ <translation id="4195877955194704651">ସ୍ଵଚାଳିତ କ୍ଲିକ୍ ବଟନ୍</translation> <translation id="4197790712631116042">ବନ୍ଦ</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> ଉପଲବ୍ଧ ନାହିଁ।</translation> +<translation id="4209973997261364186">ୱାଇ-ଫାଇ ଚାଲୁ ଅଛି</translation> <translation id="4212472694152630271">PINକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation> <translation id="4215497585250573029">VPN ସେଟିଂସ୍</translation> <translation id="4217571870635786043">ଶ୍ରୁତଲିଖନ</translation> @@ -463,7 +465,6 @@ <translation id="4890408602550914571">ଆପଣଙ୍କ ଫୋନ୍ ନିକଟରେ ଅଛି ଏବଂ ସେଥିରେ ବ୍ଲୁଟୁଥ୍ ଚାଲୁ ଅଛି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ।</translation> <translation id="4895488851634969361">ବ୍ୟାଟେରୀ ପୂର୍ଣ୍ଣ ଅଟେ।</translation> <translation id="490375751687810070">ଭୂଲମ୍ଵ</translation> -<translation id="4905614135390995787">ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ ମୋଡ୍କୁ ଟୋଗଲ୍ କରିବାକୁ ସର୍ଟକଟ୍ ପରିବର୍ତ୍ତନ ହୋଇଛି। ଦୟାକରି <ph name="OLD_SHORTCUT" /> ପରିବର୍ତ୍ତେ <ph name="NEW_SHORTCUT" /> ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% ବ୍ୟାଟେରୀ</translation> <translation id="4917385247580444890">ଦୃଢ଼</translation> <translation id="4918086044614829423">ସ୍ୱୀକାର କରନ୍ତୁ</translation> @@ -555,6 +556,7 @@ <translation id="5689633613396158040">ନାଇଟ୍ ଲାଇଟ୍ କମ୍ ଆଲୋକରେ ଆପଣଙ୍କର ସ୍କ୍ରିନକୁ ଦେଖିବା କିମ୍ବା ପଢ଼ିବା ସହଜ କରିଥାଏ। କେଉଁ ସମୟରେ ନାଇଟ୍ ଲାଇଟ୍ ଚାଲୁ କରାଯିବ କିମ୍ବା ଏହାକୁ ସମ୍ପୂର୍ଣ୍ଣ ରୂପେ ବନ୍ଦ କରାଯିବ ତାହା ବଦଳାଇବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।</translation> <translation id="5691772641933328258">ଟିପ ଚିହ୍ନ ଚିହ୍ନଟ ହେଲାନାହିଁ</translation> <translation id="5710450975648804523">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ" ଚାଲୁ ଅଛି</translation> +<translation id="571295407079589142">ମୋବାଇଲ ଡାଟା ବନ୍ଦ ଅଛି</translation> <translation id="573413375004481890">ଏହି ଡିଭାଇସ୍ ଆପଣଙ୍କର ସମସ୍ତ ଡିସ୍ପ୍ଲେକୁ ସମର୍ଥନ କରିପାରିଲା ନାହିଁ, ତେଣୁ ଗୋଟିଏକୁ ବିଚ୍ଛିନ୍ନ କରିଦିଆଯାଇଛି</translation> <translation id="574392208103952083">ମଧ୍ୟମ</translation> <translation id="5744083938413354016">ଟାପ୍ କରି ଟାଣନ୍ତୁ</translation> @@ -669,7 +671,6 @@ <translation id="6667908387435388584">ଆପଣଙ୍କ ଫୋନର ହଟସ୍ପଟ୍ ସହିତ ସଂଯୋଗ କରନ୍ତୁ, ଆପଣଙ୍କର ଡିଭାଇସକୁ ନୀରବ କରି ଏହାକୁ ଲୋକେଟ୍ କରନ୍ତୁ ଏବଂ ଆପଣଙ୍କ ଫୋନରେ ବର୍ତ୍ତମାନ ଖୋଲାଯାଇଥିବା Chrome ଟାବଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ</translation> <translation id="6670153871843998651">ଡେସ୍କ 3</translation> <translation id="6671495933530132209">ଛବି କପି କରନ୍ତୁ</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">ଆପଣଙ୍କ ଚୟନ ସମ୍ବନ୍ଧିତ ସୂଚନା ପାଆନ୍ତୁ</translation> <translation id="6696025732084565524">ଆପଣଙ୍କର ଅଲଗା ହୋଇପାରୁଥିବା କୀବୋର୍ଡରେ ଏକ ମହତ୍ତ୍ୱପୂର୍ଣ୍ଣ ଅପ୍ଡେଟ୍ ଆବଶ୍ୟକ</translation> <translation id="6700713906295497288">IME ମେନୁ ବଟନ୍</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 5e33870d..db0d14c6 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ਨਵੀਨਤਮ <ph name="SYSTEM_APP_NAME" /> ਅੱਪਡੇਟ ਬਾਰੇ ਹੋਰ ਜਾਣੋ</translation> <translation id="1995660704900986789">ਪਾਵਰ ਬੰਦ ਕਰੋ</translation> <translation id="1998100899771863792">ਮੌਜੂਦਾ ਡੈਸਕ</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">ਕੋਈ ਸੁਨੇਹਾ ਟਾਈਪ ਕਰੋ</translation> <translation id="2018630726571919839">ਮੈਨੂੰ ਕੋਈ ਚੁਟਕਲਾ ਸੁਣਾਓ</translation> <translation id="2021864487439853900">ਅਣਲਾਕ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਹਾਡਾ ਫ਼ੋਨ ਨਜ਼ਦੀਕ ਹੈ ਅਤੇ ਉਸਦਾ ਬਲੂਟੁੱਥ ਚਾਲੂ ਹੈ।</translation> <translation id="4895488851634969361">ਬੈਟਰੀ ਪੂਰੀ ਭਰੀ ਹੈ।</translation> <translation id="490375751687810070">ਖੜ੍ਹਵਾਂ</translation> -<translation id="4905614135390995787">ਉੱਚ ਵਖਰੇਵਾਂ ਮੋਡ ਨੂੰ ਟੌਗਲ ਕਰਨ ਵਾਲਾ ਸ਼ਾਰਟਕੱਟ ਬਦਲ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ <ph name="OLD_SHORTCUT" /> ਦੀ ਬਜਾਏ <ph name="NEW_SHORTCUT" /> ਵਰਤੋ।</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% ਬੈਟਰੀ</translation> <translation id="4917385247580444890">ਮਜ਼ਬੂਤ</translation> <translation id="4918086044614829423">ਸਵੀਕਾਰ ਕਰੋ</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">ਆਪਣੇ ਫ਼ੋਨ ਦੇ ਹੌਟਸਪੌਟ ਨਾਲ ਕਨੈਕਟ ਕਰੋ, ਖਮੋਸ਼ ਕਰੋ ਅਤੇ ਆਪਣੇ ਡੀਵਾਈਸ ਦਾ ਪਤਾ ਲਗਾਓ ਅਤੇ ਆਪਣੇ ਫ਼ੋਨ 'ਤੇ ਖੁੱਲ੍ਹੀਆਂ ਹੋਈਆਂ ਹਾਲੀਆ Chrome ਟੈਬਾਂ ਨੂੰ ਦੇਖੋ</translation> <translation id="6670153871843998651">ਡੈਸਕ 3</translation> <translation id="6671495933530132209">ਚਿੱਤਰ ਕਾਪੀ ਕਰੋ</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">ਆਪਣੀ ਚੋਣ ਨਾਲ ਸੰਬੰਧਿਤ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੋ</translation> <translation id="6696025732084565524">ਤੁਹਾਡੇ ਵੱਖ ਹੋਣਯੋਗ ਕੀ-ਬੋਰਡ ਨੂੰ ਅਤਿ ਜ਼ਰੂਰੀ ਅੱਪਡੇਟ ਦੀ ਲੋੜ ਹੈ</translation> <translation id="6700713906295497288">IME ਮੀਨੂ ਬਟਨ</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb index e996be79..6489ba5 100644 --- a/ash/strings/ash_strings_pl.xtb +++ b/ash/strings/ash_strings_pl.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Więcej informacji o najnowszej aktualizacji <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Wyłącz</translation> <translation id="1998100899771863792">Bieżące biurko</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Wpisz wiadomość</translation> <translation id="2018630726571919839">Opowiedz mi kawał</translation> <translation id="2021864487439853900">Kliknij, aby odblokować</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Sprawdź, czy telefon jest w pobliżu i ma włączony Bluetooth.</translation> <translation id="4895488851634969361">Bateria jest pełna.</translation> <translation id="490375751687810070">Pionowo</translation> -<translation id="4905614135390995787">Zmieniliśmy skrót, który włącza i wyłącza tryb wysokiego kontrastu. Użyj <ph name="NEW_SHORTCUT" /> zamiast <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Bateria: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Silny</translation> <translation id="4918086044614829423">Akceptuj</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Możesz połączyć się z punktem dostępu na telefonie, wyciszyć i znaleźć telefon oraz wyświetlić ostatnie karty Chrome otwarte na telefonie</translation> <translation id="6670153871843998651">Biurko 3</translation> <translation id="6671495933530132209">Kopiuj grafikę</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Uzyskiwanie informacji związanych z zaznaczoną treścią</translation> <translation id="6696025732084565524">Odłączana klawiatura wymaga krytycznej aktualizacji</translation> <translation id="6700713906295497288">Przycisk menu IME</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb index 14cb023..c0dda2c 100644 --- a/ash/strings/ash_strings_pt-BR.xtb +++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Saiba mais sobre a última atualização do <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Desligar</translation> <translation id="1998100899771863792">Espaço de trabalho atual</translation> -<translation id="2012624427112548395">Ctrl+Pesquisa+H</translation> <translation id="2016340657076538683">Digite uma mensagem</translation> <translation id="2018630726571919839">Conte uma piada</translation> <translation id="2021864487439853900">Clique para desbloquear</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Confira se o smartphone está por perto e com o Bluetooth ativado.</translation> <translation id="4895488851634969361">A bateria está carregada.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">O atalho para alternar o modo de alto contraste foi alterado. Use <ph name="NEW_SHORTCUT" /> em vez de <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% de bateria</translation> <translation id="4917385247580444890">Forte</translation> <translation id="4918086044614829423">Aceitar</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Conecte-se ao ponto de acesso do smartphone, silencie e localize o aparelho e veja as guias recentes do Chrome abertas no dispositivo</translation> <translation id="6670153871843998651">Espaço de trabalho 3</translation> <translation id="6671495933530132209">Copiar imagem</translation> -<translation id="6691659475504239918">Pesquisa+Shift+H</translation> <translation id="6692996468359469499">Veja informações relacionadas à sua seleção</translation> <translation id="6696025732084565524">Seu teclado removível precisa de uma atualização crítica</translation> <translation id="6700713906295497288">Botão do menu do IME</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb index d8e2362..527a071 100644 --- a/ash/strings/ash_strings_pt-PT.xtb +++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Saiba mais sobre a mais recente atualização do <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="1995660704900986789">Desligar</translation> <translation id="1998100899771863792">Espaço de trabalho atual</translation> -<translation id="2012624427112548395">Ctrl + Pesquisa + H</translation> <translation id="2016340657076538683">Escrever uma mensagem</translation> <translation id="2018630726571919839">Conta-me uma anedota</translation> <translation id="2021864487439853900">Clicar para desbloquear</translation> @@ -381,7 +380,7 @@ <translation id="4195877955194704651">Botão de cliques automáticos</translation> <translation id="4197790712631116042">Desativado</translation> <translation id="4201033867194214117">A funcionalidade <ph name="FEATURE_NAME" /> não está disponível.</translation> -<translation id="4209973997261364186">O Wi-Fi está ativadao</translation> +<translation id="4209973997261364186">O Wi-Fi está ativado</translation> <translation id="4212472694152630271">Mudar para PIN</translation> <translation id="4215497585250573029">Definições da VPN</translation> <translation id="4217571870635786043">Ditado</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Certifique-se de que o telemóvel está próximo e com o Bluetooth ativado.</translation> <translation id="4895488851634969361">A bateria está carregada.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">O atalho para ativar/desativar o Modo de alto contraste foi alterado. Utilize <ph name="NEW_SHORTCUT" /> em vez de <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% de bateria</translation> <translation id="4917385247580444890">Forte</translation> <translation id="4918086044614829423">Aceitar</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Ligue-se à zona Wi-Fi do seu telemóvel, silencie e localize o seu dispositivo, e veja os separadores recentes do Chrome abertos no telemóvel.</translation> <translation id="6670153871843998651">Secretária 3</translation> <translation id="6671495933530132209">Copiar imagem</translation> -<translation id="6691659475504239918">Pesquisa + Shift + H</translation> <translation id="6692996468359469499">Obtenha informações relacionadas com a sua seleção</translation> <translation id="6696025732084565524">O teclado amovível necessita de uma atualização crítica</translation> <translation id="6700713906295497288">Botão de menu IME</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb index 7ca12b0d..08cef09 100644 --- a/ash/strings/ash_strings_ro.xtb +++ b/ash/strings/ash_strings_ro.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Află mai multe despre cea mai recentă actualizare <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Oprește alimentarea</translation> <translation id="1998100899771863792">Desktopul actual</translation> -<translation id="2012624427112548395">Ctrl + tasta de căutare + H</translation> <translation id="2016340657076538683">Scrie un mesaj</translation> <translation id="2018630726571919839">Spune-mi o glumă</translation> <translation id="2021864487439853900">Dă clic pentru deblocare</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Asigură-te că telefonul este în apropiere, cu funcția Bluetooth activată.</translation> <translation id="4895488851634969361">Bateria este încărcată complet.</translation> <translation id="490375751687810070">Vertical</translation> -<translation id="4905614135390995787">Comanda rapidă pentru comutarea modului Contrast ridicat s-a modificat. Folosește <ph name="NEW_SHORTCUT" /> în loc de <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Nivelul bateriei: <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="4917385247580444890">Puternic</translation> <translation id="4918086044614829423">Acceptă</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Conectează-te la hotspotul telefonului, localizează dispozitivul și dezactivează-i sunetul și vezi filele Chrome recente deschise pe telefon</translation> <translation id="6670153871843998651">Desktop 3</translation> <translation id="6671495933530132209">Copiați imaginea</translation> -<translation id="6691659475504239918">Tasta de căutare + Shift + H</translation> <translation id="6692996468359469499">Obține informații despre selecție</translation> <translation id="6696025732084565524">Tastatura detașabilă necesită o actualizare esențială</translation> <translation id="6700713906295497288">Butonul de meniu IME</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index b1fc01c..2720579 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Подробнее о последнем обновлении <ph name="SYSTEM_APP_NAME" />…</translation> <translation id="1995660704900986789">Выключить</translation> <translation id="1998100899771863792">Текущий рабочий стол</translation> -<translation id="2012624427112548395">CTRL + ПОИСК + H</translation> <translation id="2016340657076538683">Введите сообщение</translation> <translation id="2018630726571919839">Расскажи анекдот</translation> <translation id="2021864487439853900">Нажать, чтобы разблокировать</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Убедитесь, что телефон находится рядом и на нем включена передача данных по Bluetooth.</translation> <translation id="4895488851634969361">Батарея полностью заряжена.</translation> <translation id="490375751687810070">Вертикально</translation> -<translation id="4905614135390995787">Изменились быстрые клавиши для управления режимом высокой контрастности. Используйте <ph name="NEW_SHORTCUT" /> вместо <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Батарея заряжена на <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="4917385247580444890">Сильный</translation> <translation id="4918086044614829423">Принять</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Подключайте устройство к точке доступа на телефоне, отключайте звук телефона, определяйте его местоположение и просматривайте последние вкладки, открытые на нем.</translation> <translation id="6670153871843998651">Рабочий стол 3</translation> <translation id="6671495933530132209">Копировать изображение</translation> -<translation id="6691659475504239918">ПОИСК + SHIFT + H</translation> <translation id="6692996468359469499">Получайте информацию об объектах на экране</translation> <translation id="6696025732084565524">Необходимо обновить внешнюю клавиатуру</translation> <translation id="6700713906295497288">Кнопка меню редактора методов ввода</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb index 165a3ed..6d217df8 100644 --- a/ash/strings/ash_strings_si.xtb +++ b/ash/strings/ash_strings_si.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">නවතම <ph name="SYSTEM_APP_NAME" /> යාවත්කාලීන කිරීම ගැන තව දැන ගන්න</translation> <translation id="1995660704900986789">බල රහිත කරන්න</translation> <translation id="1998100899771863792">වත්මන් වැඩතලය</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">පණිවිඩයක් ටයිප් කරන්න</translation> <translation id="2018630726571919839">මට විහිළුවක් කියන්න</translation> <translation id="2021864487439853900">අගුලු හැරීමට ක්ලික් කරන්න</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">ඔබගේ දුරකථනය අවට ඇති බව සහ බ්ලූටූත් ක්රියාත්මක කර ඇති බව සහතික කර ගන්න.</translation> <translation id="4895488851634969361">බැටරීය සම්පූර්ණයි.</translation> <translation id="490375751687810070">සිරස්</translation> -<translation id="4905614135390995787">ඉහළ ප්රභේදන ප්රකාරය ටොගල කිරීමේ කෙටි මග වෙනස් කර ඇත. කරුණාකර <ph name="NEW_SHORTCUT" /> <ph name="OLD_SHORTCUT" /> වෙනුවට භාවිත කරන්න.</translation> <translation id="490788395437447240">බැටරිය <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">ශක්තිමත්</translation> <translation id="4918086044614829423">පිළිගන්න</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">ඔබගේ දුරකථනයේ හොට්ස්පොට් වෙත සම්බන්ධ වන්න, නිශ්ශබ්ද කරන්න සහ ඔබගේ උපාංගය සොයා ගන්න සහ ඔබගේ දුරකථනයේ විවෘත කර ඇති මෑත Chrome ටැබ් බලන්න</translation> <translation id="6670153871843998651">3 වෙනි මේසය</translation> <translation id="6671495933530132209">රූපය පිටපත් කරන්න</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">ඔබේ තේරීමට අදාළ තොරතුරු ලබා ගන්න</translation> <translation id="6696025732084565524">ඔබේ ගැලවීමට හැකි යතුරු පුවරුවට අවදානම් යාවත්කාලීනයක් අවශ්යයි</translation> <translation id="6700713906295497288">IME මෙනු බොත්තම</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 6f68154..88f60ae7 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Ďalšie informácie o najnovšej aktualizácii aplikácie <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Vypnúť</translation> <translation id="1998100899771863792">Aktuálna plocha</translation> -<translation id="2012624427112548395">Ctrl+Hľadať+H</translation> <translation id="2016340657076538683">Zadajte správu</translation> <translation id="2018630726571919839">Povedz mi vtip</translation> <translation id="2021864487439853900">Odomknite kliknutím</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Telefón so zapnutým rozhraním Bluetooth majte nablízku.</translation> <translation id="4895488851634969361">Batéria je úplne nabitá.</translation> <translation id="490375751687810070">Na výšku</translation> -<translation id="4905614135390995787">Skratka na prepnutie režimu vysokého kontrastu sa zmenila. Namiesto skratky <ph name="OLD_SHORTCUT" /> používajte kombináciu klávesov <ph name="NEW_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % batérie</translation> <translation id="4917385247580444890">Silné</translation> <translation id="4918086044614829423">Prijať</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Pripojte sa k hotspotu telefónu, vypnite zvuk zariadenia, lokalizujte ho a zobrazte si nedávne karty Chromu otvorené v telefóne</translation> <translation id="6670153871843998651">3. plocha</translation> <translation id="6671495933530132209">Kopírovať obrázok</translation> -<translation id="6691659475504239918">Hľadať+Shift+H</translation> <translation id="6692996468359469499">Získajte informácie súvisiace s vaším výberom</translation> <translation id="6696025732084565524">Odoberateľná klávesnica potrebuje kritickú aktualizáciu</translation> <translation id="6700713906295497288">Tlačidlo ponuky IME</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index d8c97391..734ccef 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Več informacij o najnovejši posodobitvi za <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Izklop</translation> <translation id="1998100899771863792">Trenutno namizje</translation> -<translation id="2012624427112548395">Ctrl+ tipka za iskanje + H</translation> <translation id="2016340657076538683">Vnesite sporočilo</translation> <translation id="2018630726571919839">Povej mi šalo</translation> <translation id="2021864487439853900">Kliknite za odklepanje</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Preverite, ali imate telefon v bližini in ima vklopljeno povezavo Bluetooth.</translation> <translation id="4895488851634969361">Akumulator je poln.</translation> <translation id="490375751687810070">Navpično</translation> -<translation id="4905614135390995787">Bližnjica za preklop na visokokontrastni način se je spremenila. Uporabite <ph name="NEW_SHORTCUT" /> namesto <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % energije akumulatorja</translation> <translation id="4917385247580444890">Močan</translation> <translation id="4918086044614829423">Sprejmi</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Vzpostavite povezavo z dostopno točko telefona, utišajte in najdite napravo ter si oglejte nedavno odprte zavihke v Chromu v telefonu.</translation> <translation id="6670153871843998651">Namizje 3</translation> <translation id="6671495933530132209">Kopiraj sliko</translation> -<translation id="6691659475504239918">Tipka za iskanje + Shift + H</translation> <translation id="6692996468359469499">Prejemanje podatkov, povezanih z izborom</translation> <translation id="6696025732084565524">Snemljiva tipkovnica potrebuje nujno posodobitev</translation> <translation id="6700713906295497288">Menijski gumb UNV-ja</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index 70e7e4d..99f321b 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Mëso më shumë rreth përditësimit të fundit të <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Fik</translation> <translation id="1998100899771863792">Tavolina aktuale e punës</translation> -<translation id="2012624427112548395">Ctrl+Kërko+H</translation> <translation id="2016340657076538683">Shkruaj një mesazh</translation> <translation id="2018630726571919839">Më trego një barsoletë</translation> <translation id="2021864487439853900">Kliko për ta shkyçur</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Sigurohu që telefoni yt të jetë pranë dhe ta ketë të aktivizuar Bluetooth-in.</translation> <translation id="4895488851634969361">Bateria është plot.</translation> <translation id="490375751687810070">Vertikal</translation> -<translation id="4905614135390995787">Shkurtorja për të ndryshuar modalitetin e kontrastit të lartë ka ndryshuar. Përdor <ph name="NEW_SHORTCUT" /> në vend të <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Bateria <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">I fortë</translation> <translation id="4918086044614829423">Prano</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Lidhu me zonën e qasjes për internet të telefonit tënd, vendos në heshtje dhe lokalizo pajisjen tënde, si dhe shiko skedat e fundit të Chrome të hapura në telefonin tënd</translation> <translation id="6670153871843998651">Tavolina e punës 3</translation> <translation id="6671495933530132209">Kopjo imazhin</translation> -<translation id="6691659475504239918">Kërko+Shift+H</translation> <translation id="6692996468359469499">Merr informacion në lidhje me përzgjedhjen tënde</translation> <translation id="6696025732084565524">Tastiera jote e shkëputshme ka nevojë për një përditësim me rëndësi</translation> <translation id="6700713906295497288">Butoni i menysë IME</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb index ee0f35f9..d69e0b4 100644 --- a/ash/strings/ash_strings_sr-Latn.xtb +++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Saznajte više o najnovijem ažuriranju za: <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Isključi</translation> <translation id="1998100899771863792">Aktuelna radna površina</translation> -<translation id="2012624427112548395">Ctrl + taster za pretragu + H</translation> <translation id="2016340657076538683">Unesite poruku</translation> <translation id="2018630726571919839">Ispričaj mi vic.</translation> <translation id="2021864487439853900">Kliknite da biste otključali</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Uverite se da je telefon u blizini i da je Bluetooth uključen.</translation> <translation id="4895488851634969361">Baterija je puna.</translation> <translation id="490375751687810070">Vertikalno</translation> -<translation id="4905614135390995787">Prečica za uključivanje i isključivanje režima visokog kontrasta je promenjena. Koristite <ph name="NEW_SHORTCUT" /> umesto <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Nivo baterije je <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Jak</translation> <translation id="4918086044614829423">Prihvati</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Povežite se sa hotspotom telefona, isključite zvuk uređaja i pronađite ga i pregledajte nedavne Chrome kartice otvorene na telefonu</translation> <translation id="6670153871843998651">Radna površina 3</translation> <translation id="6671495933530132209">Kopiraj sliku</translation> -<translation id="6691659475504239918">Taster za pretragu + Shift + H</translation> <translation id="6692996468359469499">Pronađite informacije u vezi sa vašim izborom</translation> <translation id="6696025732084565524">Treba da instalirate važno ažuriranje za odvojivu tastaturu</translation> <translation id="6700713906295497288">Dugme IME menija</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb index b114b578..691e36a 100644 --- a/ash/strings/ash_strings_sr.xtb +++ b/ash/strings/ash_strings_sr.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Сазнајте више о најновијем ажурирању за: <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Искључи</translation> <translation id="1998100899771863792">Актуелна радна површина</translation> -<translation id="2012624427112548395">Ctrl + тастер за претрагу + H</translation> <translation id="2016340657076538683">Унесите поруку</translation> <translation id="2018630726571919839">Испричај ми виц.</translation> <translation id="2021864487439853900">Кликните да бисте откључали</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Уверите се да је телефон у близини и да је Bluetooth укључен.</translation> <translation id="4895488851634969361">Батерија је пуна.</translation> <translation id="490375751687810070">Вертикално</translation> -<translation id="4905614135390995787">Пречица за укључивање и искључивање режима високог контраста је промењена. Користите <ph name="NEW_SHORTCUT" /> уместо <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Ниво батерије је <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Јак</translation> <translation id="4918086044614829423">Прихвати</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Повежите се са хотспотом телефона, искључите звук уређаја и пронађите га и прегледајте недавне Chrome картице отворене на телефону</translation> <translation id="6670153871843998651">Радна површина 3</translation> <translation id="6671495933530132209">Копирај слику</translation> -<translation id="6691659475504239918">Тастер за претрагу + Shift + H</translation> <translation id="6692996468359469499">Пронађите информације у вези са вашим избором</translation> <translation id="6696025732084565524">Треба да инсталирате важно ажурирање за одвојиву тастатуру</translation> <translation id="6700713906295497288">Дугме IME менија</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index d72d2b5..8e10de0 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Läs mer om den senaste uppdateringen av <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Stäng av</translation> <translation id="1998100899771863792">Aktuellt skrivbord</translation> -<translation id="2012624427112548395">Ctrl+Sök+H</translation> <translation id="2016340657076538683">Skriv ett meddelande</translation> <translation id="2018630726571919839">Dra ett skämt</translation> <translation id="2021864487439853900">Klicka för att låsa upp</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Kontrollera att telefonen finns i närheten och att Bluetooth är aktiverat på den.</translation> <translation id="4895488851634969361">Batteriet är fullt.</translation> <translation id="490375751687810070">Vertikal</translation> -<translation id="4905614135390995787">Kortkommandot för att aktivera och inaktivera högkontrastläget har ändrats. Använd <ph name="NEW_SHORTCUT" /> i stället för <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> % batterinivå</translation> <translation id="4917385247580444890">Stark</translation> <translation id="4918086044614829423">Acceptera</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Anslut till telefonens surfzon, stäng av ljudet på och hitta din enhet, samt visa de senaste Chrome-flikarna som öppnats på telefonen</translation> <translation id="6670153871843998651">Skrivbord 3</translation> <translation id="6671495933530132209">Kopiera bild</translation> -<translation id="6691659475504239918">Sök+Skift+H</translation> <translation id="6692996468359469499">Få information utifrån det du markerar</translation> <translation id="6696025732084565524">Det behövs en viktig uppdatering till ditt frånkopplingsbara tangentbord</translation> <translation id="6700713906295497288">IME-menyknapp</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index a0cdb1fe..a8d08112 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Pata maelezo zaidi kuhusu sasisho la hivi majuzi la <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Zima</translation> <translation id="1998100899771863792">Eneokazi la sasa</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Andika ujumbe</translation> <translation id="2018630726571919839">Nipe kichekesho</translation> <translation id="2021864487439853900">Bofya ili ufungue</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Hakikisha kwamba simu yako iko karibu na umewasha Bluetooth.</translation> <translation id="4895488851634969361">Betri imejaa.</translation> <translation id="490375751687810070">Wima</translation> -<translation id="4905614135390995787">Njia ya mkato ya kugeuza Hali ya Utofautishaji wa Juu imebadilika. Tafadhali tumia <ph name="NEW_SHORTCUT" /> badala ya <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Kiasi cha chaji ni <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Thabiti</translation> <translation id="4918086044614829423">Kubali</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Unganisha kwenye mtandao pepe wa simu yako, zima sauti ya kifaa chako na ujue kilipo na uangalie vichupo vya Chrome vilivyofunguliwa kwenye simu yako</translation> <translation id="6670153871843998651">Eneokazi la 3</translation> <translation id="6671495933530132209">Nakili picha</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Pata maelezo yanayohusiana na chaguo lako</translation> <translation id="6696025732084565524">Kibodi unayoweza kutenganisha inahitaji sasisho muhimu</translation> <translation id="6700713906295497288">Kitufe cha menyu ya IME</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb index 3f5aad6..ccb9ecc 100644 --- a/ash/strings/ash_strings_ta.xtb +++ b/ash/strings/ash_strings_ta.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">சமீபத்திய <ph name="SYSTEM_APP_NAME" /> புதுப்பிப்பைப் பற்றி மேலும் அறிக</translation> <translation id="1995660704900986789">முடக்கு</translation> <translation id="1998100899771863792">தற்போதைய டெஸ்க்</translation> -<translation id="2012624427112548395">Ctrl+தேடல்+H</translation> <translation id="2016340657076538683">செய்தியை உள்ளிடவும்</translation> <translation id="2018630726571919839">ஒரு ஜோக் சொல்லு</translation> <translation id="2021864487439853900">அன்லாக் செய்யக் கிளிக் செய்க</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">உங்கள் மொபைல் அருகில் இருப்பதையும் அதில் புளூடூத் இயக்கப்பட்டிருப்பதையும் உறுதிப்படுத்திக் கொள்ளவும்.</translation> <translation id="4895488851634969361">பேட்டரி நிரம்பியது.</translation> <translation id="490375751687810070">செங்குத்து</translation> -<translation id="4905614135390995787">அதிக ஒளி மாறுபாட்டுப் பயன்முறையை மாற்றும் ஷார்ட்கட் மாற்றப்பட்டது. <ph name="OLD_SHORTCUT" />க்குப் பதிலாக, <ph name="NEW_SHORTCUT" />ஐப் பயன்படுத்தவும்.</translation> <translation id="490788395437447240">பேட்டரி: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">வலிமையானது</translation> <translation id="4918086044614829423">ஏற்கிறேன்</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">உங்கள் மொபைலின் ஹாட்ஸ்பாட்டுடன் இணைக்கலாம், சாதனத்தின் ஒலியை அடக்கி அது இருக்குமிடத்தைக் கண்டறியலாம், மொபைலில் திறந்த நிலையிலுள்ள சமீபத்திய Chrome தாவல்களைப் பார்க்கலாம்</translation> <translation id="6670153871843998651">மேசை 3</translation> <translation id="6671495933530132209">படத்தை நகலெடு</translation> -<translation id="6691659475504239918">தேடல்+Shift+H</translation> <translation id="6692996468359469499">திரையில் நீங்கள் தேர்ந்தெடுத்தது தொடர்பாக தகவல்களைப் பெறவும்</translation> <translation id="6696025732084565524">உங்கள் அகற்றத்தக்க கீபோர்டுக்கு முக்கியப் புதுப்பிப்பு வேண்டும்</translation> <translation id="6700713906295497288">IME மெனு பொத்தான்</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index da570585..852a4fad5 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">తాజా <ph name="SYSTEM_APP_NAME" /> అప్డేట్ గురించి మరింత తెలుసుకోండి</translation> <translation id="1995660704900986789">పవర్ ఆఫ్ చేయి</translation> <translation id="1998100899771863792">ప్రస్తుత డెస్క్</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">సందేశాన్ని టైప్ చేయండి</translation> <translation id="2018630726571919839">ఒక జోక్ చెప్పు</translation> <translation id="2021864487439853900">అన్లాక్ కోసం క్లిక్ చేయండి</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">నిర్వచనం</translation> <translation id="3510164367642747937">మౌస్ కర్సర్ను హైలైట్ చేయి</translation> <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> ద్వారా ఖాతా నిర్వహించబడుతోంది</translation> +<translation id="3552189655002856821">Wi-Fi ఆఫ్ చేయబడింది</translation> <translation id="3563775809269155755">హాట్స్పాట్ను ఎనేబుల్ చేయి</translation> <translation id="3571734092741541777">సెటప్ చేయి</translation> <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />"కు వెనుకకు మార్చండి (పునఃప్రారంభం అవసరం)</translation> @@ -350,6 +350,7 @@ <translation id="3899995891769452915">వాయిస్ ఇన్పుట్</translation> <translation id="3900355044994618856"><ph name="SESSION_TIME_REMAINING" /> తర్వాత మీ సెషన్ ముగుస్తుంది</translation> <translation id="3901991538546252627"><ph name="NAME" />కి కనెక్ట్ చేస్తోంది</translation> +<translation id="3923494859158167397">ఎలాంటి మొబైల్ నెట్వర్క్లు సెటప్ చేయబడలేదు</translation> <translation id="3943857333388298514">అతికించు</translation> <translation id="394485226368336402">ఆడియో సెట్టింగ్లు</translation> <translation id="3945319193631853098">సెటప్ను పూర్తి చేయడానికి ట్యాప్ చేయండి</translation> @@ -380,6 +381,7 @@ <translation id="4195877955194704651">ఆటోమేటిక్ క్లిక్ల బటన్</translation> <translation id="4197790712631116042">ఆఫ్</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> అందుబాటులో లేదు.</translation> +<translation id="4209973997261364186">Wi-Fi ఆన్ చేయబడింది</translation> <translation id="4212472694152630271">పిన్కి స్విచ్ చేయి</translation> <translation id="4215497585250573029">VPN సెట్టింగ్లు</translation> <translation id="4217571870635786043">డిక్టేషన్</translation> @@ -464,7 +466,6 @@ <translation id="4890408602550914571">మీ ఫోన్ సమీపంలోనే ఉండి, అలాగే బ్లూటూత్ ఆన్ చేయబడి ఉందని నిర్ధారించుకోండి.</translation> <translation id="4895488851634969361">బ్యాటరీ నిండింది.</translation> <translation id="490375751687810070">నిలువుగా ఉంది</translation> -<translation id="4905614135390995787">అధిక కాంట్రాస్ట్ మోడ్ను టోగుల్ చేయడానికి ఉన్న షార్ట్కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" /> ఉపయోగించండి.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% బ్యాటరీ</translation> <translation id="4917385247580444890">బలమైన</translation> <translation id="4918086044614829423">ఆమోదించు</translation> @@ -556,6 +557,7 @@ <translation id="5689633613396158040">రాత్రి కాంతి ఫీచర్ అనేది తక్కువ కాంతి ఉన్న సందర్భాలలో మీ స్క్రీన్ను స్పష్టంగా చూడటాన్ని లేదా చదవడాన్ని మరింత సులభతరం చేస్తుంది. నైట్ లైట్ ఆన్ చేసే సమయాన్ని మార్చడానికి నొక్కండి లేదా దాన్ని పూర్తిగా ఆపివేయండి.</translation> <translation id="5691772641933328258">వేలిముద్ర గుర్తించబడలేదు</translation> <translation id="5710450975648804523">'అంతరాయం కలిగించవద్దు' మోడ్ ఆన్లో ఉంది</translation> +<translation id="571295407079589142">మొబైల్ డేటా ఆఫ్ చేయబడింది</translation> <translation id="573413375004481890">ఈ పరికరం మీ అన్ని ప్రదర్శన స్క్రీన్లకు మద్దతు ఇవ్వలేదు, కాబట్టి ఒకటి డిస్కనెక్ట్ చేయబడింది</translation> <translation id="574392208103952083">మధ్యస్థం</translation> <translation id="5744083938413354016">నొక్కి లాగండి</translation> @@ -670,7 +672,6 @@ <translation id="6667908387435388584">మీ ఫోన్ హాట్స్పాట్కు కనెక్ట్ చేసి, సైలెంట్లో పెట్టి, మీ పరికరాన్ని కనుగొని, మీ ఫోన్లో ప్రస్తుతం తెరిచి ఉన్న Chrome ట్యాబ్లను చూడండి</translation> <translation id="6670153871843998651">డెస్క్ 3</translation> <translation id="6671495933530132209">చిత్రాన్ని కాపీ చేయి</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">మీ ఎంచుకున్న దానికి సంబంధించిన సమాచారాన్ని పొందండి</translation> <translation id="6696025732084565524">మీ తీసివేయగల కీబోర్డ్కి ఒక ముఖ్యమైన అప్డేట్ అవసరం</translation> <translation id="6700713906295497288">IME మెనూ బటన్</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb index 9c8dfc7..0028942 100644 --- a/ash/strings/ash_strings_th.xtb +++ b/ash/strings/ash_strings_th.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">ดูข้อมูลเพิ่มเติมเกี่ยวกับอัปเดตล่าสุดของ <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">ปิดเครื่อง</translation> <translation id="1998100899771863792">เดสก์ปัจจุบัน</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">พิมพ์ข้อความ</translation> <translation id="2018630726571919839">เล่าเรื่องตลกให้ฟังหน่อย</translation> <translation id="2021864487439853900">คลิกเพื่อปลดล็อก</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">ตรวจสอบว่าโทรศัพท์อยู่ใกล้ๆ และเปิดบลูทูธไว้</translation> <translation id="4895488851634969361">แบตเตอรี่เต็ม</translation> <translation id="490375751687810070">แนวตั้ง</translation> -<translation id="4905614135390995787">มีการเปลี่ยนแปลงแป้นพิมพ์ลัดสำหรับสลับโหมดคอนทราสต์สูง โปรดใช้ <ph name="NEW_SHORTCUT" /> แทน <ph name="OLD_SHORTCUT" /></translation> <translation id="490788395437447240">แบตเตอรี่ <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">แรง</translation> <translation id="4918086044614829423">ยอมรับ</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">เชื่อมต่อฮอตสปอตของโทรศัพท์ ปิดเสียงและระบุตำแหน่งของอุปกรณ์ ตลอดจนดูแท็บ Chrome ล่าสุดที่เปิดอยู่ในโทรศัพท์</translation> <translation id="6670153871843998651">เดสก์ที่ 3</translation> <translation id="6671495933530132209">คัดลอกรูปภาพ</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">ดูข้อมูลที่เกี่ยวข้องกับการเลือกของคุณ</translation> <translation id="6696025732084565524">แป้มพิมพ์ที่ถอดได้ต้องได้รับอัปเดตที่สำคัญ</translation> <translation id="6700713906295497288">ปุ่มเมนู IME</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb index 8c8b0df..3d25752 100644 --- a/ash/strings/ash_strings_tr.xtb +++ b/ash/strings/ash_strings_tr.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">En yeni <ph name="SYSTEM_APP_NAME" /> güncellemesi ile ilgili daha fazla bilgi edinin</translation> <translation id="1995660704900986789">Kapat</translation> <translation id="1998100899771863792">Geçerli masaüstü</translation> -<translation id="2012624427112548395">Ctrl+Arama+H</translation> <translation id="2016340657076538683">Mesaj yazın</translation> <translation id="2018630726571919839">Bana bir fıkra anlat</translation> <translation id="2021864487439853900">Kilidi açmak için tıklayın</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Telefonunuzun yakında olduğundan ve Bluetooth'un açık olduğundan emin olun.</translation> <translation id="4895488851634969361">Pil dolu.</translation> <translation id="490375751687810070">Dikey</translation> -<translation id="4905614135390995787">Yüksek Kontrast Modunu açma/kapatma kısayolu değişti. Lütfen <ph name="OLD_SHORTCUT" /> yerine <ph name="NEW_SHORTCUT" /> tuşlarını kullanın.</translation> <translation id="490788395437447240">%<ph name="BATTERY_PERCENTAGE" /> pil</translation> <translation id="4917385247580444890">Güçlü</translation> <translation id="4918086044614829423">Kabul et</translation> @@ -674,7 +672,6 @@ <translation id="6667908387435388584">Telefonunuzun hotspot'una bağlanın, cihazınızın sesini kapatın, yerini bulun ve telefonunuzda açık olan son Chrome sekmelerini görüntüleyin.</translation> <translation id="6670153871843998651">Çalışma Masası 3</translation> <translation id="6671495933530132209">Resmi kopyala</translation> -<translation id="6691659475504239918">Arama+Üst Karakter+H</translation> <translation id="6692996468359469499">Seçiminizle alakalı bilgi edinin</translation> <translation id="6696025732084565524">Çıkarılabilir klavyenizde kritik bir güncelleme yapılması gerekiyor</translation> <translation id="6700713906295497288">IME menü düğmesi</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb index c1c9d94..6186fe4b 100644 --- a/ash/strings/ash_strings_uk.xtb +++ b/ash/strings/ash_strings_uk.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Докладніше про останнє оновлення додатка <ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Вимкнути</translation> <translation id="1998100899771863792">Поточний робочий стіл</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Введіть повідомлення</translation> <translation id="2018630726571919839">Розкажи жарт</translation> <translation id="2021864487439853900">Натисніть, щоб розблокувати</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Переконайтеся, що ваш телефон поблизу, а Bluetooth увімкнено.</translation> <translation id="4895488851634969361">Акумулятор заряджений.</translation> <translation id="490375751687810070">Вертикально</translation> -<translation id="4905614135390995787">Комбінація клавіш для керування режимом високого контрасту змінилася. Тепер це <ph name="NEW_SHORTCUT" />, а не <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240">Заряд акумулятора – <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Потужний</translation> <translation id="4918086044614829423">Прийняти</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Підключайтеся до точки доступу телефона, вимикайте звук на пристрої, визначайте його місцезнаходження та переглядайте останні вкладки Chrome, відкриті на телефоні</translation> <translation id="6670153871843998651">Робочий стіл 3</translation> <translation id="6671495933530132209">Копіювати зображення</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Отримати інформацію, пов'язану з виділеним текстом</translation> <translation id="6696025732084565524">Змінну клавіатуру потрібно оновити</translation> <translation id="6700713906295497288">Кнопка меню IME</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb index fa6a754..f6008b7 100644 --- a/ash/strings/ash_strings_ur.xtb +++ b/ash/strings/ash_strings_ur.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">تازہ ترین <ph name="SYSTEM_APP_NAME" /> اپ ڈیٹ کے بارے میں مزید جانیں</translation> <translation id="1995660704900986789">پاور آف کریں</translation> <translation id="1998100899771863792">موجودہ ڈیسک</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">پیغام ٹائپ کریں</translation> <translation id="2018630726571919839">مجھے کوئی لطیفہ سنائيں</translation> <translation id="2021864487439853900">غیر مقفل کرنے کے لیے کلک کریں</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">وضاحت</translation> <translation id="3510164367642747937">ماؤس کا کرسر نمایاں کریں</translation> <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> کے زیر نظم اکاؤنٹ</translation> +<translation id="3552189655002856821">Wi-Fi آف ہے</translation> <translation id="3563775809269155755">ہاٹ اسپاٹ فعال کریں</translation> <translation id="3571734092741541777">ترتیب دیں</translation> <translation id="3573179567135747900">واپس "<ph name="FROM_LOCALE" />" میں تبدیل کریں (ری اسٹارٹ مطلوب ہے)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">صوتی ان پٹ</translation> <translation id="3900355044994618856">آپ کا سیشن <ph name="SESSION_TIME_REMAINING" /> میں ختم ہو جائے گا</translation> <translation id="3901991538546252627"><ph name="NAME" /> سے منسلک کیا جا رہا ہے</translation> +<translation id="3923494859158167397">کوئی موبائل نیٹ ورک سیٹ اپ نہیں کیا گیا</translation> <translation id="3943857333388298514">پیسٹ کریں</translation> <translation id="394485226368336402">آڈیو کی ترتیبات</translation> <translation id="3945319193631853098">سیٹ اپ مکمل کرنے کیلئے تھپتھپائیں</translation> @@ -379,6 +380,7 @@ <translation id="4195877955194704651">خودکار کلکس بٹن</translation> <translation id="4197790712631116042">آف</translation> <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> دستیاب نہیں ہے۔</translation> +<translation id="4209973997261364186">Wi-Fi آن ہے</translation> <translation id="4212472694152630271">PIN پر سوئچ کریں</translation> <translation id="4215497585250573029">VPN کی ترتیبات</translation> <translation id="4217571870635786043">املاء</translation> @@ -463,7 +465,6 @@ <translation id="4890408602550914571">یقینی بنائیں کہ آپ کا فون قریب میں ہے اور اس میں بلوٹوتھ آن ہے۔</translation> <translation id="4895488851634969361">بیٹری بھری ہوئی ہے۔</translation> <translation id="490375751687810070">عمودی</translation> -<translation id="4905614135390995787">اعلی تناسب امتزاج کی وضع ٹوگل کرنے کا شارٹ کٹ تبدیل ہو گيا ہے۔ براہ کرم <ph name="OLD_SHORTCUT" /> کے بجائے <ph name="NEW_SHORTCUT" /> کا استعمال کریں۔</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" /> فیصد بیٹری ہے</translation> <translation id="4917385247580444890">مضبوط</translation> <translation id="4918086044614829423">قبول کریں</translation> @@ -555,6 +556,7 @@ <translation id="5689633613396158040">نائٹ لائٹ سے مدھم روشنی میں اپنی اسکرین کو دیکھنا یا پڑھنا آسان ہو جاتا ہے۔ نائٹ لائٹ کے آن ہونے کے وقت کو تبدیل کرنے کے لئے تھپتھپائیں یا اسے مکمل طور پر آف کر دیں۔</translation> <translation id="5691772641933328258">فنگر پرنٹ کی شناخت نہیں ہو سکی</translation> <translation id="5710450975648804523">'ڈسٹرب نہ کریں' آن ہے</translation> +<translation id="571295407079589142">موبائل ڈیٹا آف ہے</translation> <translation id="573413375004481890">یہ آلہ آپ کے تمام ڈسپلیز کو سپورٹ نہیں کر سکتا، لہذا ایک کو غیر منسلک کر دیا گیا ہے</translation> <translation id="574392208103952083">متوسط</translation> <translation id="5744083938413354016">گھسیٹنے پر تھپتھپائیں</translation> @@ -669,7 +671,6 @@ <translation id="6667908387435388584">اپنے فون کے ہاٹ اسپاٹ سے منسلک ہوں، اپنے آلے کو خاموش کریں اور اس کا پتا لگائیں اور اپنے فون پر حال ہی میں کھولے گئے Chrome ٹیبز دیکھیں</translation> <translation id="6670153871843998651">ڈیسک 3</translation> <translation id="6671495933530132209">تصویر کاپی کریں</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">اپنے انتخاب سے متعلق معلومات حاصل کریں</translation> <translation id="6696025732084565524">آپ کے الگ ہونے کے قابل کی بورڈ کو ایک اہم اپ ڈیٹ درکار ہے</translation> <translation id="6700713906295497288">IME مینو بٹن</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index d416e55..0f9266bba 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> oxirgi yangilanishi haqida batafsil axborot</translation> <translation id="1995660704900986789">O‘chirish</translation> <translation id="1998100899771863792">Joriy ish stoli</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Xabar yozing</translation> <translation id="2018630726571919839">Bitta latifa aytib ber</translation> <translation id="2021864487439853900">Ochish uchun bosing</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Telefoningiz yoningizda va undagi Bluetooth yoniqligini tekshiring.</translation> <translation id="4895488851634969361">Batareya to‘ldi.</translation> <translation id="490375751687810070">Vertikal</translation> -<translation id="4905614135390995787">Yuqori kontrastli rejim uchun tugmalar birikmasi o‘zgardi. Endi <ph name="NEW_SHORTCUT" /> o‘rniga <ph name="OLD_SHORTCUT" /> birikmasidan boydalaning.</translation> <translation id="490788395437447240">Batareya quvvati: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">Kuchli</translation> <translation id="4918086044614829423">Qabul qilish</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Telefoningizning hotspotiga ulang, tovushsiz qiling, qurilmangizni toping va telefoningizdagi oxirgi ochilgan Chrome varaqlarini koʻring</translation> <translation id="6670153871843998651">Desk 3</translation> <translation id="6671495933530132209">Rasmni nusxalash</translation> -<translation id="6691659475504239918">Qidiruv+Shift+H</translation> <translation id="6692996468359469499">Tanlovingizga aloqador axborot olish</translation> <translation id="6696025732084565524">Tashqi klaviatura yangilanishi zarur</translation> <translation id="6700713906295497288">IME menyusi tugmasi</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb index 884c8f3b..d94dad7 100644 --- a/ash/strings/ash_strings_vi.xtb +++ b/ash/strings/ash_strings_vi.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Tìm hiểu thêm về bản cập nhật <ph name="SYSTEM_APP_NAME" /> mới nhất</translation> <translation id="1995660704900986789">Tắt nguồn</translation> <translation id="1998100899771863792">Không gian làm việc hiện tại</translation> -<translation id="2012624427112548395">Ctrl+Search+H</translation> <translation id="2016340657076538683">Nhập tin nhắn</translation> <translation id="2018630726571919839">Kể truyện cười cho tôi</translation> <translation id="2021864487439853900">Nhấp để mở khóa</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Hãy đảm bảo điện thoại của bạn ở gần và đã bật Bluetooth.</translation> <translation id="4895488851634969361">Pin đầy.</translation> <translation id="490375751687810070">Dọc</translation> -<translation id="4905614135390995787">Phím tắt để chuyển đổi Chế độ tương phản cao đã thay đổi. Vui lòng sử dụng <ph name="NEW_SHORTCUT" /> thay vì <ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% pin</translation> <translation id="4917385247580444890">Mạnh</translation> <translation id="4918086044614829423">Chấp nhận</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Kết nối với điểm phát sóng của điện thoại, tắt tiếng và xác định vị trí thiết bị của bạn, cũng như xem các thẻ Chrome mở gần đây trên điện thoại</translation> <translation id="6670153871843998651">Không gian làm việc 3</translation> <translation id="6671495933530132209">Sao chép ảnh</translation> -<translation id="6691659475504239918">Search+Shift+H</translation> <translation id="6692996468359469499">Nhận thông tin liên quan đến lựa chọn của bạn</translation> <translation id="6696025732084565524">Bàn phím có thể tháo rời của bạn cần một bản cập nhật quan trọng</translation> <translation id="6700713906295497288">Nút menu IME</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index 3c15e9aa..57eece6 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">详细了解最新的 <ph name="SYSTEM_APP_NAME" />更新</translation> <translation id="1995660704900986789">关机</translation> <translation id="1998100899771863792">当前桌面</translation> -<translation id="2012624427112548395">Ctrl+搜索键+H</translation> <translation id="2016340657076538683">请输入消息</translation> <translation id="2018630726571919839">给我讲个笑话</translation> <translation id="2021864487439853900">点击即可解锁</translation> @@ -302,6 +301,7 @@ <translation id="3486220673238053218">定义</translation> <translation id="3510164367642747937">突出显示鼠标光标</translation> <translation id="3513798432020909783">该帐号由 <ph name="MANAGER_EMAIL" /> 管理</translation> +<translation id="3552189655002856821">Wi-Fi 处于关闭状态</translation> <translation id="3563775809269155755">启用热点</translation> <translation id="3571734092741541777">设置</translation> <translation id="3573179567135747900">重新更改为“<ph name="FROM_LOCALE" />”(需要重启)</translation> @@ -349,6 +349,7 @@ <translation id="3899995891769452915">语音输入</translation> <translation id="3900355044994618856">您的会话将在 <ph name="SESSION_TIME_REMAINING" />后结束</translation> <translation id="3901991538546252627">正在连接:<ph name="NAME" /></translation> +<translation id="3923494859158167397">未设置任何移动网络</translation> <translation id="3943857333388298514">粘贴</translation> <translation id="394485226368336402">音频设置</translation> <translation id="3945319193631853098">点按即可完成设置</translation> @@ -379,6 +380,7 @@ <translation id="4195877955194704651">“自动点击”按钮</translation> <translation id="4197790712631116042">已关闭</translation> <translation id="4201033867194214117">“<ph name="FEATURE_NAME" />”不可用。</translation> +<translation id="4209973997261364186">Wi-Fi 处于开启状态</translation> <translation id="4212472694152630271">切换到 PIN 码</translation> <translation id="4215497585250573029">VPN 设置</translation> <translation id="4217571870635786043">语音输入</translation> @@ -463,7 +465,6 @@ <translation id="4890408602550914571">请确保您的手机就在附近且已开启蓝牙。</translation> <translation id="4895488851634969361">电池电量已满。</translation> <translation id="490375751687810070">纵向</translation> -<translation id="4905614135390995787">用于切换高反差模式的快捷键已更改。请使用 <ph name="NEW_SHORTCUT" />,而不是 <ph name="OLD_SHORTCUT" />。</translation> <translation id="490788395437447240">电池电量:<ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">强</translation> <translation id="4918086044614829423">接受</translation> @@ -555,6 +556,7 @@ <translation id="5689633613396158040">护眼模式可让您更舒适地在黯淡的光线下查看屏幕或阅读文字。点按即可更改护眼模式的开启时间或彻底关闭护眼模式。</translation> <translation id="5691772641933328258">无法识别指纹</translation> <translation id="5710450975648804523">“请勿打扰”模式已开启</translation> +<translation id="571295407079589142">移动数据网络处于关闭状态</translation> <translation id="573413375004481890">此设备无法支持您的所有显示屏,因此断开了与其中一个显示屏的连接</translation> <translation id="574392208103952083">中</translation> <translation id="5744083938413354016">点按拖动</translation> @@ -669,7 +671,6 @@ <translation id="6667908387435388584">连接到您手机的热点,将您的手机静音并确定它的位置,以及查看您手机上最近打开的 Chrome 标签页</translation> <translation id="6670153871843998651">桌面 3</translation> <translation id="6671495933530132209">复制图片</translation> -<translation id="6691659475504239918">搜索键+Shift+H</translation> <translation id="6692996468359469499">获取与您的所选项相关的信息</translation> <translation id="6696025732084565524">您的可拆卸式键盘需要安装一项重要更新</translation> <translation id="6700713906295497288">IME 菜单按钮</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index b67b9da..60034718 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">進一步瞭解有關 <ph name="SYSTEM_APP_NAME" /> 的更新</translation> <translation id="1995660704900986789">關機</translation> <translation id="1998100899771863792">目前的桌面</translation> -<translation id="2012624427112548395">Ctrl+Search+H 鍵</translation> <translation id="2016340657076538683">輸入訊息</translation> <translation id="2018630726571919839">講笑話</translation> <translation id="2021864487439853900">按一下即可解鎖</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">請確認您的手機在附近,且已開啟藍牙。</translation> <translation id="4895488851634969361">電池電量已滿。</translation> <translation id="490375751687810070">垂直</translation> -<translation id="4905614135390995787">切換高對比模式的快速鍵已變更,請改用 <ph name="NEW_SHORTCUT" /> 以取代原有的 <ph name="OLD_SHORTCUT" />。</translation> <translation id="490788395437447240">電量:<ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">強</translation> <translation id="4918086044614829423">接受</translation> @@ -672,7 +670,6 @@ <translation id="6667908387435388584">連線至手機的熱點、將裝置設為靜音、尋找裝置所在的位置,並查看最近透過手機開啟的 Chrome 分頁</translation> <translation id="6670153871843998651">桌面 3</translation> <translation id="6671495933530132209">複製圖片</translation> -<translation id="6691659475504239918">Search+Shift+H 鍵</translation> <translation id="6692996468359469499">取得您選取項目相關資料</translation> <translation id="6696025732084565524">您的拆除式鍵盤需執行重要更新</translation> <translation id="6700713906295497288">IME 選單按鈕</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb index 2ae659c..239d846 100644 --- a/ash/strings/ash_strings_zh-TW.xtb +++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">進一步瞭解最新的 <ph name="SYSTEM_APP_NAME" />更新內容</translation> <translation id="1995660704900986789">關閉</translation> <translation id="1998100899771863792">目前的桌面</translation> -<translation id="2012624427112548395">Ctrl 鍵 + 搜尋鍵 + H 鍵</translation> <translation id="2016340657076538683">輸入訊息</translation> <translation id="2018630726571919839">講個笑話</translation> <translation id="2021864487439853900">按一下即可解鎖</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">請確認你的手機在附近,且已開啟藍牙功能。</translation> <translation id="4895488851634969361">電池電量已滿。</translation> <translation id="490375751687810070">縱向</translation> -<translation id="4905614135390995787">切換高對比模式的快速鍵已變更,請改用 <ph name="NEW_SHORTCUT" /> (停用 <ph name="OLD_SHORTCUT" />)。</translation> <translation id="490788395437447240">電量:<ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="4917385247580444890">強</translation> <translation id="4918086044614829423">接受</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">連線至手機的無線基地台、將裝置設為靜音、尋找裝置所在的位置,並查看最近透過手機開啟的 Chrome 分頁</translation> <translation id="6670153871843998651">桌面 3</translation> <translation id="6671495933530132209">複製圖片</translation> -<translation id="6691659475504239918">搜尋鍵 + Shift 鍵 + H 鍵</translation> <translation id="6692996468359469499">取得選取項目的相關資訊</translation> <translation id="6696025732084565524">你的卸除式鍵盤需安裝重大更新</translation> <translation id="6700713906295497288">IME 選單按鈕</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb index a4e7e17..358f3a98 100644 --- a/ash/strings/ash_strings_zu.xtb +++ b/ash/strings/ash_strings_zu.xtb
@@ -129,7 +129,6 @@ <translation id="1993072747612765854">Funda kabanzi mayelana nesibuyekezo sakamuva se-<ph name="SYSTEM_APP_NAME" /></translation> <translation id="1995660704900986789">Vala amandla</translation> <translation id="1998100899771863792">Itafula lamanje</translation> -<translation id="2012624427112548395">U-Ctrl+Search+H</translation> <translation id="2016340657076538683">Thayipha umlayezo</translation> <translation id="2018630726571919839">Ngitshele ihlaya</translation> <translation id="2021864487439853900">Chofoza ukuze uvule</translation> @@ -466,7 +465,6 @@ <translation id="4890408602550914571">Qiniseka ukuthi ifoni yakho iseduze futhi ivulwe i-Bluetooth.</translation> <translation id="4895488851634969361">Ibhethri ligcwele.</translation> <translation id="490375751687810070">Okuqondile</translation> -<translation id="4905614135390995787">Isinqamuleli sokuguqula imodi yokugqama okuphezulu ishintshile. Sicela usebenzise i-<ph name="NEW_SHORTCUT" /> esikhundleni se-<ph name="OLD_SHORTCUT" />.</translation> <translation id="490788395437447240"><ph name="BATTERY_PERCENTAGE" />% ibhethri</translation> <translation id="4917385247580444890">kunamandla</translation> <translation id="4918086044614829423">Yamukela</translation> @@ -673,7 +671,6 @@ <translation id="6667908387435388584">Xhuma ku-hotspot yefoni yakho, thulisa futhi thola idivayisi yakho, bese ubuka amathebhu we-Chrome wamanje avuliwe efonini yakho</translation> <translation id="6670153871843998651">Itafula 3</translation> <translation id="6671495933530132209">Kopisha isithombe</translation> -<translation id="6691659475504239918">U-Search+Shift+H</translation> <translation id="6692996468359469499">Thola ukwaziswa okuhlobene nokhetho lwakho</translation> <translation id="6696025732084565524">Ikhibhodi yakho enqamukayo idinga isibuyekezo esibalulekile</translation> <translation id="6700713906295497288">Inkinobho yemenyu ye-IME</translation>
diff --git a/base/allocator/partition_allocator/partition_alloc_features.cc b/base/allocator/partition_allocator/partition_alloc_features.cc index 6cea4422..1c3b0eb 100644 --- a/base/allocator/partition_allocator/partition_alloc_features.cc +++ b/base/allocator/partition_allocator/partition_alloc_features.cc
@@ -28,7 +28,7 @@ // If enabled, the thread cache will be periodically purged. const Feature kPartitionAllocThreadCachePeriodicPurge{ - "PartitionAllocThreadCachePeriodicPurge", FEATURE_DISABLED_BY_DEFAULT}; + "PartitionAllocThreadCachePeriodicPurge", FEATURE_ENABLED_BY_DEFAULT}; // Use a larger maximum thread cache cacheable bucket size. const Feature kPartitionAllocLargeThreadCacheSize{
diff --git a/base/sampling_heap_profiler/sampling_heap_profiler.h b/base/sampling_heap_profiler/sampling_heap_profiler.h index 8d190ab..5be862c 100644 --- a/base/sampling_heap_profiler/sampling_heap_profiler.h +++ b/base/sampling_heap_profiler/sampling_heap_profiler.h
@@ -53,10 +53,12 @@ // the PC pointers. std::vector<void*> stack; + // Public for testing. + Sample(size_t size, size_t total, uint32_t ordinal); + private: friend class SamplingHeapProfiler; - Sample(size_t size, size_t total, uint32_t ordinal); uint32_t ordinal; };
diff --git a/base/threading/sequence_local_storage_map.cc b/base/threading/sequence_local_storage_map.cc index fbd863a..26ce4b17 100644 --- a/base/threading/sequence_local_storage_map.cc +++ b/base/threading/sequence_local_storage_map.cc
@@ -34,6 +34,7 @@ tls_current_sequence_local_storage.Get().Set(nullptr); } +// static SequenceLocalStorageMap& SequenceLocalStorageMap::GetForCurrentThread() { SequenceLocalStorageMap* current_sequence_local_storage = tls_current_sequence_local_storage.Get().Get(); @@ -47,6 +48,11 @@ return *current_sequence_local_storage; } +// static +bool SequenceLocalStorageMap::IsSetForCurrentThread() { + return tls_current_sequence_local_storage.Get().Get() != nullptr; +} + void* SequenceLocalStorageMap::Get(int slot_id) { const auto it = sls_map_.find(slot_id); if (it == sls_map_.end())
diff --git a/base/threading/sequence_local_storage_map.h b/base/threading/sequence_local_storage_map.h index 8b9155c5..3857cc2 100644 --- a/base/threading/sequence_local_storage_map.h +++ b/base/threading/sequence_local_storage_map.h
@@ -31,6 +31,11 @@ // ScopedSetSequenceLocalStorageForCurrentThread. static SequenceLocalStorageMap& GetForCurrentThread(); + // Indicates whether the current thread has a SequenceLocalStorageMap + // available and thus whether it can safely call GetForCurrentThread and + // dereference SequenceLocalStorageSlots. + static bool IsSetForCurrentThread(); + // Holds a pointer to a value alongside a destructor for this pointer. // Calls the destructor on the value upon destruction. class BASE_EXPORT ValueDestructorPair {
diff --git a/base/trace_event/common/trace_event_common.h b/base/trace_event/common/trace_event_common.h index dcbb09b..dff2f9b 100644 --- a/base/trace_event/common/trace_event_common.h +++ b/base/trace_event/common/trace_event_common.h
@@ -256,10 +256,8 @@ namespace legacy { template <> -bool BASE_EXPORT ConvertThreadId(const ::base::PlatformThreadId& thread, - uint64_t* track_uuid_out, - int32_t* pid_override_out, - int32_t* tid_override_out); +perfetto::ThreadTrack BASE_EXPORT +ConvertThreadId(const ::base::PlatformThreadId& thread); } // namespace legacy
diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc index 796409d0..6b6320a 100644 --- a/base/trace_event/trace_event_impl.cc +++ b/base/trace_event/trace_event_impl.cc
@@ -31,15 +31,8 @@ namespace legacy { template <> -bool ConvertThreadId(const ::base::PlatformThreadId& thread, - uint64_t* track_uuid_out, - int32_t* pid_override_out, - int32_t* tid_override_out) { - // Only support threads in the current process. - *track_uuid_out = perfetto::ThreadTrack::ForThread( - static_cast<base::PlatformThreadId>(thread)) - .uuid; - return true; +perfetto::ThreadTrack ConvertThreadId(const ::base::PlatformThreadId& thread) { + return perfetto::ThreadTrack::ForThread(static_cast<int32_t>(thread)); } } // namespace legacy
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 0febc09..8747a79eb8 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -4.20210428.3.1 +4.20210429.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 0febc09..8747a79eb8 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -4.20210428.3.1 +4.20210429.1.1
diff --git a/build/landmines.py b/build/landmines.py index c8fc1012..f5adf80f9 100755 --- a/build/landmines.py +++ b/build/landmines.py
@@ -4,9 +4,9 @@ # found in the LICENSE file. """ -This script runs every build as the first hook (See DEPS). If it detects that -the build should be clobbered, it will delete the contents of the build -directory. +This script runs every gclient runhooks as the first hook (See DEPS). If it +detects that the build should be clobbered, it will delete the contents of the +build directory. A landmine is tripped when a builder checks out a different revision, and the diff between the new landmines and the old ones is non-null. At this point, the @@ -38,13 +38,10 @@ def get_build_dir(src_dir): r""" - Returns output directory absolute path dependent on build and targets. + Returns the absolute path to the directory containing the build directories. Examples: - r'c:\b\build\slave\win\build\src\out' - '/mnt/data/b/build/slave/linux/build/src/out' - '/b/build/slave/ios_rel_device/build/src/out' - - Keep this function in sync with tools/build/scripts/slave/compile.py + 'C:\src\out' + '/b/s/w/ir/cache/builder/src/out' """ if 'CHROMIUM_OUT_DIR' in os.environ: output_dir = os.environ.get('CHROMIUM_OUT_DIR').strip()
diff --git a/cc/raster/raster_source.h b/cc/raster/raster_source.h index 7d68e8f..98b126da 100644 --- a/cc/raster/raster_source.h +++ b/cc/raster/raster_source.h
@@ -10,6 +10,8 @@ #include <memory> #include <vector> +#include "base/containers/flat_map.h" +#include "base/memory/ref_counted.h" #include "cc/cc_export.h" #include "cc/debug/rendering_stats_instrumentation.h" #include "cc/layers/recording_source.h" @@ -18,6 +20,12 @@ #include "third_party/skia/include/core/SkPicture.h" #include "ui/gfx/color_space.h" +namespace base { +namespace trace_event { +class TracedValue; +} // namespace trace_event +} // namespace base + namespace gfx { class AxisTransform2d; } // namespace gfx
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index d7ffb02..fbe608a 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -694,6 +694,7 @@ "//chrome/browser/download/internal/android:java", "//chrome/browser/page_annotations/android:java", "//chrome/browser/password_check:internal_java", + "//chrome/browser/password_edit_dialog/android:java", "//chrome/browser/password_entry_edit/android/internal:java", "//chrome/browser/tabmodel/internal:java", "//chrome/browser/touch_to_fill/android/internal:java", @@ -898,6 +899,7 @@ "//chrome/browser/omaha/android:java", "//chrome/browser/optimization_guide/android:java", "//chrome/browser/page_annotations/test/android:junit", + "//chrome/browser/password_edit_dialog/android:junit", "//chrome/browser/password_entry_edit/android/internal:junit", "//chrome/browser/payments/android:junit", "//chrome/browser/performance_hints/android:java", @@ -1193,6 +1195,7 @@ "//chrome/browser/paint_preview/android:java", "//chrome/browser/paint_preview/android:javatests", "//chrome/browser/password_check:public_java", + "//chrome/browser/password_edit_dialog/android:javatests", "//chrome/browser/password_entry_edit/android/internal:javatests", "//chrome/browser/password_manager/android:java", "//chrome/browser/password_manager/android_test_helpers:test_support_java",
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni index af75699..4e92370d 100644 --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni
@@ -643,7 +643,6 @@ "java/res/drawable/popup_bg_bottom_tinted.xml", "java/res/drawable/qr_code.xml", "java/res/drawable/screenshot.xml", - "java/res/drawable/search_sogou.xml", "java/res/drawable/send_tab.xml", "java/res/drawable/shared_clipboard_zero_state_dark.xml", "java/res/drawable/shared_clipboard_zero_state_light.xml",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 032c71c..502439c7 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -735,12 +735,9 @@ "java/src/org/chromium/chrome/browser/javascript/WebContextFetcher.java", "java/src/org/chromium/chrome/browser/language/LanguageAskPrompt.java", "java/src/org/chromium/chrome/browser/lens/LensPolicyUtils.java", - "java/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelper.java", "java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java", - "java/src/org/chromium/chrome/browser/locale/LocaleChangedBroadcastReceiver.java", "java/src/org/chromium/chrome/browser/locale/LocaleManager.java", "java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java", - "java/src/org/chromium/chrome/browser/locale/SogouPromoDialog.java", "java/src/org/chromium/chrome/browser/login/ChromeHttpAuthHandler.java", "java/src/org/chromium/chrome/browser/media/MediaCaptureDevicesDispatcherAndroid.java", "java/src/org/chromium/chrome/browser/media/MediaCaptureNotificationServiceImpl.java", @@ -803,6 +800,7 @@ "java/src/org/chromium/chrome/browser/notifications/WebPlatformNotificationMetrics.java", "java/src/org/chromium/chrome/browser/notifications/channels/ChannelsUpdater.java", "java/src/org/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions.java", + "java/src/org/chromium/chrome/browser/notifications/channels/LocaleChangedBroadcastReceiver.java", "java/src/org/chromium/chrome/browser/notifications/channels/SiteChannelsManager.java", "java/src/org/chromium/chrome/browser/notifications/scheduler/DisplayAgent.java", "java/src/org/chromium/chrome/browser/notifications/scheduler/NotificationSchedulerTask.java",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni index 6af4276..84ad903 100644 --- a/chrome/android/chrome_test_java_sources.gni +++ b/chrome/android/chrome_test_java_sources.gni
@@ -261,9 +261,6 @@ "javatests/src/org/chromium/chrome/browser/jsdialog/JavascriptTabModalDialogTest.java", "javatests/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java", "javatests/src/org/chromium/chrome/browser/language/settings/LanguageSettingsTest.java", - "javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperTest.java", - "javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperUtils.java", - "javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialogTest.java", "javatests/src/org/chromium/chrome/browser/locale/LocaleManagerReferralTest.java", "javatests/src/org/chromium/chrome/browser/locale/LocaleManagerTest.java", "javatests/src/org/chromium/chrome/browser/login/ChromeHttpAuthHandlerTest.java", @@ -496,6 +493,9 @@ "javatests/src/org/chromium/chrome/browser/query_tiles/ViewActions.java", "javatests/src/org/chromium/chrome/browser/read_later/ReadLaterContextMenuTest.java", "javatests/src/org/chromium/chrome/browser/reengagement/ReengagementNotificationControllerIntegrationTest.java", + "javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperTest.java", + "javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperUtils.java", + "javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialogTest.java", "javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java", "javatests/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineSettingsTest.java", "javatests/src/org/chromium/chrome/browser/searchwidget/SearchActivityTest.java", @@ -633,7 +633,6 @@ "javatests/src/org/chromium/chrome/browser/webapps/WebappSplashScreenIconTest.java", "javatests/src/org/chromium/chrome/browser/webapps/WebappSplashScreenTest.java", "javatests/src/org/chromium/chrome/browser/webapps/WebappSplashScreenThemeColorTest.java", - "javatests/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java", "javatests/src/org/chromium/chrome/browser/webauth/AuthenticatorTest.java", "javatests/src/org/chromium/chrome/browser/webauth/Fido2ApiTestHelper.java", "javatests/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequestTest.java",
diff --git a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected index c1f0d2e..6b1382f 100644 --- a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected +++ b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
@@ -975,13 +975,6 @@ android:name="org.chromium.chrome.browser.customtabs.CustomTabsShareBroadcastReceiver" android:exported="false"> </receiver> # DIFF-ANCHOR: fd245bee - <receiver # DIFF-ANCHOR: de591772 - android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver" - android:exported="false"> - <intent-filter> # DIFF-ANCHOR: 5458f2a2 - <action android:name="android.intent.action.LOCALE_CHANGED"/> - </intent-filter> # DIFF-ANCHOR: 5458f2a2 - </receiver> # DIFF-ANCHOR: de591772 <receiver # DIFF-ANCHOR: 2b9c19aa android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$Receiver" android:exported="false"> @@ -998,6 +991,13 @@ <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION"/> </intent-filter> # DIFF-ANCHOR: 1c1c5ed8 </receiver> # DIFF-ANCHOR: df76237f + <receiver # DIFF-ANCHOR: a9b53579 + android:name="org.chromium.chrome.browser.notifications.channels.LocaleChangedBroadcastReceiver" + android:exported="false"> + <intent-filter> # DIFF-ANCHOR: 5458f2a2 + <action android:name="android.intent.action.LOCALE_CHANGED"/> + </intent-filter> # DIFF-ANCHOR: 5458f2a2 + </receiver> # DIFF-ANCHOR: a9b53579 <receiver # DIFF-ANCHOR: 0cefd906 android:name="org.chromium.chrome.browser.notifications.scheduler.DisplayAgent$Receiver" android:exported="false">
diff --git a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected index 3f8d263d..6bb88f0 100644 --- a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected +++ b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
@@ -913,13 +913,6 @@ android:name="org.chromium.chrome.browser.customtabs.CustomTabsShareBroadcastReceiver" android:exported="false"> </receiver> # DIFF-ANCHOR: fd245bee - <receiver # DIFF-ANCHOR: de591772 - android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver" - android:exported="false"> - <intent-filter> # DIFF-ANCHOR: 5458f2a2 - <action android:name="android.intent.action.LOCALE_CHANGED"/> - </intent-filter> # DIFF-ANCHOR: 5458f2a2 - </receiver> # DIFF-ANCHOR: de591772 <receiver # DIFF-ANCHOR: 2b9c19aa android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$Receiver" android:exported="false"> @@ -936,6 +929,13 @@ <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION"/> </intent-filter> # DIFF-ANCHOR: 1c1c5ed8 </receiver> # DIFF-ANCHOR: df76237f + <receiver # DIFF-ANCHOR: a9b53579 + android:name="org.chromium.chrome.browser.notifications.channels.LocaleChangedBroadcastReceiver" + android:exported="false"> + <intent-filter> # DIFF-ANCHOR: 5458f2a2 + <action android:name="android.intent.action.LOCALE_CHANGED"/> + </intent-filter> # DIFF-ANCHOR: 5458f2a2 + </receiver> # DIFF-ANCHOR: a9b53579 <receiver # DIFF-ANCHOR: 0cefd906 android:name="org.chromium.chrome.browser.notifications.scheduler.DisplayAgent$Receiver" android:exported="false">
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java index d96db5b..76f6f4e 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
@@ -684,7 +684,7 @@ R.id.ntp_feed_header_menu_item_reactions, iconId)); } } - if (ChromeFeatureList.isEnabled(ChromeFeatureList.INTEREST_FEED_V2_AUTOPLAY)) { + if (FeedServiceBridge.isAutoplayEnabled()) { itemList.add(buildMenuListItem( R.string.ntp_manage_autoplay, R.id.ntp_feed_header_menu_item_autoplay, iconId)); }
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml index fc59631..ca626dbb 100644 --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml
@@ -410,7 +410,7 @@ </receiver> <!-- Locale related --> - <receiver android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver" + <receiver android:name="org.chromium.chrome.browser.notifications.channels.LocaleChangedBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="android.intent.action.LOCALE_CHANGED" />
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml index 8c0c75ce..da754bf 100644 --- a/chrome/android/java/res/values/ids.xml +++ b/chrome/android/java/res/values/ids.xml
@@ -15,7 +15,6 @@ <item name="tabswitcher_multiple_drawable" type="id"/> <item name="tabswitcher_single_drawable" type="id"/> <item name="custom_tab_bottom_bar_wrapper" type="id"/> - <item name="default_search_engine_dialog_options" type="id"/> <!-- Media playback notification --> <item type="id" name="media_playback_notification" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java index 6ab24ad..4b829ea 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/DefaultSearchEngineFirstRunFragment.java
@@ -17,8 +17,8 @@ import org.chromium.base.task.PostTask; import org.chromium.chrome.R; import org.chromium.chrome.browser.AppHooks; -import org.chromium.chrome.browser.locale.DefaultSearchEngineDialogHelper; -import org.chromium.chrome.browser.locale.LocaleManager.SearchEnginePromoType; +import org.chromium.chrome.browser.search_engines.DefaultSearchEngineDialogHelper; +import org.chromium.chrome.browser.search_engines.SearchEnginePromoType; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.components.browser_ui.widget.RadioButtonLayout; import org.chromium.content_public.browser.UiThreadTaskTraits; @@ -34,7 +34,7 @@ } @SearchEnginePromoType - private int mSearchEnginePromoDialoType; + private int mSearchEnginePromoDialogType; private boolean mShownRecorded; /** Layout that displays the available search engines to the user. */ @@ -54,10 +54,11 @@ mButton.setEnabled(false); assert TemplateUrlServiceFactory.get().isLoaded(); - mSearchEnginePromoDialoType = + mSearchEnginePromoDialogType = AppHooks.get().getLocaleManager().getSearchEnginePromoShowType(); - if (mSearchEnginePromoDialoType != SearchEnginePromoType.DONT_SHOW) { - new DefaultSearchEngineDialogHelper(mSearchEnginePromoDialoType, mEngineLayout, mButton, + if (mSearchEnginePromoDialogType != SearchEnginePromoType.DONT_SHOW) { + new DefaultSearchEngineDialogHelper(mSearchEnginePromoDialogType, + AppHooks.get().getLocaleManager(), mEngineLayout, mButton, getPageDelegate()::advanceToNextPage); } @@ -78,7 +79,7 @@ super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { - if (mSearchEnginePromoDialoType == SearchEnginePromoType.DONT_SHOW) { + if (mSearchEnginePromoDialogType == SearchEnginePromoType.DONT_SHOW) { PostTask.postTask(UiThreadTaskTraits.DEFAULT, new Runnable() { @Override public void run() { @@ -94,9 +95,9 @@ private void recordShown() { if (mShownRecorded) return; - if (mSearchEnginePromoDialoType == SearchEnginePromoType.SHOW_NEW) { + if (mSearchEnginePromoDialogType == SearchEnginePromoType.SHOW_NEW) { RecordUserAction.record("SearchEnginePromo.NewDevice.Shown.FirstRun"); - } else if (mSearchEnginePromoDialoType == SearchEnginePromoType.SHOW_EXISTING) { + } else if (mSearchEnginePromoDialogType == SearchEnginePromoType.SHOW_EXISTING) { RecordUserAction.record("SearchEnginePromo.ExistingDevice.Shown.FirstRun"); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java index e3c8939..ccf59ad4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java
@@ -25,9 +25,9 @@ import org.chromium.chrome.browser.LaunchIntentDispatcher; import org.chromium.chrome.browser.childaccounts.ChildAccountService; import org.chromium.chrome.browser.flags.ChromeSwitches; -import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.search_engines.SearchEnginePromoType; import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.chrome.browser.vr.VrModuleProvider; @@ -130,10 +130,10 @@ @VisibleForTesting protected boolean shouldShowSearchEnginePage() { - @LocaleManager.SearchEnginePromoType + @SearchEnginePromoType int searchPromoType = AppHooks.get().getLocaleManager().getSearchEnginePromoShowType(); - return searchPromoType == LocaleManager.SearchEnginePromoType.SHOW_NEW - || searchPromoType == LocaleManager.SearchEnginePromoType.SHOW_EXISTING; + return searchPromoType == SearchEnginePromoType.SHOW_NEW + || searchPromoType == SearchEnginePromoType.SHOW_EXISTING; } @VisibleForTesting
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java index d02c9c3..20fe3e1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java
@@ -4,136 +4,41 @@ package org.chromium.chrome.browser.locale; -import android.annotation.SuppressLint; import android.app.Activity; -import android.content.DialogInterface; -import android.os.Bundle; -import android.widget.Button; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import org.chromium.base.Callback; -import org.chromium.base.metrics.RecordUserAction; -import org.chromium.chrome.R; -import org.chromium.chrome.browser.locale.LocaleManager.SearchEnginePromoType; -import org.chromium.components.browser_ui.widget.PromoDialog; -import org.chromium.components.browser_ui.widget.RadioButtonLayout; +import org.chromium.chrome.browser.search_engines.DefaultSearchEngineDialogHelper; -/** A dialog that forces the user to choose a default search engine. */ -public class DefaultSearchEnginePromoDialog extends PromoDialog { +/** + * Extends org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog + * for downstream build. Should be deleted once the downstream is updated to use + * org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog. + */ +public class DefaultSearchEnginePromoDialog + extends org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog { + public DefaultSearchEnginePromoDialog(Activity activity, + DefaultSearchEngineDialogHelper.Delegate delegate, int dialogType, + @Nullable Callback<Boolean> onSuccessCallback) { + super(activity, delegate, dialogType, onSuccessCallback); + } + /** Notified about events happening to the dialog. */ - public static interface DefaultSearchEnginePromoDialogObserver { + public interface DefaultSearchEnginePromoDialogObserver { void onDialogShown(DefaultSearchEnginePromoDialog shownDialog); } - private static DefaultSearchEnginePromoDialogObserver sObserver; - - @SuppressLint("StaticFieldLeak") - private static DefaultSearchEnginePromoDialog sCurrentDialog; - - /** Used to determine the promo dialog contents. */ - @SearchEnginePromoType - private final int mDialogType; - - /** Called when the dialog is dismissed after the user has chosen a search engine. */ - private final Callback<Boolean> mOnSuccessCallback; - - /** Encapsulates most of the logic for filling the dialog and handling clicks. */ - private DefaultSearchEngineDialogHelper mHelper; /** - * Construct the default search engine promo. - * - * @param activity Activity to build the dialog with. - * @param dialogType Type of dialog to show. - * @param onSuccessCallback Notified whether the user successfully chose a search engine and - * dismissed the dialog. + * Forwards a static instance of the observer to + * org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog. */ - DefaultSearchEnginePromoDialog(Activity activity, @SearchEnginePromoType int dialogType, - @Nullable Callback<Boolean> onSuccessCallback) { - super(activity); - mDialogType = dialogType; - mOnSuccessCallback = onSuccessCallback; - setOnDismissListener(this); - - // No one should be able to bypass this dialog by clicking outside or by hitting back. - setCancelable(false); - setCanceledOnTouchOutside(false); - - if (dialogType == LocaleManager.SearchEnginePromoType.SHOW_NEW) forceOpaqueBackground(); - } - - @Override - protected DialogParams getDialogParams() { - PromoDialog.DialogParams params = new PromoDialog.DialogParams(); - params.headerStringResource = R.string.search_engine_dialog_title; - params.footerStringResource = R.string.search_engine_dialog_footer; - params.primaryButtonStringResource = R.string.ok; - return params; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - Button okButton = (Button) findViewById(R.id.button_primary); - okButton.setEnabled(false); - - RadioButtonLayout radioButtons = new RadioButtonLayout(getContext()); - radioButtons.setId(R.id.default_search_engine_dialog_options); - addControl(radioButtons); - - Runnable dismissRunnable = new Runnable() { - @Override - public void run() { - dismiss(); - } - }; - mHelper = new DefaultSearchEngineDialogHelper( - mDialogType, radioButtons, okButton, dismissRunnable); - } - - @Override - public void show() { - super.show(); - if (sCurrentDialog != null) sCurrentDialog.dismiss(); - setCurrentDialog(this); - - if (mDialogType == LocaleManager.SearchEnginePromoType.SHOW_NEW) { - RecordUserAction.record("SearchEnginePromo.NewDevice.Shown.Dialog"); - } else if (mDialogType == LocaleManager.SearchEnginePromoType.SHOW_EXISTING) { - RecordUserAction.record("SearchEnginePromo.ExistingDevice.Shown.Dialog"); - } - if (sObserver != null) sObserver.onDialogShown(this); - } - - @Override - public void onDismiss(DialogInterface dialog) { - if (mHelper.getConfirmedKeyword() == null) { - // If no selection, finish the Activity so that the user has to respond to the dialog - // next time. - if (getOwnerActivity() != null) getOwnerActivity().finish(); - } - - if (mOnSuccessCallback != null) { - mOnSuccessCallback.onResult(mHelper.getConfirmedKeyword() != null); - } - - if (sCurrentDialog == this) setCurrentDialog(null); - } - - /** See {@link #sObserver}. */ @VisibleForTesting public static void setObserverForTests(DefaultSearchEnginePromoDialogObserver observer) { - sObserver = observer; - } - - /** @return The current visible Default Search Engine dialog. */ - static DefaultSearchEnginePromoDialog getCurrentDialog() { - return sCurrentDialog; - } - - private static void setCurrentDialog(DefaultSearchEnginePromoDialog dialog) { - sCurrentDialog = dialog; + org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog + .setObserverForTests2( + (org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog + .DefaultSearchEnginePromoDialogObserver) observer); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java index 2e419ac2..687051c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
@@ -26,6 +26,9 @@ import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; +import org.chromium.chrome.browser.search_engines.DefaultSearchEngineDialogHelper; +import org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog; +import org.chromium.chrome.browser.search_engines.SogouPromoDialog; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings; import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; @@ -45,8 +48,8 @@ * Manager for some locale specific logics. * TODO(https://crbug.com/1198923) Turn this into a per-activity object. */ -public class LocaleManager { - public static final String SPECIAL_LOCALE_ID = "US"; +public class LocaleManager implements DefaultSearchEngineDialogHelper.Delegate { + private static final String SPECIAL_LOCALE_ID = "US"; /** The current state regarding search engine promo dialogs. */ @IntDef({SearchEnginePromoState.SHOULD_CHECK, SearchEnginePromoState.CHECKED_NOT_SHOWN, @@ -262,14 +265,14 @@ return; case SearchEnginePromoType.SHOW_SOGOU: dialogSupplier = () - -> new SogouPromoDialog(activity, LocaleManager.this, + -> new SogouPromoDialog(activity, this::onSelectSearchEngine, finalizeInternalCallback, mSettingsLauncher); break; case SearchEnginePromoType.SHOW_EXISTING: case SearchEnginePromoType.SHOW_NEW: dialogSupplier = () -> new DefaultSearchEnginePromoDialog( - activity, shouldShow, finalizeInternalCallback); + activity, LocaleManager.this, shouldShow, finalizeInternalCallback); break; default: assert false; @@ -288,6 +291,16 @@ } /** + * Called when search engine to use is selected on SogouPromoDialog. + * @param useSogou {@code true} if Sogou engine is chosen. + */ + private void onSelectSearchEngine(boolean useSogou) { + setSearchEngineAutoSwitch(useSogou); + addSpecialSearchEngines(); + if (useSogou) overrideDefaultSearchEngine(); + } + + /** * @return Whether auto switch for search engine is enabled. */ public boolean isSearchEngineAutoSwitchEnabled() { @@ -388,16 +401,18 @@ return mLocaleTemplateUrlLoader; } - /** - * Get the list of search engines that a user may choose between. - * @param promoType Which search engine list to show. - * @return List of engines to show. - */ + @Override public List<TemplateUrl> getSearchEnginesForPromoDialog(@SearchEnginePromoType int promoType) { throw new IllegalStateException( "Not applicable unless existing or new promos are required"); } + @Override + public void onUserSearchEngineChoice( + @SearchEnginePromoType int type, List<String> keywords, String keyword) { + onUserSearchEngineChoiceFromPromoDialog(type, keywords, keyword); + } + /** Set a LocaleManager instance. This is called only by AppHooks. */ public static void setInstance(LocaleManager instance) { sInstance = instance;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleChangedBroadcastReceiver.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/channels/LocaleChangedBroadcastReceiver.java similarity index 89% rename from chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleChangedBroadcastReceiver.java rename to chrome/android/java/src/org/chromium/chrome/browser/notifications/channels/LocaleChangedBroadcastReceiver.java index 6669efb..48a49e76 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleChangedBroadcastReceiver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/channels/LocaleChangedBroadcastReceiver.java
@@ -2,7 +2,7 @@ // 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.locale; +package org.chromium.chrome.browser.notifications.channels; import android.content.BroadcastReceiver; import android.content.Context; @@ -10,7 +10,6 @@ import org.chromium.base.task.PostTask; import org.chromium.base.task.TaskTraits; -import org.chromium.chrome.browser.notifications.channels.ChannelsUpdater; /** * Triggered when Android's locale changes.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadUtils.java index 40fe428..661420a2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadUtils.java
@@ -72,7 +72,7 @@ if (webApkInfo != null) { LaunchpadItem item = new LaunchpadItem(webApkInfo.webApkPackageName(), webApkInfo.shortName(), webApkInfo.name(), webApkInfo.url(), - webApkInfo.icon().bitmap()); + webApkInfo.icon().bitmap(), webApkInfo.shortcutItems()); apps.add(item); } } catch (PackageManager.NameNotFoundException e) {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationTest.java index f52550f..e81be07c 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationTest.java
@@ -55,13 +55,13 @@ import org.chromium.chrome.browser.customtabs.CustomTabsTestUtils; import org.chromium.chrome.browser.document.ChromeLauncherActivity; import org.chromium.chrome.browser.firstrun.FirstRunActivityTestObserver.ScopedObserverData; -import org.chromium.chrome.browser.locale.DefaultSearchEngineDialogHelperUtils; import org.chromium.chrome.browser.locale.LocaleManager; -import org.chromium.chrome.browser.locale.LocaleManager.SearchEnginePromoType; import org.chromium.chrome.browser.policy.EnterpriseInfo; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; +import org.chromium.chrome.browser.search_engines.DefaultSearchEngineDialogHelperUtils; +import org.chromium.chrome.browser.search_engines.SearchEnginePromoType; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.MultiActivityTestRule; @@ -241,7 +241,7 @@ } // Select a default search engine. - if (searchPromoType == LocaleManager.SearchEnginePromoType.DONT_SHOW) { + if (searchPromoType == SearchEnginePromoType.DONT_SHOW) { Assert.assertFalse("Search engine page was shown.", freProperties.getBoolean(FirstRunActivityBase.SHOW_SEARCH_ENGINE_PAGE)); } else { @@ -354,13 +354,13 @@ @Test @MediumTest public void testDefaultSearchEngine_DontShow() throws Exception { - runSearchEnginePromptTest(LocaleManager.SearchEnginePromoType.DONT_SHOW); + runSearchEnginePromptTest(SearchEnginePromoType.DONT_SHOW); } @Test @MediumTest public void testDefaultSearchEngine_ShowExisting() throws Exception { - runSearchEnginePromptTest(LocaleManager.SearchEnginePromoType.SHOW_EXISTING); + runSearchEnginePromptTest(SearchEnginePromoType.SHOW_EXISTING); } @Test @@ -368,7 +368,7 @@ public void testDefaultSearchEngine_WithCctPolicy() throws Exception { skipTosDialogViaPolicy(); - runSearchEnginePromptTest(LocaleManager.SearchEnginePromoType.SHOW_EXISTING); + runSearchEnginePromptTest(SearchEnginePromoType.SHOW_EXISTING); } private void runSearchEnginePromptTest(@SearchEnginePromoType final int searchPromoType) @@ -558,7 +558,7 @@ launchViewIntent(FOO_URL); FirstRunActivity secondFreActivity = waitForDifferentFirstRunActivity(firstFreActivity); - clickThroughFirstRun(secondFreActivity, LocaleManager.SearchEnginePromoType.DONT_SHOW); + clickThroughFirstRun(secondFreActivity, SearchEnginePromoType.DONT_SHOW); verifyUrlEquals(FOO_URL, waitAndGetUriFromChromeActivity(ChromeTabbedActivity.class)); } @@ -571,7 +571,7 @@ launchCustomTabs(FOO_URL); FirstRunActivity secondFreActivity = waitForDifferentFirstRunActivity(firstFreActivity); - clickThroughFirstRun(secondFreActivity, LocaleManager.SearchEnginePromoType.DONT_SHOW); + clickThroughFirstRun(secondFreActivity, SearchEnginePromoType.DONT_SHOW); verifyUrlEquals(FOO_URL, waitAndGetUriFromChromeActivity(CustomTabActivity.class)); } @@ -584,7 +584,7 @@ launchViewIntent(FOO_URL); FirstRunActivity secondFreActivity = waitForDifferentFirstRunActivity(firstFreActivity); - clickThroughFirstRun(secondFreActivity, LocaleManager.SearchEnginePromoType.DONT_SHOW); + clickThroughFirstRun(secondFreActivity, SearchEnginePromoType.DONT_SHOW); verifyUrlEquals(FOO_URL, waitAndGetUriFromChromeActivity(ChromeTabbedActivity.class)); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/LocaleManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/locale/LocaleManagerTest.java index 39f8e20..c7556d034 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/LocaleManagerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/locale/LocaleManagerTest.java
@@ -19,6 +19,7 @@ import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; +import org.chromium.chrome.browser.search_engines.SearchEnginePromoType; import org.chromium.chrome.browser.searchwidget.SearchActivity; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.util.ActivityTestUtils; @@ -55,7 +56,7 @@ @Override public int getSearchEnginePromoShowType() { getShowTypeCallback.notifyCalled(); - return LocaleManager.SearchEnginePromoType.DONT_SHOW; + return SearchEnginePromoType.DONT_SHOW; } });
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperTest.java similarity index 86% rename from chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperTest.java rename to chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperTest.java index 20a88d79..43a128c570 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperTest.java
@@ -2,7 +2,7 @@ // 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.locale; +package org.chromium.chrome.browser.search_engines; import android.content.Context; import android.support.test.InstrumentationRegistry; @@ -18,7 +18,6 @@ import org.junit.runner.RunWith; import org.chromium.base.test.UiThreadTest; -import org.chromium.chrome.browser.locale.LocaleManager.SearchEnginePromoType; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.components.browser_ui.widget.RadioButtonLayout; import org.chromium.components.search_engines.TemplateUrl; @@ -33,20 +32,17 @@ */ @RunWith(ChromeJUnit4ClassRunner.class) public class DefaultSearchEngineDialogHelperTest { - private class TestDelegate extends DefaultSearchEngineDialogHelper.HelperDelegate { - public TestDelegate(int dialogType) { - super(dialogType); - } - + private class TestDelegate implements DefaultSearchEngineDialogHelper.Delegate { public String chosenKeyword; @Override - protected List<TemplateUrl> getSearchEngines() { + public List<TemplateUrl> getSearchEnginesForPromoDialog(@SearchEnginePromoType int type) { return mTemplateUrls; } @Override - protected void onUserSeachEngineChoice(List<String> keywords, String keyword) { + public void onUserSearchEngineChoice( + @SearchEnginePromoType int type, List<String> keywords, String keyword) { chosenKeyword = keyword; } } @@ -80,17 +76,12 @@ } private class TestDialogHelper extends DefaultSearchEngineDialogHelper { - public TestDelegate delegate; + public final TestDelegate delegate; - public TestDialogHelper(@SearchEnginePromoType int dialogType, RadioButtonLayout controls, - Button confirmButton, Runnable finishRunnable) { - super(dialogType, controls, confirmButton, finishRunnable); - } - - @Override - protected HelperDelegate createDelegate(int dialogType) { - delegate = new TestDelegate(mDialogType); - return delegate; + public TestDialogHelper(@SearchEnginePromoType int dialogType, TestDelegate delegate, + RadioButtonLayout controls, Button confirmButton, Runnable finishRunnable) { + super(dialogType, delegate, controls, confirmButton, finishRunnable); + this.delegate = delegate; } } @@ -105,6 +96,7 @@ private final DismissRunnable mDismissRunnable = new DismissRunnable(); private final List<TemplateUrl> mTemplateUrls = new ArrayList<>(); + private final TestDelegate mTestDelegate = new TestDelegate(); private Context mContext; private @SearchEnginePromoType int mDialogType; @@ -124,12 +116,12 @@ @SmallTest @UiThreadTest public void testInitialState() { - mDialogType = LocaleManager.SearchEnginePromoType.SHOW_EXISTING; + mDialogType = SearchEnginePromoType.SHOW_EXISTING; RadioButtonLayout radioLayout = new RadioButtonLayout(mContext); Button okButton = new Button(mContext); - TestDialogHelper helper = - new TestDialogHelper(mDialogType, radioLayout, okButton, mDismissRunnable); + TestDialogHelper helper = new TestDialogHelper( + mDialogType, mTestDelegate, radioLayout, okButton, mDismissRunnable); // Confirm that no radio buttons are marked as selected. for (int i = 0; i < radioLayout.getChildCount(); i++) { @@ -184,7 +176,7 @@ final int maxAttempts = 3; boolean succeeded = false; - mDialogType = LocaleManager.SearchEnginePromoType.SHOW_EXISTING; + mDialogType = SearchEnginePromoType.SHOW_EXISTING; // Repeatedly create pairs of helpers and confirm that they are shuffled differently. If // this test repeatedly iterates without succeeding, then something is terribly wrong. @@ -192,13 +184,15 @@ RadioButtonLayout firstLayout = new RadioButtonLayout(mContext); Button firstButton = new Button(mContext); DismissRunnable firstRunnable = new DismissRunnable(); - new TestDialogHelper(mDialogType, firstLayout, firstButton, firstRunnable); + new TestDialogHelper( + mDialogType, mTestDelegate, firstLayout, firstButton, firstRunnable); Assert.assertEquals(mTemplateUrls.size(), firstLayout.getChildCount()); RadioButtonLayout secondLayout = new RadioButtonLayout(mContext); Button secondButton = new Button(mContext); DismissRunnable secondRunnable = new DismissRunnable(); - new TestDialogHelper(mDialogType, secondLayout, secondButton, secondRunnable); + new TestDialogHelper( + mDialogType, mTestDelegate, secondLayout, secondButton, secondRunnable); Assert.assertEquals(mTemplateUrls.size(), firstLayout.getChildCount()); boolean listsMatched = true; @@ -220,12 +214,12 @@ @SmallTest @UiThreadTest public void testSelectEngine() { - mDialogType = LocaleManager.SearchEnginePromoType.SHOW_EXISTING; + mDialogType = SearchEnginePromoType.SHOW_EXISTING; RadioButtonLayout radioLayout = new RadioButtonLayout(mContext); Button okButton = new Button(mContext); - TestDialogHelper helper = - new TestDialogHelper(mDialogType, radioLayout, okButton, mDismissRunnable); + TestDialogHelper helper = new TestDialogHelper( + mDialogType, mTestDelegate, radioLayout, okButton, mDismissRunnable); Assert.assertNull( "Engine selected after construction", helper.getCurrentlySelectedKeyword()); @@ -247,12 +241,12 @@ @SmallTest @UiThreadTest public void testFlipFlopSelection() { - mDialogType = LocaleManager.SearchEnginePromoType.SHOW_EXISTING; + mDialogType = SearchEnginePromoType.SHOW_EXISTING; RadioButtonLayout radioLayout = new RadioButtonLayout(mContext); Button okButton = new Button(mContext); - TestDialogHelper helper = - new TestDialogHelper(mDialogType, radioLayout, okButton, mDismissRunnable); + TestDialogHelper helper = new TestDialogHelper( + mDialogType, mTestDelegate, radioLayout, okButton, mDismissRunnable); Assert.assertNull( "Engine selected after construction", helper.getCurrentlySelectedKeyword());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperUtils.java b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperUtils.java similarity index 95% rename from chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperUtils.java rename to chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperUtils.java index e58c6178..f8b98645 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelperUtils.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelperUtils.java
@@ -2,7 +2,7 @@ // 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.locale; +package org.chromium.chrome.browser.search_engines; import android.view.View; import android.view.ViewGroup; @@ -14,7 +14,6 @@ import org.chromium.base.test.util.Criteria; import org.chromium.base.test.util.CriteriaHelper; import org.chromium.chrome.R; -import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.test.util.TestThreadUtils;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialogTest.java similarity index 81% rename from chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialogTest.java rename to chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialogTest.java index abf0d01..a266e18 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialogTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialogTest.java
@@ -2,7 +2,7 @@ // 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.locale; +package org.chromium.chrome.browser.search_engines; import android.app.Activity; import android.support.test.InstrumentationRegistry; @@ -22,7 +22,7 @@ import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; -import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; +import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.searchwidget.SearchActivity; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.util.ActivityTestUtils; @@ -30,6 +30,7 @@ import org.chromium.components.search_engines.TemplateUrlService; import org.chromium.content_public.browser.test.util.TestThreadUtils; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; @@ -98,15 +99,23 @@ private DefaultSearchEnginePromoDialog showDialog(final Activity activity) throws ExecutionException { - return TestThreadUtils.runOnUiThreadBlocking( - new Callable<DefaultSearchEnginePromoDialog>() { + DefaultSearchEngineDialogHelper.Delegate delegate = + new DefaultSearchEngineDialogHelper.Delegate() { @Override - public DefaultSearchEnginePromoDialog call() { - DefaultSearchEnginePromoDialog dialog = new DefaultSearchEnginePromoDialog( - activity, LocaleManager.SearchEnginePromoType.SHOW_EXISTING, null); - dialog.show(); - return dialog; + public List<TemplateUrl> getSearchEnginesForPromoDialog( + @SearchEnginePromoType int type) { + return new ArrayList<>(); } - }); + + @Override + public void onUserSearchEngineChoice(@SearchEnginePromoType int type, + List<String> keywords, String keyword) {} + }; + return TestThreadUtils.runOnUiThreadBlocking(() -> { + DefaultSearchEnginePromoDialog dialog = new DefaultSearchEnginePromoDialog( + activity, delegate, SearchEnginePromoType.SHOW_EXISTING, null); + dialog.show(); + return dialog; + }); } }
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 fd76846..31281cc 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
@@ -53,9 +53,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; -import org.chromium.chrome.browser.locale.DefaultSearchEngineDialogHelperUtils; -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; @@ -65,6 +62,10 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdown; import org.chromium.chrome.browser.omnibox.suggestions.base.BaseSuggestionView; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; +import org.chromium.chrome.browser.search_engines.DefaultSearchEngineDialogHelperUtils; +import org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog; +import org.chromium.chrome.browser.search_engines.DefaultSearchEnginePromoDialog.DefaultSearchEnginePromoDialogObserver; +import org.chromium.chrome.browser.search_engines.SearchEnginePromoType; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.searchwidget.SearchActivity.SearchActivityDelegate; import org.chromium.chrome.browser.share.clipboard.ClipboardImageFileProvider; @@ -191,7 +192,7 @@ mTestDelegate = new TestDelegate(); SearchActivity.setDelegateForTests(mTestDelegate); - DefaultSearchEnginePromoDialog.setObserverForTests(mTestDelegate); + DefaultSearchEnginePromoDialog.setObserverForTests2(mTestDelegate); } @After
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java deleted file mode 100644 index 641d8f41..0000000 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java +++ /dev/null
@@ -1,138 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.webapps.launchpad; - -import android.graphics.Bitmap; -import android.support.test.InstrumentationRegistry; -import android.view.View; - -import androidx.recyclerview.widget.RecyclerView; -import androidx.test.filters.MediumTest; - -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.chromium.base.test.util.CommandLineFlags; -import org.chromium.base.test.util.Feature; -import org.chromium.chrome.browser.flags.ChromeSwitches; -import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -import org.chromium.chrome.test.util.ActivityTestUtils; -import org.chromium.components.browser_ui.site_settings.PermissionInfo; -import org.chromium.components.content_settings.ContentSettingValues; -import org.chromium.components.content_settings.ContentSettingsType; -import org.chromium.content_public.browser.test.util.TestThreadUtils; -import org.chromium.content_public.browser.test.util.TouchCommon; -import org.chromium.ui.modaldialog.ModalDialogManager; -import org.chromium.ui.modaldialog.ModalDialogProperties; -import org.chromium.ui.modelutil.PropertyModel; -import org.chromium.ui.test.util.RenderTestRule; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Tests for the LaunchpadActivity. - */ -@RunWith(ChromeJUnit4ClassRunner.class) -@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -public final class LaunchpadActivityTest { - private static final String APP_PACKAGE_NAME = "package.name.1"; - private static final String APP_NAME = "App Name 1"; - private static final String APP_SHORT_NAME = "App 1"; - private static final String APP_URL = "https://example.com/1"; - private static final Bitmap TEST_ICON = Bitmap.createBitmap(20, 20, Bitmap.Config.ARGB_8888); - - private static final List<LaunchpadItem> MOCK_APP_LIST = new ArrayList<>(Arrays.asList( - new LaunchpadItem(APP_PACKAGE_NAME, APP_SHORT_NAME, APP_NAME, APP_URL, TEST_ICON))); - @Rule - public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); - - @Rule - public RenderTestRule mRenderTestRule = - RenderTestRule.Builder.withPublicCorpus().setRevision(1).build(); - - private LaunchpadActivity mLaunchpadActivity; - private LaunchpadCoordinator mLaunchpadCoordinator; - - @Before - public void setUp() { - mActivityTestRule.startMainActivityOnBlankPage(); - } - - @After - public void tearDown() { - if (mLaunchpadActivity != null) { - mLaunchpadActivity.finish(); - } - } - - private void openLaunchpadActivity() { - LaunchpadUtils.setOverrideItemListForTesting(MOCK_APP_LIST); - mLaunchpadActivity = ActivityTestUtils.waitForActivity( - InstrumentationRegistry.getInstrumentation(), LaunchpadActivity.class, () -> { - TestThreadUtils.runOnUiThreadBlocking( - () - -> LaunchpadUtils.showLaunchpadActivity( - mActivityTestRule.getActivity())); - }); - mLaunchpadCoordinator = mLaunchpadActivity.getCoordinatorForTesting(); - } - - @Test - @MediumTest - @Feature({"RenderTest"}) - public void testShowLaunchpadActivity() throws IOException { - openLaunchpadActivity(); - mRenderTestRule.render(mLaunchpadCoordinator.getView(), "LaunchpadActivity"); - } - - @Test - @MediumTest - @Feature({"RenderTest"}) - public void testAppManagementMenu() throws IOException { - openLaunchpadActivity(); - setPermissionDefaults(); - - View item = ((RecyclerView) mLaunchpadCoordinator.getView().findViewById( - R.id.launchpad_recycler)) - .getChildAt(0); - TouchCommon.longPressView(item); - - ModalDialogManager modalDialogManager = mLaunchpadActivity.getModalDialogManager(); - PropertyModel dialogModel = modalDialogManager.getCurrentDialogForTest(); - View dialogView = dialogModel.get(ModalDialogProperties.CUSTOM_VIEW); - - mRenderTestRule.render(dialogView, "launchpad_management_menu"); - } - - /** - * Set permissions to run the test. Notifications set to Block, Mic set to Allow, Camera set to - * Allow, Location set to ASK. - */ - private void setPermissionDefaults() { - TestThreadUtils.runOnUiThreadBlocking(() -> { - Profile profile = Profile.getLastUsedRegularProfile(); - PermissionInfo notifications = new PermissionInfo(ContentSettingsType.NOTIFICATIONS, - APP_URL, null /* embedder */, false /* isEmbargoed */); - notifications.setContentSetting(profile, ContentSettingValues.BLOCK); - PermissionInfo mic = new PermissionInfo(ContentSettingsType.MEDIASTREAM_MIC, APP_URL, - null /* embedder */, false /* isEmbargoed */); - mic.setContentSetting(profile, ContentSettingValues.ALLOW); - PermissionInfo camera = new PermissionInfo(ContentSettingsType.MEDIASTREAM_CAMERA, - APP_URL, null /* embedder */, false /* isEmbargoed */); - camera.setContentSetting(profile, ContentSettingValues.ALLOW); - PermissionInfo location = new PermissionInfo(ContentSettingsType.GEOLOCATION, APP_URL, - null /* embedder */, false /* isEmbargoed */); - location.setContentSetting(profile, ContentSettingValues.ASK); - }); - } -}
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index c2e27fc4..a816fdf 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -6223,10 +6223,10 @@ No thanks </message> </if> - <message name="IDS_PASSWORD_MANAGER_USERNAME_LABEL" desc="Label for the username field in a prompt to store new credential"> + <message name="IDS_PASSWORD_MANAGER_USERNAME_LABEL" desc="Label for the username field in a prompt to store new credential" formatter_data="android_java"> Username </message> - <message name="IDS_PASSWORD_MANAGER_PASSWORD_LABEL" desc="Label for the password field in a prompt to store new credential"> + <message name="IDS_PASSWORD_MANAGER_PASSWORD_LABEL" desc="Label for the password field in a prompt to store new credential" formatter_data="android_java"> Password </message> <if expr="not is_android"> @@ -6334,7 +6334,7 @@ <message name="IDS_PASSWORD_MANAGER_BLOCKLIST_BUTTON" desc="Mobile: Button text for the 'Save Password' infobar's 'Never remember for this site' option"> Never </message> - <message name="IDS_PASSWORD_MANAGER_UPDATE_BUTTON" desc="Label for the 'update' button in the Update Password infobar. This infobar asks if the user wishes to update the saved password for a site to a new password the user has just entered; the button applies the suggested update."> + <message name="IDS_PASSWORD_MANAGER_UPDATE_BUTTON" desc="Label for the 'update' button in the Update Password infobar. This infobar asks if the user wishes to update the saved password for a site to a new password the user has just entered; the button applies the suggested update." formatter_data="android_java"> Update </message> <message name="IDS_PASSWORD_SAVING_STATUS_TOGGLE" desc="Label for the toggle that shows whether saving passwords for the current site is enabled or disabled."> @@ -6361,10 +6361,10 @@ <message name="IDS_PASSWORD_MANAGER_ACCESSORY_GENERATE_PASSWORD_BUTTON_TITLE" desc="Text for the button used to generate a password."> Suggest strong password </message> - <message name="IDS_UPDATE_PASSWORD_DIALOG_TITLE" desc="The title of the update password dialog."> + <message name="IDS_UPDATE_PASSWORD_DIALOG_TITLE" desc="The title of the update password dialog." formatter_data="android_java"> Update password for <ph name="ORIGIN">%1$s<ex>example.com</ex></ph> </message> - <message name="IDS_UPDATE_PASSWORD_DIALOG_SIGNED_IN_DESCRIPTION" desc="The description at the bottom of update password dialog when the user is signed in."> + <message name="IDS_UPDATE_PASSWORD_DIALOG_SIGNED_IN_DESCRIPTION" desc="The description at the bottom of update password dialog when the user is signed in." formatter_data="android_java"> Passwords are saved in your Google Account (<ph name="ACCOUNT">%1$s<ex>user@gmail.com</ex></ph>) so you can use them on any device </message> </if>
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp index 77fe768..6ef74f4 100644 --- a/chrome/app/os_settings_strings.grdp +++ b/chrome/app/os_settings_strings.grdp
@@ -2542,7 +2542,7 @@ Show device EID and QR code popup </message> <message name="IDS_SETTINGS_INTERNET_ESIM_NO_CONNECTION_ERROR_TOAST" desc="Message in toast displayed when user tries to perform an eSIM operation when not connected to a non-cellular network."> - Establish an internet connection first + Connect to Wi-Fi or Ethernet to set up eSIM </message> <message name="IDS_SETTINGS_INTERNET_ESIM_MOBILE_DATA_NOT_ENABLED_ERROR_TOAST" desc="Message in toast displayed when user tries to set up an eSIM profile when mobile data is not enabled."> Enable mobile data to install an eSIM profile
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_INTERNET_ESIM_NO_CONNECTION_ERROR_TOAST.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_INTERNET_ESIM_NO_CONNECTION_ERROR_TOAST.png.sha1 index fa5002f..06e4b83 100644 --- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_INTERNET_ESIM_NO_CONNECTION_ERROR_TOAST.png.sha1 +++ b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_INTERNET_ESIM_NO_CONNECTION_ERROR_TOAST.png.sha1
@@ -1 +1 @@ -91389d839b1e6c8aa5201777bfe3885c47431706 \ No newline at end of file +f3c9f480c599ef8b7816174ec5ad4377a84dce9b \ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb index 02b47247..0af7529 100644 --- a/chrome/app/resources/chromium_strings_as.xtb +++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -143,6 +143,7 @@ <translation id="5653831366781983928">অনুগ্ৰহ কৰি এতিয়া Chromium ৰিষ্টাৰ্ট কৰক</translation> <translation id="5698481217667032250">এই ভাষাত Chromium প্ৰদর্শন কৰক</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380"><ph name="BEGIN_LINK_LINUX_OSS" />Linux বিকাশৰ পৰিৱেশ<ph name="END_LINK_LINUX_OSS" />ৰ দৰে অতিৰিক্ত <ph name="BEGIN_LINK_CROS_OSS" />মুক্ত উৎসৰ ছফ্টৱেৰ<ph name="END_LINK_CROS_OSS" />ৰ জৰিয়তে Chromium OSক ব্যৱহাৰযোগ্য কৰা হৈছে।</translation> <translation id="5862307444128926510">Chromium লৈ স্বাগতম</translation> <translation id="5895138241574237353">ৰিষ্টাৰ্ট কৰক</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - নেটৱর্কত ছাইন ইন</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb index 363d42ae..f9a1e359 100644 --- a/chrome/app/resources/chromium_strings_bn.xtb +++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -141,6 +141,7 @@ <translation id="5653831366781983928">এখনই Chromium রিস্টার্ট করুন</translation> <translation id="5698481217667032250">এই ভাষায় Chromium প্রদর্শন করুন</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380"><ph name="BEGIN_LINK_LINUX_OSS" />Linux ডেভেলপমেন্ট এনভায়রনমেন্ট<ph name="END_LINK_LINUX_OSS" />-এর ক্ষেত্রে যেমন করা হয়েছে, তেমনভাবে অতিরিক্ত <ph name="BEGIN_LINK_CROS_OSS" />ওপেন সোর্স সফ্টওয়্যার<ph name="END_LINK_CROS_OSS" />-এর মাধ্যমে Chromium OS তৈরি করা সম্ভব হয়েছে।</translation> <translation id="5862307444128926510">Chromium-এ স্বাগতম</translation> <translation id="5895138241574237353">পুনর্সূচনা</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - নেটওয়ার্ক সাইন-ইন</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb index 827bab7..cc8696c8 100644 --- a/chrome/app/resources/chromium_strings_fr.xtb +++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -142,7 +142,7 @@ <translation id="5653831366781983928">Veuillez redémarrer Chromium maintenant</translation> <translation id="5698481217667032250">Afficher Chromium dans cette langue</translation> <translation id="5820394555380036790">Chromium OS</translation> -<translation id="5854740544000584380">Chromium OS fonctionne grâce à d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels Open Source<ph name="END_LINK_CROS_OSS" />, tout comme l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" />.</translation> +<translation id="5854740544000584380">Chromium OS dépend d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels Open Source<ph name="END_LINK_CROS_OSS" />, et l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" /> en est un.</translation> <translation id="5862307444128926510">Bienvenue dans Chromium</translation> <translation id="5895138241574237353">Redémarrer</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Connexion au réseau</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb index b90263a3..519bddd5 100644 --- a/chrome/app/resources/chromium_strings_gu.xtb +++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -143,6 +143,7 @@ <translation id="5653831366781983928">કૃપા કરીને હવે Chromium ફરી શરૂ કરો</translation> <translation id="5698481217667032250">આ ભાષામાં Chromium બતાવો</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380"><ph name="BEGIN_LINK_LINUX_OSS" />Linux ડેવલપમેન્ટ વાતાવરણ<ph name="END_LINK_LINUX_OSS" />ની જેમ, Chromium OS વધારાના <ph name="BEGIN_LINK_CROS_OSS" />ઓપન સૉર્સ સૉફ્ટવેર<ph name="END_LINK_CROS_OSS" /> દ્વારા તૈયાર કરવામાં આવ્યું છે.</translation> <translation id="5862307444128926510">Chromium માં સ્વાગત છે</translation> <translation id="5895138241574237353">પુનઃપ્રારંભ કરો</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - નેટવર્ક સાઇન ઇન</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb index 23632079..3ec5eb4 100644 --- a/chrome/app/resources/chromium_strings_it.xtb +++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -141,7 +141,7 @@ <translation id="5653831366781983928">Riavvia subito Chromium</translation> <translation id="5698481217667032250">Visualizza Chromium in questa lingua</translation> <translation id="5820394555380036790">Chromium OS</translation> -<translation id="5854740544000584380">La realizzazione di Chromium OS è stata possibile grazie a <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivo, noto come <ph name="BEGIN_LINK_LINUX_OSS" />ambiente di sviluppo Linux<ph name="END_LINK_LINUX_OSS" />.</translation> +<translation id="5854740544000584380">La realizzazione di Chromium OS è stata possibile grazie a un <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivo, noto come <ph name="BEGIN_LINK_LINUX_OSS" />ambiente di sviluppo Linux<ph name="END_LINK_LINUX_OSS" />.</translation> <translation id="5862307444128926510">Benvenuto in Chromium</translation> <translation id="5895138241574237353">Riavvia</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Accesso rete</translation>
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb index b3d5e93..2fe6ea2 100644 --- a/chrome/app/resources/chromium_strings_kk.xtb +++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -143,7 +143,7 @@ <translation id="5653831366781983928">Chromium браузерін қайта іске қосыңыз</translation> <translation id="5698481217667032250">Chromium жүйесін осы тілде көрсету</translation> <translation id="5820394555380036790">Chromium OS</translation> -<translation id="5854740544000584380">Chromium OS операциялық жүйесі де <ph name="BEGIN_LINK_LINUX_OSS" />Linux әзірлеу ортасы<ph name="END_LINK_LINUX_OSS" /> сияқты<ph name="BEGIN_LINK_CROS_OSS" />ашық кодты бағдарламалық құрал<ph name="END_LINK_CROS_OSS" /> арқасында қолжетімді болды.</translation> +<translation id="5854740544000584380">Chromium OS операциялық жүйесі де <ph name="BEGIN_LINK_LINUX_OSS" />Linux әзірлеу ортасы<ph name="END_LINK_LINUX_OSS" /> сияқты <ph name="BEGIN_LINK_CROS_OSS" />ашық кодты бағдарламалық құрал<ph name="END_LINK_CROS_OSS" /> арқасында қолжетімді болды.</translation> <translation id="5862307444128926510">Chromium жүйесіне қош келдіңіз</translation> <translation id="5895138241574237353">Қайта іске қосу</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Желіге кіру</translation>
diff --git a/chrome/app/resources/chromium_strings_mr.xtb b/chrome/app/resources/chromium_strings_mr.xtb index 76c4d7ce..d3c3040 100644 --- a/chrome/app/resources/chromium_strings_mr.xtb +++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -142,6 +142,7 @@ <translation id="5653831366781983928">कृपया आता Chromium रीस्टार्ट करा</translation> <translation id="5698481217667032250">Chromium या भाषेत डिस्प्ले करा</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380">Chromium OS हे <ph name="BEGIN_LINK_LINUX_OSS" />Linux डेव्हलपमेंट पद्धत<ph name="END_LINK_LINUX_OSS" /> यासारख्या अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />मुक्त स्रोत सॉफ्टवेअर<ph name="END_LINK_CROS_OSS" /> याद्वारे तयार करण्यात आले आहे.</translation> <translation id="5862307444128926510">Chromium वर तुमचे स्वागत आहे</translation> <translation id="5895138241574237353">रीस्टार्ट करा</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - नेटवर्क साइन इन</translation>
diff --git a/chrome/app/resources/chromium_strings_ne.xtb b/chrome/app/resources/chromium_strings_ne.xtb index 2e11b21..1816e28 100644 --- a/chrome/app/resources/chromium_strings_ne.xtb +++ b/chrome/app/resources/chromium_strings_ne.xtb
@@ -141,6 +141,7 @@ <translation id="5653831366781983928">अहिले नै Chromium पुनः सुरु गर्नुहोस्</translation> <translation id="5698481217667032250">यो भाषामा Chromium प्रदर्शित गर्नुहोस्</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380">Chromium OS पनि <ph name="BEGIN_LINK_LINUX_OSS" />Linux डेभलपमेन्ट इनभारमेन्ट<ph name="END_LINK_LINUX_OSS" /> जस्तै अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />खुला स्रोतको सफ्टवेयर<ph name="END_LINK_CROS_OSS" /> प्रयोग गरी निर्माण गरिएको हो।</translation> <translation id="5862307444128926510">Chromium मा स्वागतम्</translation> <translation id="5895138241574237353">पुन: शुरू गर्नुहोस्</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - नेटवर्क साइन इन</translation>
diff --git a/chrome/app/resources/chromium_strings_or.xtb b/chrome/app/resources/chromium_strings_or.xtb index 1eba365..ff06d28 100644 --- a/chrome/app/resources/chromium_strings_or.xtb +++ b/chrome/app/resources/chromium_strings_or.xtb
@@ -143,6 +143,7 @@ <translation id="5653831366781983928">ଦୟାକରି ବର୍ତ୍ତମାନ Chromium ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation> <translation id="5698481217667032250">Chromiumକୁ ଏହି ଭାଷାରେ ପ୍ରଦର୍ଶନ କରନ୍ତୁ</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380">Chromium OS <ph name="BEGIN_LINK_LINUX_OSS" />Linux ଡେଭଲପମେଣ୍ଟ ପରିବେଶ<ph name="END_LINK_LINUX_OSS" /> ପରି ଅତିରିକ୍ତ <ph name="BEGIN_LINK_CROS_OSS" />ଓପନ୍ ସୋର୍ସ ସଫ୍ଟୱେର୍<ph name="END_LINK_CROS_OSS" /> ଦ୍ୱାରା ସମ୍ଭବପର ହୋଇଛି।</translation> <translation id="5862307444128926510">Chromiumକୁ ସ୍ଵାଗତ</translation> <translation id="5895138241574237353">ପୁନଃଆରମ୍ଭ</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ନେଟୱାର୍କ ସାଇନ୍-ଇନ୍</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index 4eaa49a..c388522e 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -139,6 +139,7 @@ <translation id="5653831366781983928">దయచేసి ఇప్పుడు Chromiumను మళ్ళీ ప్రారంభించండి</translation> <translation id="5698481217667032250">Chromiumను ఈ భాషలో ప్రదర్శించు</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380"><ph name="BEGIN_LINK_LINUX_OSS" />Linux డెవలప్మెంట్ ఎన్విరాన్మెంట్<ph name="END_LINK_LINUX_OSS" /> లాగానే Chromium OS కూడా అదనపు <ph name="BEGIN_LINK_CROS_OSS" />ఓపెన్ సోర్స్ సాఫ్ట్వేర్<ph name="END_LINK_CROS_OSS" />పై ఎంతగానో ఆధారపడుతుంది.</translation> <translation id="5862307444128926510">Chromiumకు స్వాగతం</translation> <translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - నెట్వర్క్ సైన్ ఇన్</translation>
diff --git a/chrome/app/resources/chromium_strings_ur.xtb b/chrome/app/resources/chromium_strings_ur.xtb index 680bcf6..480d7ae9 100644 --- a/chrome/app/resources/chromium_strings_ur.xtb +++ b/chrome/app/resources/chromium_strings_ur.xtb
@@ -143,6 +143,7 @@ <translation id="5653831366781983928">براہ کرم ابھی Chromium کو ری اسٹارٹ کریں</translation> <translation id="5698481217667032250">Chromium کو اس زبان میں ڈسپلے کریں</translation> <translation id="5820394555380036790">Chromium OS</translation> +<translation id="5854740544000584380">Chromium OS کو اضافی <ph name="BEGIN_LINK_CROS_OSS" />اوپن سورس سافٹ ویئر<ph name="END_LINK_CROS_OSS" /> کے ذریعے ممکن بنایا گیا ہے، جیسے کہ <ph name="BEGIN_LINK_LINUX_OSS" />Linux ڈیولپمنٹ انوائرنمنٹ<ph name="END_LINK_LINUX_OSS" />۔</translation> <translation id="5862307444128926510">Chromium میں خوش آمدید</translation> <translation id="5895138241574237353">دوبارہ شروع کریں</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - نیٹ ورک سائن ان</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb index 4a17701..0531a9e 100644 --- a/chrome/app/resources/chromium_strings_zh-CN.xtb +++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -141,6 +141,7 @@ <translation id="5653831366781983928">请立即重启 Chromium</translation> <translation id="5698481217667032250">以这种语言显示 Chromium</translation> <translation id="5820394555380036790">Chromium 操作系统</translation> +<translation id="5854740544000584380">Chromium 操作系统是借助了其他<ph name="BEGIN_LINK_CROS_OSS" />开源软件<ph name="END_LINK_CROS_OSS" />才得以问世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 开发环境<ph name="END_LINK_LINUX_OSS" />也是如此。</translation> <translation id="5862307444128926510">欢迎使用 Chromium</translation> <translation id="5895138241574237353">重新启动</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - 网络登录</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 2e6f039..ab02f1e6 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Bekyk bron</translation> <translation id="244231003699905658">Ongeldige adres. Gaan die adres na en probeer weer.</translation> <translation id="2442916515643169563">Teksskadu</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Uitbreiding se wortelgids word vereis.</translation> <translation id="2445484935443597917">Skep 'n nuwe profiel</translation> <translation id="2448312741937722512">Soort</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Plak en gaan</translation> <translation id="2766161002040448006">Vra 'n ouer</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> sal <ph name="FILENAME" /> kan wysig totdat jy alle oortjies vir hierdie werf toemaak</translation> -<translation id="276969039800130567">Aangemeld as <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Verwyder van lys af</translation> <translation id="2770690685823456775">Voer jou wagwoorde na 'n ander vouer uit</translation> <translation id="2770929488047004208">Monitorresolusie</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 81b8b0cd..ae2c072 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">ም&ንጭ አሳይ</translation> <translation id="244231003699905658">ልክ ያልሆነ አድራሻ። እባክዎ አድራሻውን ይፈትሹ እና እንደገና ይሞክሩ።</translation> <translation id="2442916515643169563">የጽሑፍ ጥላ</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">የቅጥያ ስርወ ማውጫ ያስፈልጋል።</translation> <translation id="2445484935443597917">አዲስ መገለጫ ፍጠር</translation> <translation id="2448312741937722512">አይነት</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">ለ&ጥፍና እና ሂድ</translation> <translation id="2766161002040448006">አንድ ወላጅ ጠይቅ</translation> <translation id="2767127727915954024">ሁሉንም የዚህ ጣቢያ ትሮችን እስኪዘጉ ድረስ <ph name="ORIGIN" /> <ph name="FILENAME" />ን ማርትዕ ይችላሉ</translation> -<translation id="276969039800130567">እንደ <ph name="USER_EMAIL_ADDRESS" /> ሆነው ገብተዋል።</translation> <translation id="2770465223704140727">ከዝርዝር አስወግድ</translation> <translation id="2770690685823456775">የእርስዎን የይለፍ ቃላት ወደ ሌላ አቃፊ ይላኩ</translation> <translation id="2770929488047004208">የማሳያ ምስል ጥራት</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index c971521..9342fb98 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1335,7 +1335,6 @@ <translation id="2440604414813129000">عرض الم&صدر</translation> <translation id="244231003699905658">العنوان غير صالح يُرجى التحقّق من العنوان وإعادة المحاولة.</translation> <translation id="2442916515643169563">ظل النص</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">دليل الجذر للإضافة مطلوب.</translation> <translation id="2445484935443597917">إنشاء ملف شخصي جديد</translation> <translation id="2448312741937722512">النوع</translation> @@ -1425,7 +1424,7 @@ <translation id="252502352004572774">يتحقّق متصفِّح Chrome حاليًا من البرامج الضارّة على جهاز الكمبيوتر...</translation> <translation id="2526277209479171883">التثبيت والمتابعة</translation> <translation id="2526590354069164005">سطح المكتب</translation> -<translation id="2526619973349913024">التحقق من وجود تحديث</translation> +<translation id="2526619973349913024">التحقّق من توفّر تحديث</translation> <translation id="2527167509808613699">جميع أنواع الاتصالات</translation> <translation id="2530166226437958497">تحديد المشاكل وحلّها</translation> <translation id="2532589005999780174">وضع التباين العالي</translation> @@ -1642,7 +1641,6 @@ <translation id="2766006623206032690">&لصق عنوان URL والدخول إليه</translation> <translation id="2766161002040448006">طلب الإذن من أحد الوالدَين</translation> <translation id="2767127727915954024">سيتمكّن <ph name="ORIGIN" /> من تعديل <ph name="FILENAME" /> إلى أن يتم إغلاق جميع علامات تبويب هذا الموقع الإلكتروني.</translation> -<translation id="276969039800130567">تم تسجيل الدخول بحساب <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">إزالة من القائمة</translation> <translation id="2770690685823456775">تصدير كلمات المرور إلى مجلد آخر</translation> <translation id="2770929488047004208">درجة دقة شاشة العرض</translation> @@ -5362,7 +5360,7 @@ <translation id="6979044105893951891">بدء جلسات الضيوف المُدارة والخروج منها</translation> <translation id="6979440798594660689">كتم الصوت (تلقائي)</translation> <translation id="6979737339423435258">جميع الأوقات</translation> -<translation id="6981982820502123353">إمكانية الوصول</translation> +<translation id="6981982820502123353">تسهيل الاستخدام</translation> <translation id="6983507711977005608">قطع الاتصال بشبكة "التوصيل الفوري"</translation> <translation id="6983783921975806247">معرّف الكائنات (OID) المسجل</translation> <translation id="6984299437918708277">اختر صورة لعرضها لحسابك في شاشة تسجيل الدخول</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index b7fb4365..52820255 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -1633,7 +1633,6 @@ <translation id="2766006623206032690">পে&ষ্ট কৰক আৰু আগবাঢ়ক</translation> <translation id="2766161002040448006">এগৰাকী অভিভাৱকক সোধক</translation> <translation id="2767127727915954024">আপুনি এই ছাইটটোৰ বাবে সকলো টেব বন্ধ নকৰা পর্যন্ত <ph name="ORIGIN" />এ <ph name="FILENAME" /> সম্পাদনা কৰিব পাৰিব</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> হিচাপে ছাইন ইন কৰিছে।</translation> <translation id="2770465223704140727">সূচীৰ পৰা আঁতৰাওক</translation> <translation id="2770690685823456775">আপোনাৰ পাছৱৰ্ড বেলেগ ফ’ল্ডাৰলৈ ৰপ্তানি কৰক</translation> <translation id="2770929488047004208">মনিটৰৰ ৰিজ’লিউশ্বন</translation> @@ -4637,6 +4636,7 @@ <translation id="6184099524311454384">সন্ধানৰ টেব</translation> <translation id="6185132558746749656">ডিভাইচৰ অৱস্থান</translation> <translation id="6186394437969115158">ছাইটসমূহে সচৰাচৰ বিজ্ঞাপন দেখুৱায় গতিকে সেইবোৰে বিনামূলীয়াকৈ সমল আৰু সেৱাসমূহ প্ৰদান কৰিব পাৰে। কিন্তু, কিছুমান ছাইট অননুমোদিত বা বিভ্ৰান্তিকৰ বিজ্ঞাপন দেখুওৱাৰ বাবে জনাজাত।</translation> +<translation id="6195005504600220730">আপোনাৰ ব্ৰাউজাৰ, OS আৰু ডিভাইচৰ বিষয়ে তথ্য পঢ়ক</translation> <translation id="6195693561221576702">এই ডিভাইচটো অফলাইন ডেম' ম'ডত ছেট আপ কৰিব নোৱাৰি।</translation> <translation id="6195724942939841102">পুনঃস্থাপন নকৰিব</translation> <translation id="6196640612572343990">তৃতীয়-পক্ষৰ কুকিসমূহ অৱৰোধ কৰক</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 63ec8eb..d15a1b9 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -1326,7 +1326,6 @@ <translation id="2440604414813129000">Mənbəyə baxın</translation> <translation id="244231003699905658">Ünvan yanlışdır. Ünvanı yoxlayın və yenidən cəhd edin.</translation> <translation id="2442916515643169563">Mətn kölgəsi</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Daxili kök kataloq tələb olunur.</translation> <translation id="2445484935443597917">Yeni Profil Yaradın</translation> <translation id="2448312741937722512">Növ</translation> @@ -1631,7 +1630,6 @@ <translation id="2766006623206032690">Yerləşdirin və keçin</translation> <translation id="2766161002040448006">Valideyndən soruşun</translation> <translation id="2767127727915954024">Siz bu sayt üzrə bütün tabları bağlayanadək <ph name="ORIGIN" /> <ph name="FILENAME" /> faylını redaktə edə biləcək</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> olaraq hesaba girdi.</translation> <translation id="2770465223704140727">Siyahıdan silin</translation> <translation id="2770690685823456775">Parolları digər qovluğa eksport edin</translation> <translation id="2770929488047004208">Monitorun ayırdetmə dəqiqliyi</translation> @@ -2387,6 +2385,7 @@ <translation id="3616741288025931835">&Brauzinq tarixçəsini təmizləyin...</translation> <translation id="3617891479562106823">Arxa fonlar əlçatan deyil. Sonra yenidən cəhd edin.</translation> <translation id="3619115746895587757">Kappuçino</translation> +<translation id="362266093274784978">{COUNT,plural, =1{tətbiq}other{# tətbiq}}</translation> <translation id="362333465072914957">Sertifikat Təşkilatının sertifikat verməsi gözlənilir</translation> <translation id="3624567683873126087">Cihazı kiliddən çıxarın və Google Hesabına daxil olun</translation> <translation id="3625481642044239431">Yanlış fayl seçilib. Yenidən cəhd edin.</translation> @@ -2658,6 +2657,7 @@ <translation id="3895076768659607631">&Axtarış Sistemlərini İdarə Edin...</translation> <translation id="3895090224522145010">Kerberos istifadəçi adı</translation> <translation id="389521680295183045">Saytlar cihazınızdan nə zaman aktiv şəkildə istifadə etdiyinizi bilmək üçün icazə istəyə bilər</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{şəkil}other{# şəkil}}</translation> <translation id="3898233949376129212">Cihazın dili</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> bunu etmək istəyir: <ph name="FIRST_PERMISSION" /> və <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">Klaviatura seçin</translation> @@ -3569,6 +3569,7 @@ <translation id="4943368462779413526">Futbol</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" silsilə porta qoşulmaq istəyir</translation> <translation id="4944310289250773232">Bu doğrulama xidməti <ph name="SAML_DOMAIN" /> tərəfindən təmin edilir</translation> +<translation id="495164417696120157">{COUNT,plural, =1{fayl}other{# fayl}}</translation> <translation id="495170559598752135">Fəaliyyətlər</translation> <translation id="4953808748584563296">Defolt narıncı avatar</translation> <translation id="4955710816792587366">PIN seçin</translation> @@ -5066,6 +5067,7 @@ <translation id="6664237456442406323">Kompüteriniz düzgün olmayan avadanlıq ID-si ilə sazlanıb. Bu, Chrome əməliyyat sistemini ən son güvənlik bərpaları etməyə mane ola və kompüteriniz <ph name="BEGIN_BOLD" />hücumlara məruz qala bilər<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">Profilinizi açarkən xəta baş verdi. Hesabdan çıxın və yenidən daxil olun.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> indi əlçatandır</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{ünvan}other{# ünvan}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Sinxronizasiyanı başlatmaq üçün parol ifadənizi daxil edin</translation> <translation id="6675665718701918026">Cihazın qoşulu olduğu göstərilir</translation> @@ -5762,6 +5764,7 @@ <translation id="7456142309650173560">dev</translation> <translation id="7456847797759667638">Məkanı Açın...</translation> <translation id="7457384018036134905">Chrome OS parametrlərində dilləri idarə edin</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{keçid}other{# keçid}}</translation> <translation id="7458168200501453431">Google, axtarışda istifadə edilən orfoqrafiya yoxlanışının eynisindən istifadə edir. Brauzerdə yazdığınız mətn Google'a göndərilir.</translation> <translation id="7460045493116006516">Quraşdırdığınız hazırki tema</translation> <translation id="7461924472993315131">Pin</translation> @@ -6162,6 +6165,7 @@ <translation id="7883792253546618164">İstədiyiniz vaxt abunəlikdən çıxın.</translation> <translation id="788453346724465748">Hesab məlumatı yüklənir...</translation> <translation id="7885253890047913815">Son İstiqamətlər</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{element}other{# element}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">Dublikat yaradın</translation> <translation id="7887864092952184874">Bluetooth mausu cütləndi</translation> @@ -6400,6 +6404,7 @@ <translation id="8139447493436036221">Google Disk faylları</translation> <translation id="8141584439523427891">İndi alternativ brauzerdə açılır</translation> <translation id="8141725884565838206">Parollarınızı idarə edin</translation> +<translation id="814204052173971714">{COUNT,plural, =1{video}other{# video}}</translation> <translation id="8143442547342702591">Yanlış tətbiq</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> seçin</translation> <translation id="8146177459103116374">Bu cihazda artıq qeydiyyatdan keçmisinizsə, <ph name="LINK2_START" />mövcud istifadəçi olaraq hesaba girə bilərsiniz<ph name="LINK2_END" />.</translation> @@ -6419,6 +6424,7 @@ <translation id="8161293209665121583">Veb səhifələr üçün oxucu rejimi</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Tabeli Yeni Pəncərəyə Köçürün}other{Tabelləri Yeni Pəncərəyə Köçürün}}</translation> <translation id="8165997195302308593">Crostini port yönləndirməsi</translation> +<translation id="816704878106051517">{COUNT,plural, =1{telefon nömrəsi}other{# telefon nömrəsi}}</translation> <translation id="8168435359814927499">Kontent</translation> <translation id="8168943654413034772">"Seçin" olaraq təyin edilmiş yeganə dəyişdiricini ləğv etmək mümkün deyil. Çıxmaq üçün istənilən düyməni basın.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{Oxuma Siyahısına Tab əlavə edin}other{Oxuma Siyahısına Tablar əlavə edin}}</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 745126d..b21a1f1 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1334,7 +1334,6 @@ <translation id="2440604414813129000">Паказаць зы&ходны тэкст</translation> <translation id="244231003699905658">Несапраўдны адрас. Праверце адрас і паўтарыце спробу.</translation> <translation id="2442916515643169563">Цень ад тэксту</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Патрабуецца каранёвы каталог пашырэння.</translation> <translation id="2445484935443597917">Стварыць новы профіль</translation> <translation id="2448312741937722512">Тып</translation> @@ -1639,7 +1638,6 @@ <translation id="2766006623206032690">Ус&тавіць і перайсці</translation> <translation id="2766161002040448006">Папрасіць дазвол у бацькоў</translation> <translation id="2767127727915954024">Сайт <ph name="ORIGIN" /> зможа змяняць файл <ph name="FILENAME" />, пакуль вы не закрыеце ўсе ўкладкі гэтага сайта</translation> -<translation id="276969039800130567">Вы ўвайшлі як <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Выдаліць са спіса</translation> <translation id="2770690685823456775">Экспартуйце свае паролі ў іншую папку</translation> <translation id="2770929488047004208">Раздзяляльнасць манітора</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index ef317ef..2ef6254 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -1328,7 +1328,6 @@ <translation id="2440604414813129000">&Преглед на изходния код</translation> <translation id="244231003699905658">Невалиден адрес. Моля, проверете адреса и опитайте отново.</translation> <translation id="2442916515643169563">Сянка на текста</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Необходима е основна директория на разширението.</translation> <translation id="2445484935443597917">Създаване на нов потребителски профил</translation> <translation id="2448312741937722512">Тип</translation> @@ -1634,7 +1633,6 @@ <translation id="2766006623206032690">&Поставяне и старт</translation> <translation id="2766161002040448006">Питане на родител</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> ще може да редактира <ph name="FILENAME" />, докато не затворите всички раздели със сайта</translation> -<translation id="276969039800130567">Влезли сте като <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Премахване от списъка</translation> <translation id="2770690685823456775">Експортирайте паролите си в друга папка.</translation> <translation id="2770929488047004208">Разделителна способност на монитора</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index e6bfba78..cd57f78 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -1635,7 +1635,6 @@ <translation id="2766006623206032690">প্র&তিলেপন করুন ও যান</translation> <translation id="2766161002040448006">কোনও অভিভাবককে বলুন</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> <ph name="FILENAME" /> এডিট করতে পারবে যতক্ষণ না আপনি এই সাইটের জন্য সব ট্যাব বন্ধ করে দিচ্ছেন</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> রূপে প্রবেশ করেছেন৷</translation> <translation id="2770465223704140727">তালিকা থেকে সরান</translation> <translation id="2770690685823456775">আপনার পাসওয়ার্ড অন্য ফোল্ডারে এক্সপোর্ট করুন</translation> <translation id="2770929488047004208">মনিটরের রেজোলিউশন</translation> @@ -2391,6 +2390,7 @@ <translation id="3616741288025931835">ব্রাউজ করা ডেটা সাফ করুন...</translation> <translation id="3617891479562106823">ব্যাকগ্রাউন্ডগুলি উপলভ্য নয়। পরে আবার চেষ্টা করুন।</translation> <translation id="3619115746895587757">ক্যাপুচিনো</translation> +<translation id="362266093274784978">{COUNT,plural, =1{একটি অ্যাপ}one{#টি অ্যাপ}other{#টি অ্যাপ}}</translation> <translation id="362333465072914957">চার্টার্ড অ্যাকাউন্ট্যান্টের জন্য অপেক্ষা করা হচ্ছে যাতে তিনি একটি সার্টিফিকেট ইস্যু করে দেন</translation> <translation id="3624567683873126087">ডিভাইস আনলক করে Google অ্যাকাউন্টে সাইন-ইন করুন</translation> <translation id="3625481642044239431">ভুল ফাইল বেছে নেওয়া হয়েছে। আবার চেষ্টা করুন।</translation> @@ -2662,6 +2662,7 @@ <translation id="3895076768659607631">সার্চ ইঞ্জিন &ম্যানেজ করুন...</translation> <translation id="3895090224522145010">Kerberos ইউজারনেম</translation> <translation id="389521680295183045">আপনি কখন ডিভাইস সক্রিয়ভাবে ব্যবহার করেন তা সাইট জানতে চাইতে পারে</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{একটি ছবি}one{#টি ছবি}other{#টি ছবি}}</translation> <translation id="3898233949376129212">ডিভাইসের ভাষা</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> এর জন্য অনুমতি চায়: <ph name="FIRST_PERMISSION" /> এবং<ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">কীবোর্ড বেছে নিন</translation> @@ -3574,6 +3575,7 @@ <translation id="4943368462779413526">ফুটবল</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" সিরিয়াল পোর্টে কানেক্ট করতে চাইছে</translation> <translation id="4944310289250773232"><ph name="SAML_DOMAIN" />-এর মাধ্যমে যাচাইকরণ পরিষেবা হোস্ট করা হয়েছে</translation> +<translation id="495164417696120157">{COUNT,plural, =1{একটি ফাইল}one{#টি ফাইল}other{#টি ফাইল}}</translation> <translation id="495170559598752135">ক্রিয়াসমূহ</translation> <translation id="4953808748584563296">ডিফল্ট কমলা রঙের অবতার</translation> <translation id="4955710816792587366">আপনার পিন বেছে নিন</translation> @@ -4642,6 +4644,7 @@ <translation id="6184099524311454384">ট্যাব খুঁজুন</translation> <translation id="6185132558746749656">ডিভাইসের লোকেশন</translation> <translation id="6186394437969115158">সাইট সাধারণত বিজ্ঞাপন দেখায় যাতে সেগুলি ফ্রিতে কন্টেন্ট অথবা পরিষেবা প্রদান করতে পারে। কিন্তু ব্যাঘাত সৃষ্টিকারী অথবা বিভ্রান্তিকর বিজ্ঞাপন দেখায় বলে কিছু সাইটের বদনাম আছে।</translation> +<translation id="6195005504600220730">আপনার ব্রাউজার, OS ও ডিভাইসের ব্যাপারে বিভিন্ন তথ্য পড়ুন</translation> <translation id="6195693561221576702">এই ডিভাইসটি অফলাইন ডেমো মোডে সেট-আপ করা যাবে না।</translation> <translation id="6195724942939841102">ফিরিয়ে আনতে চাই না</translation> <translation id="6196640612572343990">তৃতীয় পক্ষের কুকিজ অবরুদ্ধ করুন</translation> @@ -5073,6 +5076,7 @@ <translation id="6664237456442406323">দুর্ভাগ্যবশত, আপনার কম্পিউটার একটি ত্রুটিপূর্ণ হার্ডওয়্যার ID এর মাধ্যমে কনফিগার করা হয়েছে৷ এটি Chrome OS কে সাম্প্রতিক সুরক্ষা সমাধানে আপডেট করা থেকে বিরত করেছে এবং আপনার কম্পিউটার <ph name="BEGIN_BOLD" />অনিষ্টকারী আক্রমণগুলির ফলে অরক্ষিত হতে পারে<ph name="END_BOLD" />৷</translation> <translation id="6664774537677393800">আপনার প্রোফাইল খোলার সময় কোনো সমস্যা হয়েছে। অনুগ্রহ সাইন-আউট করে আবার সাইন-ইন করুন।</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> এখন উপলভ্য আছে</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{একটি ঠিকানা}one{#টি ঠিকানা}other{#টি ঠিকানা}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">সিঙ্ক শুরু করতে, আপনার পাসফ্রেজ লিখুন</translation> <translation id="6675665718701918026">পয়েন্টিং ডিভাইস সংযুক্ত হয়েছে</translation> @@ -5769,6 +5773,7 @@ <translation id="7456142309650173560">dev</translation> <translation id="7456847797759667638">লোকেশন খুলুন...</translation> <translation id="7457384018036134905">Chrome OS সেটিংসে ভাষা ম্যানেজ করুন</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{একটি লিঙ্ক}one{#টি লিঙ্ক}other{#টি লিঙ্ক}}</translation> <translation id="7458168200501453431">Google সার্চ-এ যে বানান পরীক্ষা করার টুল ব্যবহার করা হয় সেটিই ব্যবহার করে। আপনি ব্রাউজারে যে টেক্সট লেখেন, সেটি Google-এ পাঠানো হয়।</translation> <translation id="7460045493116006516">বর্তমানে আপনার ইনস্টল করা থিম</translation> <translation id="7461924472993315131">পিন</translation> @@ -6168,6 +6173,7 @@ <translation id="7883792253546618164">যেকোনও সময় আনসাবস্ক্রাইব করুন।</translation> <translation id="788453346724465748">অ্যাকাউন্টের তথ্য লোড করা হচ্ছে...</translation> <translation id="7885253890047913815">সাম্প্রতিক গন্তব্যস্থল</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{একটি আইটেম}one{#টি আইটেম}other{#টি আইটেম}}</translation> <translation id="7886605625338676841">ই-সিম (eSIM)</translation> <translation id="7887334752153342268">ডুপ্লিকেট</translation> <translation id="7887864092952184874">ব্লুটুথ মাউস যুক্ত হয়েছে</translation> @@ -6407,6 +6413,7 @@ <translation id="8139447493436036221">Google Drive ফাইল</translation> <translation id="8141584439523427891">এখন অন্য ব্রাউজারে খোলা হচ্ছে</translation> <translation id="8141725884565838206">আপনার পাসওয়ার্ডগুলি পরিচালনা করুন</translation> +<translation id="814204052173971714">{COUNT,plural, =1{একটি ভিডিও}one{#টি ভিডিও}other{#টি ভিডিও}}</translation> <translation id="8143442547342702591">অ্যাপটি সঠিক নয়</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> বেছে নিন</translation> <translation id="8146177459103116374">আপনি যদি এই ডিভাইসে ইতিমধ্যেই রেজিস্টার করে থাকেন, তাহলে আপনি <ph name="LINK2_START" />একজন বর্তমান ব্যবহারকারী হিসাবে সাইন-ইন করতে পারেন<ph name="LINK2_END" />৷</translation> @@ -6426,6 +6433,7 @@ <translation id="8161293209665121583">ওয়েব পৃষ্ঠার রিডার মোড</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ট্যাবটি নতুন উইন্ডোতে খুলুন}one{ট্যাবগুলি নতুন উইন্ডোতে খুলুন}other{ট্যাবগুলি নতুন উইন্ডোতে খুলুন}}</translation> <translation id="8165997195302308593">Crostini-এর পোর্ট ফরওয়ার্ড করা</translation> +<translation id="816704878106051517">{COUNT,plural, =1{একটি ফোন নম্বর}one{#টি ফোন নম্বর}other{#টি ফোন নম্বর}}</translation> <translation id="8168435359814927499">কন্টেন্ট</translation> <translation id="8168943654413034772">'বেছে নিন' বিকল্পের জন্য অ্যাসাইন করা একমাত্র সুইচ সরিয়ে দেওয়া যাবে না। বেরিয়ে আসার জন্য যেকোনও কী প্রেস করুন।</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{রিডিং তালিকাতে ট্যাব যোগ করুন}one{রিডিং তালিকাতে ট্যাব যোগ করুন}other{রিডিং তালিকাতে ট্যাব যোগ করুন}}</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index c7cecda..af692d6 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -1333,7 +1333,6 @@ <translation id="2440604414813129000">Prikaži i&zvor</translation> <translation id="244231003699905658">Nevažeća adresa. Provjerite adresu i pokušajte ponovo.</translation> <translation id="2442916515643169563">Sjenka teksta</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Potreban je korijenski direktorij ekstenzije.</translation> <translation id="2445484935443597917">Izradi novi profil</translation> <translation id="2448312741937722512">Vrsta</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Za&lijepi i idi</translation> <translation id="2766161002040448006">Pitaj roditelja</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> će moći uređivati fajl <ph name="FILENAME" /> dok ne zatvorite sve kartice za ovu web lokaciju</translation> -<translation id="276969039800130567">Prijavljeni ste s računom <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Ukloni s liste</translation> <translation id="2770690685823456775">Izvezite svoje lozinke u drugi folder</translation> <translation id="2770929488047004208">Rezolucija monitora</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 71372eb..b8198f94 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Visualitza l'&origen</translation> <translation id="244231003699905658">L'adreça no és vàlida. Comprova-la i torna-ho a provar.</translation> <translation id="2442916515643169563">Ombra del text</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">El directori arrel de l'extensió és obligatori.</translation> <translation id="2445484935443597917">Crea un perfil</translation> <translation id="2448312741937722512">Tipus</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">En&ganxa i ves</translation> <translation id="2766161002040448006">Pregunta als teus pares</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> podrà editar <ph name="FILENAME" /> mentre no tanquis totes les pestanyes d'aquest lloc web.</translation> -<translation id="276969039800130567">Inici de sessió com a <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Suprimeix de la llista</translation> <translation id="2770690685823456775">Exporta les contrasenyes a una altra carpeta</translation> <translation id="2770929488047004208">Resolució del monitor</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 08df9e9..95d86e5c 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Zobrazit zdrojový kód</translation> <translation id="244231003699905658">Neplatná adresa. Zkontrolujte adresu a zkuste to znovu.</translation> <translation id="2442916515643169563">Stín textu</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Je vyžadován kořenový adresář rozšíření.</translation> <translation id="2445484935443597917">Vytvořit nový profil</translation> <translation id="2448312741937722512">Typ</translation> @@ -1635,7 +1634,6 @@ <translation id="2766006623206032690">Vl&ožit a rovnou otevřít</translation> <translation id="2766161002040448006">Požádat rodiče</translation> <translation id="2767127727915954024">Dokud nezavřete všechny karty webu <ph name="ORIGIN" />, bude moci upravovat soubor <ph name="FILENAME" /></translation> -<translation id="276969039800130567">Jste přihlášeni pomocí účtu <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Odstranit ze seznamu</translation> <translation id="2770690685823456775">Exportujte hesla do jiné složky</translation> <translation id="2770929488047004208">Rozlišení monitoru</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index aa4f6ef..e7e7e1f 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Vis &kilde</translation> <translation id="244231003699905658">Ugyldig adresse. Tjek adressen, og prøv igen.</translation> <translation id="2442916515643169563">Tekstskygge</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Udvidelsens rodmappe er påkrævet.</translation> <translation id="2445484935443597917">Opret en ny profil</translation> <translation id="2448312741937722512">Type</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Indsæt og fortsæt</translation> <translation id="2766161002040448006">Spørg en forælder</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> vil kunne redigere <ph name="FILENAME" />, indtil du har lukket alle faner for dette website</translation> -<translation id="276969039800130567">Logget ind som <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Fjern fra listen</translation> <translation id="2770690685823456775">Eksportér dine adgangskoder til en anden mappe</translation> <translation id="2770929488047004208">Skærmopløsning</translation> @@ -5217,7 +5215,7 @@ <translation id="6825184156888454064">Sorter efter navn</translation> <translation id="6826872289184051766">Bekræft via USB</translation> <translation id="6827604573767207488">Det ser ud til, at du allerede har konfigureret Google Assistent på en anden enhed. Du kan få endnu mere ud af Google Assistent ved at aktivere følgende indstilling.</translation> -<translation id="6828153365543658583">Begræns login for følgende brugere:</translation> +<translation id="6828153365543658583">Begræns login for disse brugere:</translation> <translation id="6828182567531805778">Angiv din adgangssætning for at synkronisere dine data</translation> <translation id="682871081149631693">QuickFix</translation> <translation id="6828860976882136098">Automatiske opdateringer kunne ikke konfigureres for alle brugere (fejl ved forhåndsudførelse: <ph name="ERROR_NUMBER" />)</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 6adb8f0..a4d4ce1 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1327,7 +1327,6 @@ <translation id="2440604414813129000">Quelltext an&zeigen</translation> <translation id="244231003699905658">Ungültige Adresse. Prüfen Sie die Adresse und versuchen Sie es noch einmal.</translation> <translation id="2442916515643169563">Textschatten</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Stammverzeichnis der Erweiterung ist erforderlich.</translation> <translation id="2445484935443597917">Neues Profil erstellen</translation> <translation id="2448312741937722512">Art</translation> @@ -1633,7 +1632,6 @@ <translation id="2766006623206032690">Einfügen und &aufrufen</translation> <translation id="2766161002040448006">Elternteil fragen</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> kann dann <ph name="FILENAME" /> bearbeiten, solange Tabs dieser Website geöffnet sind</translation> -<translation id="276969039800130567">Angemeldet als <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="2770465223704140727">Aus Liste entfernen</translation> <translation id="2770690685823456775">Exportieren Sie Ihre Passwörter in einen anderen Ordner</translation> <translation id="2770929488047004208">Monitorauflösung</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index e57d60c..0a16d69 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Προβολή κώ&δικα</translation> <translation id="244231003699905658">Μη έγκυρη διεύθυνση. Βεβαιωθείτε ότι η διεύθυνση είναι σωστή και δοκιμάστε ξανά.</translation> <translation id="2442916515643169563">Σκίαση κειμένου</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Απαιτείται ο κατάλογος ρίζας επέκτασης.</translation> <translation id="2445484935443597917">Δημιουργία νέου προφίλ</translation> <translation id="2448312741937722512">Τύπος</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Επικό&λληση και μετάβαση</translation> <translation id="2766161002040448006">Άδεια γονέα</translation> <translation id="2767127727915954024">Ο ιστότοπος <ph name="ORIGIN" /> θα μπορεί να επεξεργάζεται το αρχείο <ph name="FILENAME" /> μέχρι να κλείσετε όλες τις καρτέλες για αυτόν τον ιστότοπο</translation> -<translation id="276969039800130567">Συνδεδεμένος ως <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Κατάργηση από τη λίστα</translation> <translation id="2770690685823456775">Εξαγάγετε τους κωδικούς πρόσβασης σε άλλο φάκελο</translation> <translation id="2770929488047004208">Ανάλυση οθόνης</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index cb702d34b..8105811 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -349,6 +349,7 @@ <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="1384849755549338773">Offer Google Translate for websites in other languages</translation> <translation id="1386791642444521222">Activate physical SIM</translation> <translation id="138784436342154190">Restore default start-up page?</translation> <translation id="1388253969141979417">Allowed to use your microphone</translation> @@ -871,6 +872,7 @@ <translation id="1920390473494685033">Contacts</translation> <translation id="1921050530041573580">Pair your phone with Messages</translation> <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation> +<translation id="1923468477587371721">Google sites like Gmail, Drive and YouTube use your Google Account language unless you’ve changed the individual product language</translation> <translation id="192494336144674234">Open with</translation> <translation id="1925017091976104802">Press <ph name="MODIFIER_KEY_DESCRIPTION" /> to paste</translation> <translation id="1925021887439448749">Enter custom web address</translation> @@ -1331,7 +1333,6 @@ <translation id="2440604414813129000">View s&ource</translation> <translation id="244231003699905658">Invalid address. Please check the address and try again.</translation> <translation id="2442916515643169563">Text shadow</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Extension root directory is required.</translation> <translation id="2445484935443597917">Create a new profile</translation> <translation id="2448312741937722512">Types</translation> @@ -1637,7 +1638,6 @@ <translation id="2766006623206032690">Pa&ste and go</translation> <translation id="2766161002040448006">Ask a parent</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> will be able to edit <ph name="FILENAME" /> until you close all tabs for this site</translation> -<translation id="276969039800130567">Signed in as <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Remove from list</translation> <translation id="2770690685823456775">Export your passwords to another folder</translation> <translation id="2770929488047004208">Monitor resolution</translation> @@ -1955,6 +1955,7 @@ <translation id="311394601889664316">Don't allow sites to edit files or folders on your device</translation> <translation id="3115147772012638511">Waiting for cache...</translation> <translation id="3115580024857770654">Collapse all</translation> +<translation id="3115743155098198207">Manage Google Account language</translation> <translation id="3117362587799608430">Dock isn't fully compatible</translation> <translation id="3117791853215125017">{COUNT,plural, =1{Failed to send <ph name="ATTACHMENTS" /> to <ph name="DEVICE_NAME" />}other{Failed to send <ph name="ATTACHMENTS" /> to <ph name="DEVICE_NAME" />}}</translation> <translation id="3118319026408854581"><ph name="PRODUCT_NAME" /> Help</translation> @@ -2374,6 +2375,7 @@ <translation id="3599863153486145794">Clears history from all signed-in devices. Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="3600051066689725006">Web request info</translation> <translation id="3600792891314830896">Mute sites that play sound</translation> +<translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation> <translation id="360180734785106144">Offer new features as they become available</translation> <translation id="3602290021589620013">Preview</translation> <translation id="3602870520245633055">Print and scan</translation> @@ -3699,6 +3701,7 @@ <translation id="5107443654503185812">An extension has turned off Safe Browsing</translation> <translation id="5108967062857032718">Settings – Remove Android apps</translation> <translation id="5109044022078737958">Mia</translation> +<translation id="5109816792918100764">Remove <ph name="LANGUAGE_NAME" /></translation> <translation id="5111646998522066203">Exit incognito</translation> <translation id="5111692334209731439">&Bookmark Manager</translation> <translation id="5112577000029535889">&Developer Tools</translation> @@ -4439,6 +4442,7 @@ <translation id="5943127421590245687">Your verification was successful. To unlock and restore your local data, please enter your old <ph name="DEVICE_TYPE" /> password.</translation> <translation id="5944869793365969636">Scan QR code</translation> <translation id="5945002094477276055"><ph name="FILE_NAME" /> may be dangerous. Send to Google Safe Browsing for scanning?</translation> +<translation id="5945363896952315544">Your security key can't store any more fingerprints. To add a new one, first delete an existing fingerprint.</translation> <translation id="5946591249682680882">Report ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5948536763493709626">Connect a keyboard or mouse, or continue setup using your touchscreen. If you are using Bluetooth devices, make sure that your devices are ready to pair.</translation> <translation id="5949544233750246342">Unable to parse file</translation> @@ -5384,6 +5388,7 @@ <translation id="7001036685275644873">Backing up Linux apps & files</translation> <translation id="7002055706763150362">To set up Smart Lock for Chromebook, Google needs to make sure that it’s you – type your password to get started.</translation> <translation id="7003339318920871147">Web Databases</translation> +<translation id="7003454175711353260">{COUNT,plural, =1{{COUNT} file}other{{COUNT} files}}</translation> <translation id="7003723821785740825">Set up a faster way to unlock your device</translation> <translation id="7003844668372540529">Unknown product <ph name="PRODUCT_ID" /> from <ph name="VENDOR_NAME" /></translation> <translation id="7004402701596653846">Site can use MIDI</translation> @@ -5648,6 +5653,7 @@ <translation id="7306521477691455105">Open Settings to connect <ph name="USB_DEVICE_NAME" /> to <ph name="USB_VM_NAME" /></translation> <translation id="7307129035224081534">Paused</translation> <translation id="7308436126008021607">background sync</translation> +<translation id="7308643132139167865">Website languages</translation> <translation id="7309257895202129721">Show &controls</translation> <translation id="7310598146671372464">Failed to log in. The server does not support specified Kerberos encryption types. Please contact your administrator.</translation> <translation id="7320213904474460808">Default to network</translation> @@ -5859,6 +5865,7 @@ <translation id="7552846755917812628">Try the following tips:</translation> <translation id="7553012839257224005">Checking the Linux container</translation> <translation id="7553242001898162573">Enter your password</translation> +<translation id="755472745191515939">Your administrator doesn't allow this language</translation> <translation id="7554791636758816595">New Tab</translation> <translation id="7556033326131260574">Smart Lock couldn’t verify your account. Type your password to enter.</translation> <translation id="7556242789364317684">Unfortunately, <ph name="SHORT_PRODUCT_NAME" /> is unable to recover your settings. To fix the error, <ph name="SHORT_PRODUCT_NAME" /> must reset your device with Powerwash.</translation> @@ -6160,6 +6167,7 @@ <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> <translation id="786073089922909430">Service: <ph name="ARC_PROCESS_NAME" /></translation> <translation id="7861215335140947162">&Downloads</translation> +<translation id="7861846108263890455">Google Account language</translation> <translation id="7864539943188674973">Disable Bluetooth</translation> <translation id="786957569166715433"><ph name="DEVICE_NAME" /> – Paired</translation> <translation id="7870730066603611552">Review sync options following setup</translation> @@ -6422,6 +6430,7 @@ <translation id="8143442547342702591">Invalid application</translation> <translation id="8143951647992294073">Select <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation> <translation id="8146177459103116374">If you've already registered on this device, you can <ph name="LINK2_START" />sign in as an existing user<ph name="LINK2_END" />.</translation> +<translation id="8146287226035613638">Add and rank your preferred languages. Websites will show in your preferred languages, when possible. These preferences are synced with your browser settings. <ph name="BEGIN_LINK_LEARN_MORE" />Learn more<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="8146793085009540321">Sign-in failed. Please contact your administrator or try again.</translation> <translation id="8147900440966275470">Found <ph name="NUM" /> tab</translation> <translation id="8148760431881541277">Limit sign-in</translation> @@ -7433,6 +7442,7 @@ <translation id="983511809958454316">This feature is not supported in VR</translation> <translation id="984136553749462603">When a site plays content protected by copyright, it might ask to recognise your device</translation> <translation id="984275831282074731">Payment methods</translation> +<translation id="984705303330760860">Add spell check languages</translation> <translation id="98515147261107953">Landscape</translation> <translation id="987068745968718743">Parallels desktop: <ph name="PLUGIN_VM_NAME" /></translation> <translation id="987264212798334818">General</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index c3e5e00e..0017a54 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -1328,7 +1328,6 @@ <translation id="2440604414813129000">Ver códig&o fuente</translation> <translation id="244231003699905658">La dirección no es válida. Verifica la dirección y vuelve a intentarlo.</translation> <translation id="2442916515643169563">Sombra del texto</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Se requiere un directorio de raíz de la extensión.</translation> <translation id="2445484935443597917">Crear un perfil nuevo</translation> <translation id="2448312741937722512">Tipo</translation> @@ -1634,7 +1633,6 @@ <translation id="2766006623206032690">Pe&gar y acceder</translation> <translation id="2766161002040448006">Preguntarles a tus padres</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> podrá editar <ph name="FILENAME" /> hasta que cierres todas las pestañas de este sitio</translation> -<translation id="276969039800130567">Se accedió como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Eliminar de la lista</translation> <translation id="2770690685823456775">Exporta tus contraseñas a otra carpeta</translation> <translation id="2770929488047004208">Resolución del monitor</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index c6079fd..4e6502d 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Ver códig&o fuente</translation> <translation id="244231003699905658">Dirección no válida. Revisa la dirección y vuelve a intentarlo.</translation> <translation id="2442916515643169563">Sombra del texto</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">El directorio raíz de la extensión es obligatorio.</translation> <translation id="2445484935443597917">Crear perfil</translation> <translation id="2448312741937722512">Tipo</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">Pe&gar y acceder</translation> <translation id="2766161002040448006">Preguntar a padres</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> podrá editar <ph name="FILENAME" /> hasta que cierres todas las pestañas de este sitio web.</translation> -<translation id="276969039800130567">Has iniciado sesión como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Eliminar de la lista</translation> <translation id="2770690685823456775">Exporta tus contraseñas a otra carpeta</translation> <translation id="2770929488047004208">Resolución del monitor</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index a0b5fa1..a5a77de 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Vaata a&llikat</translation> <translation id="244231003699905658">Sobimatu aadress. Kontrollige aadressi ja proovige uuesti.</translation> <translation id="2442916515643169563">Teksti vari</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Laienduse juurkaust on nõutav.</translation> <translation id="2445484935443597917">Loo uus profiil</translation> <translation id="2448312741937722512">Tüüp</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Kl&eebi ja mine</translation> <translation id="2766161002040448006">Küsi vanemalt</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> saab faili <ph name="FILENAME" /> muuta, kuni sulgete kõik selle saidi vahelehed</translation> -<translation id="276969039800130567">Sisse logitud kui <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Eemalda loendist</translation> <translation id="2770690685823456775">Eksportige paroolid muusse kausta</translation> <translation id="2770929488047004208">Kuvari eraldusvõime</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 5eb7a4f6..4a0047a 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Ikusi &iturburua</translation> <translation id="244231003699905658">Helbideak ez du balio. Egiaztatu helbidea zuzena dela eta saiatu berriro.</translation> <translation id="2442916515643169563">Testuaren itzala</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Luzapenaren erroaren direktorioa behar da.</translation> <translation id="2445484935443597917">Sortu profil bat</translation> <translation id="2448312741937722512">Mota</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">It&satsi eta listo</translation> <translation id="2766161002040448006">Galdetu guraso bati</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> webguneak <ph name="FILENAME" /> fitxategia editatzeko baimena izango du webguneko fitxa guztiak ixten dituzun arte</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> gisa dauka saioa hasita.</translation> <translation id="2770465223704140727">Kendu zerrendatik</translation> <translation id="2770690685823456775">Esportatu pasahitzak beste karpeta batera</translation> <translation id="2770929488047004208">Monitorearen bereizmena</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index f804863e..547fd5c 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1329,7 +1329,6 @@ <translation id="2440604414813129000">مشاهده م&نبع</translation> <translation id="244231003699905658">نشانی نامعتبر است. لطفاً نشانی را بررسی و دوباره امتحان کنید.</translation> <translation id="2442916515643169563">سایه نوشتار</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">دایرکتوری ریشه برنامهٔ افزودنی لازم است.</translation> <translation id="2445484935443597917">ایجاد نمایه جدید</translation> <translation id="2448312741937722512">نوع</translation> @@ -1635,7 +1634,6 @@ <translation id="2766006623206032690">جا&گذاری و رفتن</translation> <translation id="2766161002040448006">پرسش از ولی</translation> <translation id="2767127727915954024">تا زمانیکه همه برگههای <ph name="ORIGIN" /> را نبندید، این سایت میتواند <ph name="FILENAME" /> را ویرایش کند</translation> -<translation id="276969039800130567">با <ph name="USER_EMAIL_ADDRESS" /> وارد سیستم شد.</translation> <translation id="2770465223704140727">حذف از فهرست</translation> <translation id="2770690685823456775">گذرواژهها را به پوشه دیگری صادر کنید</translation> <translation id="2770929488047004208">وضوح نمایشگر</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 5fd7248d..4ebc727 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Näytä a&lkuperä</translation> <translation id="244231003699905658">Virheellinen osoite. Tarkista osoite ja yritä uudelleen.</translation> <translation id="2442916515643169563">Tekstin varjo</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Laajennuksen juurihakemisto tarvitaan.</translation> <translation id="2445484935443597917">Luo uusi profiili</translation> <translation id="2448312741937722512">Tyyppi</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">&Liitä ja avaa</translation> <translation id="2766161002040448006">Pyydä lupaa vanhemmilta</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> voi muokata tiedostoa <ph name="FILENAME" />, kunnes suljet sivuston kaikki välilehdet</translation> -<translation id="276969039800130567">Kirjautunut osoitteella <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Poista luettelosta</translation> <translation id="2770690685823456775">Vie salasanasi toiseen kansioon</translation> <translation id="2770929488047004208">Näytön resoluutio</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index f7737be..7fb3934e 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Tingnan s&ource</translation> <translation id="244231003699905658">Invalid na address. Pakisuri ang address at subukan ulit.</translation> <translation id="2442916515643169563">Shadow ng text</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Kinakailangan ang pinagmulang direktoryo ng extension.</translation> <translation id="2445484935443597917">Gumawa ng Bagong Profile</translation> <translation id="2448312741937722512">Uri</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Pa&ste at umalis</translation> <translation id="2766161002040448006">Hilingin sa magulang</translation> <translation id="2767127727915954024">Mae-edit ng <ph name="ORIGIN" /> ang <ph name="FILENAME" /> hanggang sa isara mo ang lahat ng tab para sa site na ito</translation> -<translation id="276969039800130567">Naka-sign in bilang <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Alisin sa listahan</translation> <translation id="2770690685823456775">I-export ang iyong mga password sa isa pang folder</translation> <translation id="2770929488047004208">Resolution ng monitor</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index 88dcce5..6fffb58 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Afficher le code s&ource</translation> <translation id="244231003699905658">Adresse incorrecte. Veuillez vérifier l'adresse, puis réessayez.</translation> <translation id="2442916515643169563">Ombre du texte</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> : <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Le répertoire racine de l'extension doit être indiqué.</translation> <translation id="2445484935443597917">Créer un profil</translation> <translation id="2448312741937722512">Type</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Coller l'adre&sse URL et y accéder</translation> <translation id="2766161002040448006">Demande à un parent</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> sera en mesure de modifier le fichier <ph name="FILENAME" /> jusqu'à ce que vous fermiez tous les onglets pour ce site</translation> -<translation id="276969039800130567">Connecté en tant que <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Retirer de la liste</translation> <translation id="2770690685823456775">Exportez vos mots de passe dans un autre dossier</translation> <translation id="2770929488047004208">Résolution du moniteur</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index be3530b..d38fccb 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Afficher la s&ource</translation> <translation id="244231003699905658">Adresse non valide. Veuillez vérifier l'adresse, puis réessayer.</translation> <translation id="2442916515643169563">Ombre du texte</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Le répertoire racine de l'extension doit être indiqué.</translation> <translation id="2445484935443597917">Créer un profil</translation> <translation id="2448312741937722512">Type</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Coller l'URL et y a&ccéder</translation> <translation id="2766161002040448006">Demander à l'un des parents</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> pourra modifier le fichier <ph name="FILENAME" /> jusqu'à ce que vous fermiez tous les onglets de ce site</translation> -<translation id="276969039800130567">Connecté en tant que <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Retirer de la liste</translation> <translation id="2770690685823456775">Exportez vos mots de passe dans un autre dossier</translation> <translation id="2770929488047004208">Résolution du moniteur</translation> @@ -4649,7 +4647,7 @@ <translation id="6184099524311454384">Rechercher dans les onglets</translation> <translation id="6185132558746749656">Position de l'appareil</translation> <translation id="6186394437969115158">Les sites affichent généralement des annonces afin de proposer des contenus ou des services gratuits. Toutefois, certains sites sont connus pour afficher des annonces intrusives ou trompeuses.</translation> -<translation id="6195005504600220730">Lire des infos concernant votre navigateur, votre OS et votre appareil</translation> +<translation id="6195005504600220730">Lire les infos sur vos navigateur, OS et appareil</translation> <translation id="6195693561221576702">Impossible de configurer cet appareil en mode de démonstration hors connexion.</translation> <translation id="6195724942939841102">Ne pas restaurer</translation> <translation id="6196640612572343990">Bloquer les cookies tiers</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index f684616..af12cf5 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Ver f&onte</translation> <translation id="244231003699905658">O enderezo non é válido. Compróbao e téntao de novo.</translation> <translation id="2442916515643169563">Sombra do texto</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">É obrigatorio o directorio raíz da extensión.</translation> <translation id="2445484935443597917">Crear un novo perfil</translation> <translation id="2448312741937722512">Tipo</translation> @@ -1635,7 +1634,6 @@ <translation id="2766006623206032690">Pe&gar e ir</translation> <translation id="2766161002040448006">Preguntar a teu pai ou túa nai</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> poderá editar <ph name="FILENAME" /> ata que peches todas as pestanas deste sitio</translation> -<translation id="276969039800130567">Sesión iniciada como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Eliminar da lista</translation> <translation id="2770690685823456775">Exporta os teus contrasinais a outro cartafol</translation> <translation id="2770929488047004208">Resolución do monitor</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index ef7e4aba..39a145c 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -1633,7 +1633,6 @@ <translation id="2766006623206032690">પે&સ્ટ કરો અને જાઓ</translation> <translation id="2766161002040448006">માતાપિતાને પૂછો</translation> <translation id="2767127727915954024">આ સાઇટ માટે, જ્યાં સુધી તમે બધી ટૅબ બંધ નહીં કરો ત્યાં સુધી <ph name="ORIGIN" />, <ph name="FILENAME" />માં ફેરફાર કરી શકશે</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> તરીકે સાઇન ઇન કરો.</translation> <translation id="2770465223704140727">સૂચિમાંથી દૂર કરો</translation> <translation id="2770690685823456775">એક બીજા ફોલ્ડરમાં તમારા બધા પાસવર્ડની નિકાસ કરો</translation> <translation id="2770929488047004208">મોનિટરનું રિઝોલ્યુશન</translation> @@ -4642,6 +4641,7 @@ <translation id="6184099524311454384">ટૅબ શોધો</translation> <translation id="6185132558746749656">ઉપકરણનું સ્થાન</translation> <translation id="6186394437969115158">સાઇટ સામાન્ય રીતે જાહેરાતો બતાવે છે, જેથી તે કન્ટેન્ટ અથવા સેવાઓ મફતમાં આપી શકે. પણ કેટલીક સાઇટ ઘૃણાસ્પદ અથવા ભ્રામક જાહેરાતો બતાવવા માટે જાણીતી હોય છે.</translation> +<translation id="6195005504600220730">તમારા બ્રાઉઝર OS અને ડિવાઇસ વિશે માહિતી વાંચો</translation> <translation id="6195693561221576702">આ ડિવાઇસ ઇન્ટરનેટ વગર ડેમો મોડમાં સેટઅપ કરી શકાતું નથી.</translation> <translation id="6195724942939841102">રિસ્ટોર કરશો નહીં</translation> <translation id="6196640612572343990">ત્રીજા પક્ષની કુકીને બ્લૉક કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index c0c5757..95ef0a5a 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">स्रोत देखें</translation> <translation id="244231003699905658">अमान्य पता. कृपया पते की जांच करें और फिर से कोशिश करें.</translation> <translation id="2442916515643169563">टेक्स्ट शैडो</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">एक्सटेंशन मूल निर्देशिका आवश्यक है.</translation> <translation id="2445484935443597917">नई प्रोफ़ाइल बनाएं</translation> <translation id="2448312741937722512">प्रकार</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">&चिपकाएं और जाएं</translation> <translation id="2766161002040448006">माता-पिता से पूछें</translation> <translation id="2767127727915954024">जब तक आप इस साइट के लिए सभी टैब बंद नहीं कर देते, <ph name="ORIGIN" /> तब तक <ph name="FILENAME" /> में बदलाव कर पाएगी.</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> के रूप में प्रवेश किया गया.</translation> <translation id="2770465223704140727">सूची से निकालें</translation> <translation id="2770690685823456775">अपने पासवर्ड किसी दूसरे फ़ोल्डर में निर्यात करें</translation> <translation id="2770929488047004208">मॉनिटर का रिज़ॉल्यूशन</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index e1580bf..89d8cc9 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Pogledaj i&zvor</translation> <translation id="244231003699905658">Adresa nije važeća. Provjerite adresu i pokušajte ponovo.</translation> <translation id="2442916515643169563">Sjenčanje teksta</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Obavezan je korijenski direktorij proširenja.</translation> <translation id="2445484935443597917">Izradi novi profil</translation> <translation id="2448312741937722512">Vrsta</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Za&lijepi i idi</translation> <translation id="2766161002040448006">Pitaj roditelja</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> moći će uređivati <ph name="FILENAME" /> dok ne zatvorite sve kartice za ovu web-lokaciju</translation> -<translation id="276969039800130567">Prijavljeni ste kao <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Ukloni s popisa</translation> <translation id="2770690685823456775">Izvezite zaporke u neku drugu mapu</translation> <translation id="2770929488047004208">Razlučivost monitora</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index c47923d..8ca8c9f 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">F&orrás megtekintése</translation> <translation id="244231003699905658">Érvénytelen cím. Ellenőrizze a címet, majd próbálja újra.</translation> <translation id="2442916515643169563">Szövegárnyék</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">A bővítmény gyökérkönyvtárát kötelező megadni.</translation> <translation id="2445484935443597917">Új profil létrehozása</translation> <translation id="2448312741937722512">Típus</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">Beille&sztés és ugrás</translation> <translation id="2766161002040448006">Szülő megkérdezése</translation> <translation id="2767127727915954024">A(z) <ph name="ORIGIN" /> addig tudja szerkeszteni a(z) <ph name="FILENAME" /> fájlt, amíg Ön be nem zárja az ehhez a webhelyhez tartozó összes lapot</translation> -<translation id="276969039800130567">Bejelentkezve a következőként: <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Eltávolítás a listából</translation> <translation id="2770690685823456775">Exportálja a jelszavakat egy másik mappába</translation> <translation id="2770929488047004208">Monitor felbontása</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 41878de4..fc435d3 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -1333,7 +1333,6 @@ <translation id="2440604414813129000">Դիտել ա&ղբյուրը</translation> <translation id="244231003699905658">Հասցեն անվավեր է։ Ստուգեք հասցեն և նորից փորձեք։</translation> <translation id="2442916515643169563">Տեքստի ստվերը</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Հարկավոր է ընդլայնման արմատային գրացուցակը:</translation> <translation id="2445484935443597917">Ստեղծել նոր պրոֆիլ</translation> <translation id="2448312741937722512">Տեսակ</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Տեղա&դրել և անցնել</translation> <translation id="2766161002040448006">Հարցնել ծնողին</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> կայքը կկարողանա փոփոխել <ph name="FILENAME" /> ֆայլը, մինչև չփակեք այս կայքի բոլոր ներդիրները</translation> -<translation id="276969039800130567">Դուք մուտք եք գործել <ph name="USER_EMAIL_ADDRESS" /> հաշիվ:</translation> <translation id="2770465223704140727">Հեռացնել ցանկից</translation> <translation id="2770690685823456775">Արտահանեք ձեր գաղտնաբառերը այլ պանակ</translation> <translation id="2770929488047004208">Էկրանի լուծաչափը</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 2dac4628..85d8dd7e 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Lihat s&umber</translation> <translation id="244231003699905658">Alamat tidak valid. Periksa alamatnya, lalu coba lagi.</translation> <translation id="2442916515643169563">Bayangan teks</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Diperlukan direktori akar ekstensi.</translation> <translation id="2445484935443597917">Buat Profil Baru</translation> <translation id="2448312741937722512">Jenis</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Tem&pel lalu buka</translation> <translation id="2766161002040448006">Tanya orang tua</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> akan dapat mengedit <ph name="FILENAME" /> hingga Anda menutup semua tab untuk situs ini</translation> -<translation id="276969039800130567">Login sebagai <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Hapus dari daftar</translation> <translation id="2770690685823456775">Ekspor sandi Anda ke folder lain</translation> <translation id="2770929488047004208">Resolusi monitor</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 78833c2c..e88f252 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Sk&oða frumkóða</translation> <translation id="244231003699905658">Ógilt vistfang. Athugaðu vistfangið og reyndu aftur.</translation> <translation id="2442916515643169563">Skuggi texta</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Rótarmöppu viðbóta er krafist.</translation> <translation id="2445484935443597917">Búa til nýjan prófíl</translation> <translation id="2448312741937722512">Gerð</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Líma og opna</translation> <translation id="2766161002040448006">Spyrja foreldri</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> mun geta breytt <ph name="FILENAME" /> þar til þú lokar öllum flipum þessa vefsvæðis</translation> -<translation id="276969039800130567">Skráð(ur) inn sem <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Fjarlægja af lista</translation> <translation id="2770690685823456775">Flyttu aðgangsorðin út í aðra möppu</translation> <translation id="2770929488047004208">Skjáupplausn</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 14bd732..ad75f26 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Visualizza &sorgente</translation> <translation id="244231003699905658">Indirizzo non valido. Verifica l'indirizzo e riprova.</translation> <translation id="2442916515643169563">Ombreggiatura testo</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">La directory principale dell'estensione è obbligatoria.</translation> <translation id="2445484935443597917">Crea un nuovo profilo</translation> <translation id="2448312741937722512">Tipo</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">In&colla e vai</translation> <translation id="2766161002040448006">Rivolgiti a un genitore</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> potrà modificare il file <ph name="FILENAME" /> fino alla chiusura di tutte le schede di questo sito</translation> -<translation id="276969039800130567">Accesso eseguito come <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Rimuovi dall'elenco</translation> <translation id="2770690685823456775">Esporta le password in un'altra cartella</translation> <translation id="2770929488047004208">Risoluzione del monitor</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 607aa72..3f8d1c1 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">צפייה &במקור</translation> <translation id="244231003699905658">כתובת לא חוקית. יש לבדוק את הכתובת ולנסות שוב.</translation> <translation id="2442916515643169563">צללית טקסט</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">ספריית הבסיס של ההרחבה נחוצה.</translation> <translation id="2445484935443597917">יצירת פרופיל חדש</translation> <translation id="2448312741937722512">סוג</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">הדבקה והמשך</translation> <translation id="2766161002040448006">בקשת רשות מההורים</translation> <translation id="2767127727915954024">לאתר <ph name="ORIGIN" /> תהיה הרשאה לערוך את <ph name="FILENAME" /> עד שכל הכרטיסיות של האתר הזה ייסגרו</translation> -<translation id="276969039800130567">מחובר באמצעות חשבון <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">הסרה מהרשימה</translation> <translation id="2770690685823456775">אפשר לייצא את הסיסמאות לתיקייה אחרת</translation> <translation id="2770929488047004208">הרזולוציה של הצג</translation> @@ -2393,6 +2391,7 @@ <translation id="3616741288025931835">&ניקוי נתוני גלישה...</translation> <translation id="3617891479562106823">רקעים אינם זמינים. צריך לנסות שוב מאוחר יותר.</translation> <translation id="3619115746895587757">קפוצ'ינו</translation> +<translation id="362266093274784978">{COUNT,plural, =1{אפליקציה}two{# אפליקציות}many{# אפליקציות}other{# אפליקציות}}</translation> <translation id="362333465072914957">בהמתנה להנפקת אישור על ידי ה-CA</translation> <translation id="3624567683873126087">ביטול נעילת המכשיר וכניסה אל חשבון Google</translation> <translation id="3625481642044239431">בחרת קובץ לא חוקי. יש לנסות שוב.</translation> @@ -2664,6 +2663,7 @@ <translation id="3895076768659607631">&ניהול מנועי החיפוש…</translation> <translation id="3895090224522145010">שם משתמש ב-Kerberos</translation> <translation id="389521680295183045">אתרים יכולים לבקש הרשאה לדעת מתי המכשיר הזה משמש אותך באופן פעיל</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{תמונה}two{# תמונות}many{# תמונות}other{# תמונות}}</translation> <translation id="3898233949376129212">שפת המכשיר</translation> <translation id="3898327728850887246">האתר <ph name="SITE_NAME" /> מבקש את ההרשאות הבאות: <ph name="FIRST_PERMISSION" /> וגם <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">בחירת מקלדת</translation> @@ -3577,6 +3577,7 @@ <translation id="4943368462779413526">פוטבול</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" רוצה להתחבר אל יציאה טורית</translation> <translation id="4944310289250773232">שירות האימות הזה מתארח בדומיין <ph name="SAML_DOMAIN" /></translation> +<translation id="495164417696120157">{COUNT,plural, =1{קובץ}two{# קבצים}many{# קבצים}other{# קבצים}}</translation> <translation id="495170559598752135">פעולות</translation> <translation id="4953808748584563296">דמות ברירת מחדל כתומה</translation> <translation id="4955710816792587366">בחירת קוד</translation> @@ -5076,6 +5077,7 @@ <translation id="6664237456442406323">לצערנו, המחשב שלך מוגדר עם זיהוי חומרה פגום. המצב הזה מונע ממערכת ההפעלה של Chrome להתקין את עדכוני האבטחה האחרונים, וייתכן שהמחשב שלך יהיה <ph name="BEGIN_BOLD" />חשוף להתקפות זדוניות<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">משהו השתבש בפתיחת הפרופיל שלך. יש לצאת ולאחר מכן להיכנס מחדש.</translation> <translation id="6670142487971298264">האפליקציה <ph name="APP_NAME" /> זמינה עכשיו</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{כתובת}two{# כתובות}many{# כתובות}other{# כתובות}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">כדי להתחיל לסנכרן צריך להזין את ביטוי הסיסמה</translation> <translation id="6675665718701918026">התקן הצבעה מחובר</translation> @@ -5772,6 +5774,7 @@ <translation id="7456142309650173560">מפתח</translation> <translation id="7456847797759667638">פתיחת מיקום...</translation> <translation id="7457384018036134905">ניהול שפות בהגדרות Chrome OS</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{קישור}two{# קישורים}many{# קישורים}other{# קישורים}}</translation> <translation id="7458168200501453431">נעשה שימוש בבדיקת האיות של חיפוש Google. הטקסט המוקלד בדפדפן נשלח אל Google.</translation> <translation id="7460045493116006516">העיצוב הנוכחי</translation> <translation id="7461924472993315131">הצמדה</translation> @@ -6171,6 +6174,7 @@ <translation id="7883792253546618164">בכל שלב ניתן לבטל את ההרשמה.</translation> <translation id="788453346724465748">פרטי החשבון בטעינה…</translation> <translation id="7885253890047913815">יעדים אחרונים</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{פריט}two{# פריטים}many{# פריטים}other{# פריטים}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">שכפול</translation> <translation id="7887864092952184874">עכבר Bluetooth מחובר</translation> @@ -6413,6 +6417,7 @@ <translation id="8139447493436036221">קבצים ב-Google Drive</translation> <translation id="8141584439523427891">נפתח עכשיו בדפדפן חלופי</translation> <translation id="8141725884565838206">ניהול הסיסמאות שלך</translation> +<translation id="814204052173971714">{COUNT,plural, =1{סרטון}two{# סרטונים}many{# סרטונים}other{# סרטונים}}</translation> <translation id="8143442547342702591">יישום לא חוקי</translation> <translation id="8143951647992294073">בחירת <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation> <translation id="8146177459103116374">אם נרשמת כבר במכשיר זה, יהיה באפשרותך <ph name="LINK2_START" />להתחבר כמשתמש קיים<ph name="LINK2_END" />.</translation> @@ -6432,6 +6437,7 @@ <translation id="8161293209665121583">מצב קורא לדפי אינטרנט</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{העברת כרטיסייה לחלון חדש}two{העברת כרטיסיות לחלון חדש}many{העברת כרטיסיות לחלון חדש}other{העברת כרטיסיות לחלון חדש}}</translation> <translation id="8165997195302308593">העברה ליציאה אחרת ב-Crostini</translation> +<translation id="816704878106051517">{COUNT,plural, =1{מספר טלפון}two{# מספרי טלפון}many{# מספרי טלפון}other{# מספרי טלפון}}</translation> <translation id="8168435359814927499">תוכן</translation> <translation id="8168943654413034772">לא ניתן להסיר את המתג היחיד שהוקצה לפעולה 'בחירה'. יש להקיש על מקש כלשהו כדי לצאת.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{הוספת הכרטיסייה לרשימת הקריאה}two{הוספת הכרטיסיות לרשימת הקריאה}many{הוספת הכרטיסיות לרשימת הקריאה}other{הוספת הכרטיסיות לרשימת הקריאה}}</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index db8293a..9515c89 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">ソースを表示(&O)</translation> <translation id="244231003699905658">無効なアドレスです。アドレスを確認してから、もう一度お試しください。</translation> <translation id="2442916515643169563">テキストの影</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">拡張機能のルート ディレクトリを指定してください。</translation> <translation id="2445484935443597917">新しいプロフィールを作成</translation> <translation id="2448312741937722512">種類</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">貼り付けて移動(&S)</translation> <translation id="2766161002040448006">保護者に聞く</translation> <translation id="2767127727915954024">このサイトのタブをすべて閉じるまでの間、<ph name="ORIGIN" /> は「<ph name="FILENAME" />」を編集できるようになります</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> としてログインしています。</translation> <translation id="2770465223704140727">リストから削除</translation> <translation id="2770690685823456775">パスワードを別のフォルダにエクスポートしてください</translation> <translation id="2770929488047004208">モニターの解像度</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index ea04e17e1..7ff3773e 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">წყ&აროს ნახვა</translation> <translation id="244231003699905658">მისამართი არასწორია. გთხოვთ, გადაამოწმოთ მისამართი და ხელახლა ცადოთ.</translation> <translation id="2442916515643169563">ტექსტის ჩრდილი</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> — <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">საჭიროა გაფართოების ძირეული დირექტორია.</translation> <translation id="2445484935443597917">ახალი პროფილის შექმნა</translation> <translation id="2448312741937722512">ტიპი</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">&ჩასმა და გაგრძელება</translation> <translation id="2766161002040448006">მშობლისთვის თხოვნა</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> შეძლებს „<ph name="FILENAME" />“-ის რედაქტირებას ამ საიტის ყველა ჩანართის დახურვამდე</translation> -<translation id="276969039800130567">შესულია, როგორც <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">სიიდან ამოშლა</translation> <translation id="2770690685823456775">განახორციელეთ თქვენი პაროლების ექსპორტირება სხვა საქაღალდეში</translation> <translation id="2770929488047004208">მონიტორის გარჩევადობა</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 8c85185..4b02d98 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -444,7 +444,7 @@ <translation id="1478607704480248626">Орнату мүмкіндігі қосылмаған</translation> <translation id="1481537595330271162">Дискінің көлемі өзгертілмеді.</translation> <translation id="1482626744466814421">Осы қойындыға бетбелгі қою…</translation> -<translation id="1483272013430662157">Вебқолданбалар белгілі бір файл түрлерін ашуды сұрай алады</translation> +<translation id="1483272013430662157">Веб-қолданбалар белгілі бір файл түрлерін ашуды сұрай алады</translation> <translation id="1483493594462132177">Жіберу</translation> <translation id="1484979925941077974">Сайт Bluetooth функциясын пайдаланып жатыр.</translation> <translation id="1485015260175968628">Енді келесі мүмкіндіктерге ие:</translation> @@ -610,7 +610,7 @@ <translation id="1651008383952180276">Бір құпия фразаны екі рет енгізу керек</translation> <translation id="1652326691684645429">Nearby Share функциясын қосу</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Кез келген жерден басып шығара алу үшін, принтерді Google Cloud Print қызметіне қосыңыз.}other{Кез келген жерден басып шығара алу үшін, # принтерді Google Cloud Print қызметіне қосыңыз.}}</translation> -<translation id="1653631694606464309">Вебқолданбалар әдетте белгілі бір файл түрлерімен қалағаныңызша жұмыс істей алуыңыз үшін оларды ашуды сұрайды. Мысалы, құжаттарды қалаған мәтін өңдегіште ашуға болады.</translation> +<translation id="1653631694606464309">Веб-қолданбалар әдетте белгілі бір файл түрлерімен қалағаныңызша жұмыс істей алуыңыз үшін оларды ашуды сұрайды. Мысалы, құжаттарды қалаған мәтін өңдегіште ашуға болады.</translation> <translation id="1656528038316521561">Фон бұлдырлығы</translation> <translation id="1657406563541664238">Пайдалану статистикасын және бұзылу туралы есептерді Google компаниясына автоматты түрде жіберу арқылы <ph name="PRODUCT_NAME" /> өнімін жақсартуға көмектесіңіз</translation> <translation id="1657937299377480641">Білім беру ресурстарын пайдалануға қайта кіру үшін ата-анадан рұқсат сұрау қажет.</translation> @@ -1328,7 +1328,6 @@ <translation id="2440604414813129000">Д&ереккөзді көру</translation> <translation id="244231003699905658">Мекенжай дұрыс емес. Оны тексеріп, қайталап көріңіз.</translation> <translation id="2442916515643169563">Мәтін көлеңкесі</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Кеңейтімнің түпкі каталогі қажет.</translation> <translation id="2445484935443597917">Жаңа профиль жасау</translation> <translation id="2448312741937722512">Түрі</translation> @@ -1633,7 +1632,6 @@ <translation id="2766006623206032690">Қ&ою және өту</translation> <translation id="2766161002040448006">Ата-анадан сұрау</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> сайтының барлық қойындысы жабылғанға дейін, ол <ph name="FILENAME" /> файлын өзгерте алады.</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ретінде кірген.</translation> <translation id="2770465223704140727">Тізімнен алып тастау</translation> <translation id="2770690685823456775">Құпия сөздерді басқа қалтаға экспорттаңыз</translation> <translation id="2770929488047004208">Монитор ажыратымдылығы</translation> @@ -2389,6 +2387,7 @@ <translation id="3616741288025931835">&Шолу деректерін жою…</translation> <translation id="3617891479562106823">Фондар жоқ. Кейінірек қайталап көріңіз.</translation> <translation id="3619115746895587757">Капучино</translation> +<translation id="362266093274784978">{COUNT,plural, =1{қолданба}other{# қолданба}}</translation> <translation id="362333465072914957">Сертификат шығуы үшін CA күтілуде</translation> <translation id="3624567683873126087">Құрылғының құлпын ашу және Google есептік жазбасына кіру</translation> <translation id="3625481642044239431">Жарамсыз файл таңдалды. Әрекетті қайталаңыз.</translation> @@ -2660,6 +2659,7 @@ <translation id="3895076768659607631">&Іздеу жүйелерін басқару...</translation> <translation id="3895090224522145010">Kerberos билетінің пайдаланушы аты</translation> <translation id="389521680295183045">Сайттар құрылғыңызды белсенді пайдаланатын уақытыңыз туралы білу рұқсатын сұрай алады</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{сурет}other{# сурет}}</translation> <translation id="3898233949376129212">Құрылғы тілі</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> сайтына келесі рұқсаттар қажет: <ph name="FIRST_PERMISSION" /> және <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">Пернетақтаны таңдау</translation> @@ -3573,6 +3573,7 @@ <translation id="4943368462779413526">Футбол</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" сериялық портқа қосылғысы келеді</translation> <translation id="4944310289250773232">Бұл аутентификация қызметі <ph name="SAML_DOMAIN" /> кеңейтімінде орналасқан.</translation> +<translation id="495164417696120157">{COUNT,plural, =1{файл}other{# файл}}</translation> <translation id="495170559598752135">Әрекеттер</translation> <translation id="4953808748584563296">Әдепкі сарғыш түсті аватар</translation> <translation id="4955710816792587366">PIN кодын таңдаңыз</translation> @@ -5072,6 +5073,7 @@ <translation id="6664237456442406323">Өкінішке орай, сіздің компьютеріңіз бұзылған жабдық идентификаторымен конфигурацияланған. Бұл Chrome OS жүйесіне соңғы қауіпсіздік түзетулерімен жаңартылуына кедергі жасайды және компьютеріңіз <ph name="BEGIN_BOLD" />зиянды шабуылдарға шалдығуы мүмкін<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">Профильді ашу кезінде бірдеңе дұрыс болмады. Жүйеден шығып, қайта кіріңіз.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> қазір қолжетімді.</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{мекенжай}other{# мекенжай}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Синхрондауды бастау үшін құпия фразаны енгізіңіз.</translation> <translation id="6675665718701918026">Меңзеу құрылғысы қосылған</translation> @@ -5768,6 +5770,7 @@ <translation id="7456142309650173560">dev</translation> <translation id="7456847797759667638">Орынды ашу…</translation> <translation id="7457384018036134905">Chrome OS параметрлеріндегі тілдерді басқару</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{сілтеме}other{# сілтеме}}</translation> <translation id="7458168200501453431">Google Search функциясында пайдаланылатын емлені тексеру құралын қолданады. Браузерде терілген мәтін Google-ға жіберіледі.</translation> <translation id="7460045493116006516">Орнатулы тұрған тақырып</translation> <translation id="7461924472993315131">Бекіту</translation> @@ -5966,7 +5969,7 @@ <translation id="7680416688940118410">Сенсорлық экранды калибрлеу</translation> <translation id="7681095912841365527">Сайт Bluetooth функциясын пайдалана алады</translation> <translation id="7681597159868843240">Сайттар әдетте виртуалды шындық немесе фитнес-трекер сияқты функциялар үшін құрылғының қозғалыс датчиктерін пайдаланады.</translation> -<translation id="7683164815270164555">Вебқолданба белгілі бір файл түрлерін ашқысы келгенде сұрау</translation> +<translation id="7683164815270164555">Веб-қолданба белгілі бір файл түрлерін ашқысы келгенде сұрау</translation> <translation id="7683373461016844951">Жалғастыру үшін "Жарайды" түймесін түртіп, <ph name="DOMAIN" /> электрондық пошта мекенжайыңыздың жаңа профилін жасау үшін "Адамды қосу" түймесін түртіңіз.</translation> <translation id="7683593009096723900">{COUNT,plural, =0{Барлығын &инкогнито терезесінде ашу}=1{&Инкогнито терезесінде ашу}other{Барлығын ({COUNT}) &инкогнито терезесінде ашу}}</translation> <translation id="7684212569183643648">Әкімшіңіз орнатқан</translation> @@ -6168,6 +6171,7 @@ <translation id="7883792253546618164">Кез келген уақытта жазылымнан бас тарта аласыз.</translation> <translation id="788453346724465748">Есептік жазба туралы ақпарат жүктелуде…</translation> <translation id="7885253890047913815">Соңғы бағыттар</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{элемент}other{# элемент}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">Көшірме</translation> <translation id="7887864092952184874">Bluetooth тінтуірі жұптастырылды</translation> @@ -6407,6 +6411,7 @@ <translation id="8139447493436036221">Google Drive файлдары</translation> <translation id="8141584439523427891">Балама браузер ашылуда.</translation> <translation id="8141725884565838206">Құпия сөздеріңізді басқару</translation> +<translation id="814204052173971714">{COUNT,plural, =1{бейне}other{# бейне}}</translation> <translation id="8143442547342702591">Жарамсыз қолданба</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> таңдау</translation> <translation id="8146177459103116374">Бұл құрылғыда әлдеқашан тіркелген болсаңыз, <ph name="LINK2_START" />бұрыннан бар пайдаланушы ретінде кіруіңізге<ph name="LINK2_END" /> болады.</translation> @@ -6426,6 +6431,7 @@ <translation id="8161293209665121583">Веб-беттерге арналған оқу құралы режимі</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Қойындыны жаңа терезеден ашу}other{Қойындыларды жаңа терезеден ашу}}</translation> <translation id="8165997195302308593">Crostini жүйесінде порттардың бағытын өзгерту</translation> +<translation id="816704878106051517">{COUNT,plural, =1{телефон нөмірі}other{# телефон нөмірі}}</translation> <translation id="8168435359814927499">Мазмұн</translation> <translation id="8168943654413034772">"Таңдау" әрекетіне тағайындалған жалғыз ауыстырғышты өшіруге болмайды. Шығу үшін кез келген пернені басыңыз.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{Қойындыны оқу тізіміне қосу}other{Қойындыларды оқу тізіміне қосу}}</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index ae16ad6c..cc35d359 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -349,6 +349,7 @@ <translation id="1383597849754832576">មិនអាចទាញយកឯកសារនិយាយបានទេ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។</translation> <translation id="1383861834909034572">បើកនៅពេលបញ្ចប់</translation> <translation id="1383876407941801731">ស្វែងរក</translation> +<translation id="1384849755549338773">ផ្ដល់ជូន Google បកប្រែសម្រាប់គេហទំព័រជាភាសាផ្សេងទៀត</translation> <translation id="1386791642444521222">បើកដំណើរការស៊ីមកាត</translation> <translation id="138784436342154190">ស្តារទំព័រចាប់ផ្តើមលំនាំដើម?</translation> <translation id="1388253969141979417">អនុញ្ញាតឱ្យប្រើមីក្រូហ្វូនរបស់អ្នក</translation> @@ -871,6 +872,7 @@ <translation id="1920390473494685033">ទំនាក់ទំនង</translation> <translation id="1921050530041573580">ផ្គូផ្គងទូរសព្ទរបស់អ្នកដោយប្រើ Messages</translation> <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation> +<translation id="1923468477587371721">គេហទំព័រ Google ដូចជា Gmail, ថាស និង YouTube ជាដើមប្រើភាសាគណនី Google របស់អ្នក លុះត្រាតែអ្នកបានប្ដូរភាសាផលិតផលនីមួយៗ</translation> <translation id="192494336144674234">បើកដោយប្រើ</translation> <translation id="1925017091976104802">ចុច <ph name="MODIFIER_KEY_DESCRIPTION" /> ដើម្បីដាក់ចូល</translation> <translation id="1925021887439448749">បញ្ចូលអាសយដ្ឋានទំព័រផ្ទាល់ខ្លួន</translation> @@ -1331,7 +1333,6 @@ <translation id="2440604414813129000">មើលប្រភព</translation> <translation id="244231003699905658">អាសយដ្ឋានមិនត្រឹមត្រូវ។ សូមពិនិត្យអាសយដ្ឋាន រួចព្យាយាមម្តងទៀត។</translation> <translation id="2442916515643169563">ស្រមោលអក្សរ</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">តម្រូវឲ្យមានថតឯកសារគោលកម្មវិធីបន្ថែម។</translation> <translation id="2445484935443597917">បង្កើតកម្រងព័ត៌មានថ្មី</translation> <translation id="2448312741937722512">ប្រភេទ</translation> @@ -1637,7 +1638,6 @@ <translation id="2766006623206032690">បិទភ្ជាប់ និងទៅ</translation> <translation id="2766161002040448006">ស្នើសុំមាតាបិតា</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> នឹងអាចកែ <ph name="FILENAME" /> បាន រហូតទាល់តែអ្នកបិទផ្ទាំងទាំងអស់សម្រាប់គេហទំព័រនេះ</translation> -<translation id="276969039800130567">បានចូលជា <ph name="USER_EMAIL_ADDRESS" />។</translation> <translation id="2770465223704140727">ដកចេញពីបញ្ជី</translation> <translation id="2770690685823456775">នាំចេញពាក្យសម្ងាត់របស់អ្នកទៅថតផ្សេង</translation> <translation id="2770929488047004208">កម្រិតច្បាស់របស់អេក្រង់</translation> @@ -1955,6 +1955,7 @@ <translation id="311394601889664316">មិនអនុញ្ញាតឱ្យគេហទំព័រកែឯកសារ ឬថតនៅក្នុងឧបករណ៍របស់អ្នកទេ</translation> <translation id="3115147772012638511">កំពុងរង់ចាំឃ្លាំងសម្ងាត់...</translation> <translation id="3115580024857770654">បង្រួមទាំងអស់</translation> +<translation id="3115743155098198207">គ្រប់គ្រងភាសាគណនី Google</translation> <translation id="3117362587799608430">ឧបករណ៍ភ្ជាប់មិនត្រូវគ្នាទាំងស្រុងទេ</translation> <translation id="3117791853215125017">{COUNT,plural, =1{មិនអាចផ្ញើ <ph name="ATTACHMENTS" /> ទៅ <ph name="DEVICE_NAME" /> បានទេ}other{មិនអាចផ្ញើ <ph name="ATTACHMENTS" /> ទៅ <ph name="DEVICE_NAME" /> បានទេ}}</translation> <translation id="3118319026408854581">ជំនួយ <ph name="PRODUCT_NAME" /></translation> @@ -2374,6 +2375,7 @@ <translation id="3599863153486145794">សម្អាតប្រវត្តិពីឧបករណ៍ទាំងអស់ដែលបានចូលគណនី។ គណនី Google របស់អ្នកអាចនឹងមានទម្រង់ប្រវត្តិរុករកផ្សេងទៀតនៅ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ។</translation> <translation id="3600051066689725006">ព័ត៌មានអំពីសំណើបណ្ដាញ</translation> <translation id="3600792891314830896">បិទសំឡេងទំព័រដែលចាក់សំឡេង</translation> +<translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation> <translation id="360180734785106144">ផ្ដល់ជូនមុខងារថ្មីៗនៅពេលដែលមាន</translation> <translation id="3602290021589620013">ពិនិត្យមើល</translation> <translation id="3602870520245633055">បោះពុម្ព និងស្កេន</translation> @@ -3699,6 +3701,7 @@ <translation id="5107443654503185812">កម្មវិធីបន្ថែមមួយបានបិទការរុករកដោយសុវត្ថិភាព</translation> <translation id="5108967062857032718">ការកំណត់៖ យកកម្មវិធី Android ចេញ</translation> <translation id="5109044022078737958">ម៉ៃ</translation> +<translation id="5109816792918100764">ដក <ph name="LANGUAGE_NAME" /> ចេញ</translation> <translation id="5111646998522066203">ចាកចេញពីផ្ទាំងឯកជន</translation> <translation id="5111692334209731439">កម្មវិធីគ្រប់គ្រងចំណាំ</translation> <translation id="5112577000029535889">ឧបករណ៍អ្នកអភិវឌ្ឍន៍</translation> @@ -4440,6 +4443,7 @@ <translation id="5943127421590245687">ការផ្ទៀងផ្ទាត់របស់អ្នកបានជោគជ័យហើយ។ ដើម្បីដោះសោ ឬស្ដារទិន្នន័យមូលដ្ឋានរបស់អ្នក សូមបញ្ចូលពាក្យសម្ងាត់ <ph name="DEVICE_TYPE" /> ចាស់របស់អ្នក។</translation> <translation id="5944869793365969636">ស្កេនកូដ QR</translation> <translation id="5945002094477276055"><ph name="FILE_NAME" /> អាចបង្កគ្រោះថ្នាក់។ បញ្ជូនទៅ Google រុករកដោយសុវត្ថិភាពសម្រាប់ស្កេនដែរទេ?</translation> +<translation id="5945363896952315544">សោសុវត្ថិភាពរបស់អ្នកមិនអាចរក្សាទុកស្នាមម្រាមដៃបន្ថែមទៀតបានទេ។ ដើម្បីបញ្ចូលស្នាមម្រាមដៃថ្មី សូមលុបស្នាមម្រាមដៃដែលមានស្រាប់ជាមុនសិន។</translation> <translation id="5946591249682680882">លេខសម្គាល់របាយការណ៍ <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5948536763493709626">ភ្ជាប់ក្ដារចុច ឬកណ្ដុរ ឬបន្ដការរៀបចំដោយប្រើអេក្រង់ថាច់របស់អ្នក។ ប្រសិនបើអ្នកកំពុងប្រើឧបករណ៍ប៊្លូធូស សូមប្រាកដថា ឧបករណ៍របស់អ្នកអាចផ្គូផ្គងបាន។</translation> <translation id="5949544233750246342">មិនអាចញែកឯកសារបានទេ</translation> @@ -5385,6 +5389,7 @@ <translation id="7001036685275644873">កំពុងបម្រុងទុកកម្មវិធី និងឯកសារ Linux</translation> <translation id="7002055706763150362">ដើម្បីដំឡើង Smart Lock សម្រាប់ Chromebook, Google ត្រូវធ្វើឲ្យប្រាកដថានេះគឺជាអ្នក—វាយបញ្ចូលពាក្យសម្ងាត់របស់អ្នកដើម្បីចាប់ផ្តើម។</translation> <translation id="7003339318920871147">មូលដ្ឋានទិន្នន័យគេហទំព័រ</translation> +<translation id="7003454175711353260">{COUNT,plural, =1{ឯកសារ {COUNT}}other{ឯកសារ {COUNT}}}</translation> <translation id="7003723821785740825">កំណត់វិធីលឿនជាងនេះដើម្បីដោះសោឧបករណ៍របស់អ្នក</translation> <translation id="7003844668372540529">មិនស្គាល់ផលិតផល <ph name="PRODUCT_ID" /> ពី <ph name="VENDOR_NAME" /></translation> <translation id="7004402701596653846">គេហទំព័រអាចប្រើ MIDI</translation> @@ -5649,6 +5654,7 @@ <translation id="7306521477691455105">បើកការកំណត់ ដើម្បីភ្ជាប់ <ph name="USB_DEVICE_NAME" /> ជាមួយ <ph name="USB_VM_NAME" /></translation> <translation id="7307129035224081534">បានផ្អាក</translation> <translation id="7308436126008021607">សមកាលកម្មផ្ទៃខាងក្រោយ</translation> +<translation id="7308643132139167865">ភាសាគេហទំព័រ</translation> <translation id="7309257895202129721">បង្ហាញឧបករណ៍បញ្ជា</translation> <translation id="7310598146671372464">មិនអាចចូលគណនីបានទេ។ ម៉ាសីុនមេមិនស្គាល់ប្រភេទអ៊ីនគ្រីប Kerberos ដែលបានបញ្ជាក់ទេ។ សូមទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នក។</translation> <translation id="7320213904474460808">កំណត់បណ្ដាញជាលំនាំដើម</translation> @@ -5860,6 +5866,7 @@ <translation id="7552846755917812628">សាកល្បងធ្វើតាមគន្លឹះខាងក្រោម៖</translation> <translation id="7553012839257224005">កំពុងពិនិត្យមើលទម្រង់ផ្ទុក Linux</translation> <translation id="7553242001898162573">បញ្ចូលពាក្យសម្ងាត់របស់អ្នក។</translation> +<translation id="755472745191515939">អ្នកគ្រប់គ្រងរបស់អ្នកមិនអនុញ្ញាតឱ្យប្រើភាសានេះទេ</translation> <translation id="7554791636758816595">ផ្ទាំងថ្មី</translation> <translation id="7556033326131260574">Smart Lock មិនអាចផ្ទៀងផ្ទាត់គណនីរបស់អ្នកបានទេ។ វាយបញ្ចូលពាក្យសម្ងាត់របស់អ្នកដើម្បីចូល។</translation> <translation id="7556242789364317684">ជាអកុសល្យ <ph name="SHORT_PRODUCT_NAME" /> មិនអាចសង្គ្រោះការកំណត់របស់អ្នកទេ។ ដើម្បីដោះស្រាយកំហុសឆ្គងនេះ <ph name="SHORT_PRODUCT_NAME" /> ត្រូវកំណត់ឧបករណ៍របស់អ្នកឡើងវិញជាមួយ Powerwash។</translation> @@ -6161,6 +6168,7 @@ <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> <translation id="786073089922909430">សេវាកម្ម៖ <ph name="ARC_PROCESS_NAME" /></translation> <translation id="7861215335140947162">ទាញយក</translation> +<translation id="7861846108263890455">ភាសាគណនី Google</translation> <translation id="7864539943188674973">បិទដំណើរការប៊្លូធូស</translation> <translation id="786957569166715433"><ph name="DEVICE_NAME" /> - ត្រូវបានផ្គូផ្គង</translation> <translation id="7870730066603611552">ពិនិត្យមើលជម្រើសសមកាលកម្មបន្ទាប់ពីរៀបចំរួច</translation> @@ -6422,6 +6430,7 @@ <translation id="8143442547342702591">កម្មវិធីគ្មានសុពលភាព</translation> <translation id="8143951647992294073">ជ្រើសរើស <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation> <translation id="8146177459103116374">ប្រសិនបើអ្នកបានចុះឈ្មោះរួចហើយនៅលើឧបករណ៍នេះ អ្នកអាច <ph name="LINK2_START" />ចូលជាអ្នកប្រើដែលមានស្រាប់<ph name="LINK2_END" />។</translation> +<translation id="8146287226035613638">បញ្ចូល និងចាត់ថ្នាក់ភាសាដែលអ្នកចង់ប្រើ។ គេហទំព័រនឹងបង្ហាញជាភាសាដែលអ្នកចង់ប្រើ នៅពេលដែលសមស្រប។ ចំណូលចិត្តទាំងនេះត្រូវបានធ្វើសមកាលកម្មជាមួយការកំណត់កម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់អ្នក។ <ph name="BEGIN_LINK_LEARN_MORE" />ស្វែងយល់បន្ថែម<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="8146793085009540321">បានបរាជ័យក្នុងការចូលគណនី។ សូមទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នក ឬព្យាយាមម្តងទៀត។</translation> <translation id="8147900440966275470">បានរកឃើញផ្ទាំង <ph name="NUM" /></translation> <translation id="8148760431881541277">ដាក់កំហិតការចូលគណនី</translation> @@ -7433,6 +7442,7 @@ <translation id="983511809958454316">មិនស្គាល់មុខងារនេះនៅក្នុង VR ទេ</translation> <translation id="984136553749462603">នៅពេលគេហទំព័រចាក់ខ្លឹមសារដែលការពារដោយកម្មសិទ្ធិបញ្ញា វាអាចស្នើសុំសម្គាល់ឧបករណ៍របស់អ្នក</translation> <translation id="984275831282074731">វិធីបង់ប្រាក់</translation> +<translation id="984705303330760860">បញ្ចូលភាសាដែលអាចពិនិត្យអក្ខរាវិរុទ្ធ</translation> <translation id="98515147261107953">ផ្តេក</translation> <translation id="987068745968718743">Parallels Desktop៖ <ph name="PLUGIN_VM_NAME" /></translation> <translation id="987264212798334818">ទូទៅ</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 53523d5..4284215 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">ಮೂ&ಲವನ್ನು ವೀಕ್ಷಿಸಿ</translation> <translation id="244231003699905658">ಅಮಾನ್ಯ ವಿಳಾಸ. ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="2442916515643169563">ಪಠ್ಯದ ನೆರಳು</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">ವಿಸ್ತರಣೆ ಮೂಲ ಡೈರೆಕ್ಟರಿ ಅಗತ್ಯವಿದೆ.</translation> <translation id="2445484935443597917">ಹೊಸ ಪ್ರೊಫೈಲ್ ರಚಿಸಿ</translation> <translation id="2448312741937722512">ಪ್ರಕಾರ</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">ಅಂ&ಟಿಸಿ ಮತ್ತು ಹೋಗಿ</translation> <translation id="2766161002040448006">ಪೋಷಕರ ಬಳಿ ಕೇಳಿ</translation> <translation id="2767127727915954024">ಈ ಸೈಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಟ್ಯಾಬ್ಗಳನ್ನು ನೀವು ಮುಚ್ಚುವವರೆಗೆ, <ph name="FILENAME" /> ಫೈಲ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಲು <ph name="ORIGIN" /> ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ಹೆಸರಿನಲ್ಲಿ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗಿದೆ.</translation> <translation id="2770465223704140727">ಪಟ್ಟಿಯಿಂದ ತೆಗೆದುಹಾಕಿ</translation> <translation id="2770690685823456775">ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಇನ್ನೊಂದು ಫೋಲ್ಡರ್ಗೆ ಎಕ್ಸ್ಪೋರ್ಟ್ ಮಾಡಿ</translation> <translation id="2770929488047004208">ಮಾನಿಟರ್ ರೆಸಲ್ಯೂಷನ್</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 6be14d8..87fbd47 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">소스 보기(&O)</translation> <translation id="244231003699905658">잘못된 주소입니다. 주소를 확인한 다음 다시 시도해 보세요.</translation> <translation id="2442916515643169563">텍스트 음영</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">확장 프로그램 루트 디렉터리가 필요합니다.</translation> <translation id="2445484935443597917">새 프로필 만들기</translation> <translation id="2448312741937722512">유형</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">붙여넣어 바로가기(&S)</translation> <translation id="2766161002040448006">부모님에게 묻기</translation> <translation id="2767127727915954024">이 사이트의 탭을 모두 닫을 때까지 <ph name="ORIGIN" />에서 <ph name="FILENAME" /> 파일을 수정할 수 있게 됩니다.</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" />(으)로 로그인되었습니다.</translation> <translation id="2770465223704140727">목록에서 삭제</translation> <translation id="2770690685823456775">비밀번호를 다른 폴더로 내보냅니다.</translation> <translation id="2770929488047004208">모니터 해상도</translation> @@ -2393,6 +2391,7 @@ <translation id="3616741288025931835">인터넷 사용 기록 삭제(&C)...</translation> <translation id="3617891479562106823">배경을 사용할 수 없습니다. 나중에 다시 시도하세요.</translation> <translation id="3619115746895587757">카푸치노</translation> +<translation id="362266093274784978">{COUNT,plural, =1{앱 1개}other{앱 #개}}</translation> <translation id="362333465072914957">CA에서 인증서를 발급할 때까지 기다리는 중</translation> <translation id="3624567683873126087">기기를 잠금 해제하고 Google 계정에 로그인합니다.</translation> <translation id="3625481642044239431">잘못된 파일이 선택되었습니다. 다시 시도해 보세요.</translation> @@ -2664,6 +2663,7 @@ <translation id="3895076768659607631">검색엔진 관리(M)…</translation> <translation id="3895090224522145010">Kerberos 사용자 이름</translation> <translation id="389521680295183045">사용자가 현재 기기를 사용 중인지 사이트에서 확인을 요청할 수 있음</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{이미지 1개}other{이미지 #개}}</translation> <translation id="3898233949376129212">기기 언어</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" />의 권한 요청: <ph name="FIRST_PERMISSION" /> 및 <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">키보드 선택</translation> @@ -3575,6 +3575,7 @@ <translation id="4943368462779413526">풋볼</translation> <translation id="4943691134276646401">'<ph name="CHROME_EXTENSION_NAME" />'에서 시리얼 포트에 연결하려고 합니다.</translation> <translation id="4944310289250773232">이 인증 서비스는 <ph name="SAML_DOMAIN" />에서 호스팅합니다</translation> +<translation id="495164417696120157">{COUNT,plural, =1{파일 1개}other{파일 #개}}</translation> <translation id="495170559598752135">작업</translation> <translation id="4953808748584563296">기본 주황색 아바타</translation> <translation id="4955710816792587366">PIN 선택</translation> @@ -5074,6 +5075,7 @@ <translation id="6664237456442406323">컴퓨터가 잘못된 형식의 하드웨어 ID로 구성되어 있습니다. 이렇게 하면 Chrome OS가 최신 보안 수정사항을 업데이트할 수 없으며 컴퓨터가<ph name="BEGIN_BOLD" />악의적인 공격에 취약해 집니다<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">프로필을 여는 동안 문제가 발생했습니다. 로그아웃했다가 다시 로그인하세요.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> 사용 가능</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{주소 1개}other{주소 #개}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" />(USB)</translation> <translation id="6674571176963658787">동기화를 시작하려면 암호를 입력하세요.</translation> <translation id="6675665718701918026">포인팅 기기 연결됨</translation> @@ -5770,6 +5772,7 @@ <translation id="7456142309650173560">개발자</translation> <translation id="7456847797759667638">위치 열기...</translation> <translation id="7457384018036134905">Chrome OS 설정에서 언어 관리</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{링크 1개}other{링크 #개}}</translation> <translation id="7458168200501453431">Google 검색에서 사용되는 것과 동일한 맞춤법 검사기를 사용합니다. 브라우저에 입력하는 텍스트는 Google로 전송됩니다.</translation> <translation id="7460045493116006516">내가 설치한 현재 테마입니다.</translation> <translation id="7461924472993315131">고정</translation> @@ -6170,6 +6173,7 @@ <translation id="7883792253546618164">언제든지 수신 거부할 수 있습니다.</translation> <translation id="788453346724465748">계정 정보 로드 중…</translation> <translation id="7885253890047913815">최근 대상</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{항목 1개}other{항목 #개}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">새 탭에서 보기</translation> <translation id="7887864092952184874">블루투스 마우스 페어링됨</translation> @@ -6410,6 +6414,7 @@ <translation id="8139447493436036221">Google Drive 파일</translation> <translation id="8141584439523427891">지금 대체 브라우저에서 열립니다.</translation> <translation id="8141725884565838206">비밀번호 관리</translation> +<translation id="814204052173971714">{COUNT,plural, =1{동영상 1개}other{동영상 #개}}</translation> <translation id="8143442547342702591">잘못된 애플리케이션</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> 선택</translation> <translation id="8146177459103116374">이 기기에 이미 등록한 경우 <ph name="LINK2_START" />기존 사용자로 로그인<ph name="LINK2_END" />할 수 있습니다.</translation> @@ -6429,6 +6434,7 @@ <translation id="8161293209665121583">웹페이지 리더 모드</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{탭을 새 창으로 이동}other{탭을 새 창으로 이동}}</translation> <translation id="8165997195302308593">Crostini 포트 전달</translation> +<translation id="816704878106051517">{COUNT,plural, =1{전화번호 1개}other{전화번호 #개}}</translation> <translation id="8168435359814927499">콘텐츠</translation> <translation id="8168943654413034772">선택 작업에 할당된 유일한 스위치는 삭제할 수 없습니다. 종료하려면 아무 키나 누르세요.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{읽기 목록에 탭 추가}other{읽기 목록에 탭 추가}}</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index 15c21f7..0a53feb 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">&Булакты карап көрүү</translation> <translation id="244231003699905658">Дарек жараксыз. Даректи текшерип, кайталап көрүңүз.</translation> <translation id="2442916515643169563">Текстти көлөкөлөтүү</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Кеңейтүүнүн өзөктүк каталогу талап кылынат.</translation> <translation id="2445484935443597917">Жаңы профиль түзүү</translation> <translation id="2448312741937722512">Түрү</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Ча&птап туруп өтүү</translation> <translation id="2766161002040448006">Ата-энеңден суран</translation> <translation id="2767127727915954024">Бул сайттын бардык өтмөктөрү жабылмайынча <ph name="ORIGIN" /> сайты <ph name="FILENAME" /> файлын түзөтө алат</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> катары кирди.</translation> <translation id="2770465223704140727">Тизмеден чыгарып салуу</translation> <translation id="2770690685823456775">Сырсөздөрүңүздү башка папкага экспорттоңуз</translation> <translation id="2770929488047004208">Монитордун дааналыгы</translation> @@ -2393,6 +2391,7 @@ <translation id="3616741288025931835">&Серептөө дайындарын тазалап салуу…</translation> <translation id="3617891479562106823">Фондук сүрөттөр жеткиликсиз. Бир аздан кийин дагы аракет кылыңыз.</translation> <translation id="3619115746895587757">Капучино</translation> +<translation id="362266093274784978">{COUNT,plural, =1{колдонмо}other{# колдонмо}}</translation> <translation id="362333465072914957">Тастыктоочу борбордун тастыктаманы чыгарышы күтүлүүдө</translation> <translation id="3624567683873126087">Түзмөктүн кулпусун ачып, Google аккаунтуна кириңиз</translation> <translation id="3625481642044239431">Туура эмес файл тандалды. Кайталап көрүңүз.</translation> @@ -2664,6 +2663,7 @@ <translation id="3895076768659607631">&Издөө каражаттарын башкаруу…</translation> <translation id="3895090224522145010">Kerberos колдонуучунун аты</translation> <translation id="389521680295183045">Сайттар түзмөктү активдүү колдонуп жатканыңыз тууралуу маалыматты сурай алышат</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{сүрөт}other{# сүрөт}}</translation> <translation id="3898233949376129212">Түзмөктүн тили</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> төмөнкү аракеттерди аткарганы жатат: <ph name="FIRST_PERMISSION" /> жана <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">Баскычтопту тандоо</translation> @@ -3577,6 +3577,7 @@ <translation id="4943368462779413526">Футбол</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" сериялык портко туташканы жатат</translation> <translation id="4944310289250773232">Бул аутентификация кызматынын башкы түйүнү - <ph name="SAML_DOMAIN" /></translation> +<translation id="495164417696120157">{COUNT,plural, =1{файл}other{# файл}}</translation> <translation id="495170559598752135">Аракеттер</translation> <translation id="4953808748584563296">Демейки ток сары аватар</translation> <translation id="4955710816792587366">PIN кодуңузду тандаңыз</translation> @@ -5076,6 +5077,7 @@ <translation id="6664237456442406323">Тилекке каршы, компьютериңиз бузулган жабдыктын далдаштыргыч дайындарына конфигурацияланган. Ушундан улам, Chrome OS эң акыркы коопсуздук чаралары менен жаңыртылбагандыктан, компьютериңиз <ph name="BEGIN_BOLD" />зыянкеч чабуулдардан коргоно албай калышы мүмкүн<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">Профилиңизди ачууда бир жерден ката кетти. Чыгып, кайра кириңиз…</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> эми жеткиликтүү</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{дарек}other{# дарек}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Шайкештирүүнү баштоо үчүн сыр сүйлөмүңүздү киргизиңиз</translation> <translation id="6675665718701918026">Көрсөтүүчү түзмөк туташтырылды</translation> @@ -5772,6 +5774,7 @@ <translation id="7456142309650173560">dev</translation> <translation id="7456847797759667638">Жайгашкан жерди ачуу…</translation> <translation id="7457384018036134905">Chrome OS жөндөөлөрүнөн тилдерди башкаруу</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{шилтеме}other{# шилтеме}}</translation> <translation id="7458168200501453431">Google издөөдө колдонулган орфографияны текшерүү куралын колдонот. Серепчиде терилген текстти Google кызматтарына жөнөтүп турат.</translation> <translation id="7460045493116006516">Сиз орнотуп алган учурдагы тема</translation> <translation id="7461924472993315131">Кадап коюу</translation> @@ -6172,6 +6175,7 @@ <translation id="7883792253546618164">Жазылууну каалаган убакта токтотууга болот.</translation> <translation id="788453346724465748">Аккаунттун маалыматы жүктөлүүдө...</translation> <translation id="7885253890047913815">Акыркы көздөлгөн жайлар</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{нерсе}other{# нерсе}}</translation> <translation id="7886605625338676841">eSIM-карта</translation> <translation id="7887334752153342268">Көчүрмөлөө</translation> <translation id="7887864092952184874">Bluetooth чычканы жупташты</translation> @@ -6411,6 +6415,7 @@ <translation id="8139447493436036221">Google Drive файлдары</translation> <translation id="8141584439523427891">Кошумча серепчи азыр ачылууда</translation> <translation id="8141725884565838206">Сырсөздөрүңүздү башкарыңыз</translation> +<translation id="814204052173971714">{COUNT,plural, =1{видео}other{# видео}}</translation> <translation id="8143442547342702591">Жараксыз колдонмо</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> тандоо</translation> <translation id="8146177459103116374">Эгер бул түзмөктө буга чейин катталган болсоңуз, <ph name="LINK2_START" />учурдагы колдонуучу катары кире<ph name="LINK2_END" /> аласыз.</translation> @@ -6430,6 +6435,7 @@ <translation id="8161293209665121583">Веб барактарды Окугуч режими</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Өтмөктү жаңы терезеге жылдыруу}other{Өтмөктөрдү жаңы терезеге жылдыруу}}</translation> <translation id="8165997195302308593">Crostini портун багыттоо</translation> +<translation id="816704878106051517">{COUNT,plural, =1{телефон номери}other{# телефон номери}}</translation> <translation id="8168435359814927499">Мазмун</translation> <translation id="8168943654413034772">"Тандоо" баскычы үчүн дайындалган жалгыз которгуч өчүрүлгөн жок. Чыгуу үчүн каалаган баскычты басыңыз.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{Өтмөктү окуу тизмесине кошуу}other{Өтмөктөрдү окуу тизмесине кошуу}}</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 8b1969d..3178da6 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -1329,7 +1329,6 @@ <translation id="2440604414813129000">ເບິ່ງແຫຼ່ງທີ່ມາ</translation> <translation id="244231003699905658">ທີ່ຢູ່ບໍ່ຖືກຕ້ອງ. ກະລຸນາກວດເບິ່ງທີ່ຢູ່ ແລ້ວລອງໃໝ່.</translation> <translation id="2442916515643169563">ເງົາຂໍ້ຄວາມ</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">ຈໍາເປັນຕ້ອງມີໄດເຣັກຕໍຣີພື້ນຖານສ່ວນຂະຫຍາຍ.</translation> <translation id="2445484935443597917">ສ້າງໂປຣໄຟລ໌ໃໝ່</translation> <translation id="2448312741937722512">ປະເພດ</translation> @@ -1635,7 +1634,6 @@ <translation id="2766006623206032690">ແປະໃສ່ ແລະຄົ້ນຫາ</translation> <translation id="2766161002040448006">ຖາມພໍ່ແມ່</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> ຈະສາມາດແກ້ໄຂ <ph name="FILENAME" /> ໄດ້ຈົນກວ່າທ່ານປິດແຖບທັງໝົດສຳລັບເວັບໄຊນີ້</translation> -<translation id="276969039800130567">ລົງຊື່ເຂົ້າໃຊ້ເປັນ <ph name="USER_EMAIL_ADDRESS" /> ແລ້ວ.</translation> <translation id="2770465223704140727">ເອົາອອກຈາກລາຍການ</translation> <translation id="2770690685823456775">ສົ່ງລະຫັດຜ່ານຂອງທ່ານອອກໄປໃສ່ໂຟນເດີອື່ນ</translation> <translation id="2770929488047004208">ຄວາມລະອຽດໜ້າຈໍ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index e6e6e8f..0c7ab2e 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1334,7 +1334,6 @@ <translation id="2440604414813129000">Rodyti š&altinį</translation> <translation id="244231003699905658">Netinkamas adresas. Patikrinkite adresą ir bandykite dar kartą.</translation> <translation id="2442916515643169563">Teksto šešėlis</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Reikalingas plėtinio šakninis katalogas.</translation> <translation id="2445484935443597917">Kurti naują profilį</translation> <translation id="2448312741937722512">Tipas</translation> @@ -1640,7 +1639,6 @@ <translation id="2766006623206032690">Įklij&uoti ir eiti</translation> <translation id="2766161002040448006">Paprašyti vieno iš tėvų</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> galės redaguoti failą „<ph name="FILENAME" />“, kol uždarysite visus šios svetainės skirtukus</translation> -<translation id="276969039800130567">Prisijungta kaip <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Pašalinti iš sąrašo</translation> <translation id="2770690685823456775">Eksportuokite slaptažodžius į kitą aplanką</translation> <translation id="2770929488047004208">Monitoriaus skyra</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index a2c2395..7c00785 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1333,7 +1333,6 @@ <translation id="2440604414813129000">Skatīt avotu</translation> <translation id="244231003699905658">Adrese nav derīga. Lūdzu, pārbaudiet adresi un mēģiniet vēlreiz.</translation> <translation id="2442916515643169563">Teksta ēna</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> — <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Nepieciešams paplašinājuma saknes direktorijs.</translation> <translation id="2445484935443597917">Izveidot jaunu profilu</translation> <translation id="2448312741937722512">Tips</translation> @@ -1639,7 +1638,6 @@ <translation id="2766006623206032690">Ielīmēt un doties</translation> <translation id="2766161002040448006">Lūgt kādam no vecākiem</translation> <translation id="2767127727915954024">Vietne <ph name="ORIGIN" /> varēs rediģēt failu “<ph name="FILENAME" />”, kamēr netiks aizvērtas visas šīs vietnes cilnes.</translation> -<translation id="276969039800130567">Pierakstīts ar adresi <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Noņemt no saraksta</translation> <translation id="2770690685823456775">Eksportējiet paroles citā mapē.</translation> <translation id="2770929488047004208">Monitora izšķirtspēja</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 8d031b2..5e8d6f0 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Прикажи и&звор</translation> <translation id="244231003699905658">Неважечка адреса. Проверете ја адресата и обидете се повторно.</translation> <translation id="2442916515643169563">Сенка на текстот</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Потребен е основен директориум на наставки.</translation> <translation id="2445484935443597917">Создај нов профил</translation> <translation id="2448312741937722512">Тип</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">З&алепи и оди</translation> <translation id="2766161002040448006">Прашај родител</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> ќе може да ја изменува <ph name="FILENAME" /> сѐ додека не ги затворите сите картички за сајтов</translation> -<translation id="276969039800130567">Најавени сте како <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Отстрани од список</translation> <translation id="2770690685823456775">Извезете ги лозинките во друга папка</translation> <translation id="2770929488047004208">Резолуција на мониторот</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 443c18c..64bf6bd 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1328,7 +1328,6 @@ <translation id="2440604414813129000">ഉറവിടം കാണുക</translation> <translation id="244231003699905658">വിലാസം തെറ്റാണ്. വിലാസം പരിശോധിച്ച ശേഷം വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="2442916515643169563">ടെക്സ്റ്റ് ഷാഡോ</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">വിപുലീകരണ റൂട്ട് ഡയറക്റ്ററി ആവശ്യമാണ്.</translation> <translation id="2445484935443597917">പുതിയ പ്രൊഫൈൽ സൃഷ്ടിക്കുക</translation> <translation id="2448312741937722512">തരം</translation> @@ -1634,7 +1633,6 @@ <translation id="2766006623206032690">ഒട്ടി&ക്കൂ കൂടാതെ പോകൂ</translation> <translation id="2766161002040448006">രക്ഷിതാവിനോട് ചോദിക്കുക</translation> <translation id="2767127727915954024">ഈ സൈറ്റിനുള്ള എല്ലാ ടാബുകളും നിങ്ങൾ അടയ്ക്കുന്നത് വരെ <ph name="ORIGIN" />-ന് <ph name="FILENAME" /> എഡിറ്റ് ചെയ്യാനാവും</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> എന്നായി സൈൻ ഇൻ ചെയ്തു.</translation> <translation id="2770465223704140727">പട്ടികയില് നിന്നും നീക്കംചെയ്യുക</translation> <translation id="2770690685823456775">നിങ്ങളുടെ പാസ്വേഡുകൾ മറ്റൊരു ഫോൾഡറിലേക്ക് എക്സ്പോർട്ട് ചെയ്യുക</translation> <translation id="2770929488047004208">മോണിറ്റർ റെസല്യൂഷൻ</translation> @@ -2390,6 +2388,7 @@ <translation id="3616741288025931835">&ബ്രൌസിംഗ് ഡാറ്റ ഇല്ലാതാക്കുക...</translation> <translation id="3617891479562106823">പശ്ചാത്തലങ്ങൾ ലഭ്യമല്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="3619115746895587757">കാപ്പുചീനോ</translation> +<translation id="362266093274784978">{COUNT,plural, =1{ഒരു ആപ്പ്}other{# ആപ്പുകൾ}}</translation> <translation id="362333465072914957">സര്ട്ടിഫിക്കറ്റ് ഇഷ്യൂ ചെയ്യാൻ CA-ക്കായി കാത്തിരിക്കുന്നു</translation> <translation id="3624567683873126087">ഉപകരണം അൺലോക്ക് ചെയ്ത് Google അക്കൗണ്ടിലേക്ക് സൈൻ ഇൻ ചെയ്യുക</translation> <translation id="3625481642044239431">അസാധുവായ ഫയൽ തിരഞ്ഞെടുത്തു. വീണ്ടും ശ്രമിക്കുക.</translation> @@ -2661,6 +2660,7 @@ <translation id="3895076768659607631">&തിരയൽ യന്ത്രങ്ങൾ മാനേജ് ചെയ്യുക...</translation> <translation id="3895090224522145010">Kerberos ഉപയോക്തൃനാമം</translation> <translation id="389521680295183045">നിങ്ങൾ സജീവമായി ഉപകരണം ഉപയോഗിക്കുന്നത് എപ്പോഴാണെന്ന് അറിയാൻ സൈറ്റുകൾക്ക് ആവശ്യപ്പെടാനാകും</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{ഒരു ചിത്രം}other{# ചിത്രങ്ങൾ}}</translation> <translation id="3898233949376129212">ഉപകരണത്തിന്റെ ഭാഷ</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> ഇവ ചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നു: <ph name="FIRST_PERMISSION" />, <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">കീബോർഡ് തിരഞ്ഞെടുക്കുക</translation> @@ -3573,6 +3573,7 @@ <translation id="4943368462779413526">ഫുട്ബോള്</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />", ഒരു സീരിയല് പോർട്ടിലേക്ക് കണക്റ്റ് ചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നു</translation> <translation id="4944310289250773232">ഈ പരിശോധിച്ചുറപ്പിക്കൽ സേവനം ഹോസ്റ്റ് ചെയ്തിരിക്കുന്നത് <ph name="SAML_DOMAIN" /> ആണ്</translation> +<translation id="495164417696120157">{COUNT,plural, =1{ഒരു ഫയൽ}other{# ഫയലുകൾ}}</translation> <translation id="495170559598752135">പ്രവര്ത്തനങ്ങള്</translation> <translation id="4953808748584563296">ഡിഫോൾട്ടായ ഓറഞ്ച് അവതാർ</translation> <translation id="4955710816792587366">നിങ്ങളുടെ പിൻ തിരഞ്ഞെടുക്കുക</translation> @@ -5074,6 +5075,7 @@ <translation id="6664237456442406323">നിർഭാഗ്യവശാൽ, കേടായ ഒരു ഹാർഡ്വെയർ ID ഉപയോഗിച്ചാണ് നിങ്ങളുടെ കമ്പ്യൂട്ടർ കോൺഫിഗർ ചെയ്തിരിക്കുന്നത്. ഇത് ഏറ്റവും പുതിയ സുരക്ഷാ പരിഹാരങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ നിന്നും Chrome OS-നെ തടയുന്നു, ഒപ്പം നിങ്ങളുടെ കമ്പ്യൂട്ടർ <ph name="BEGIN_BOLD" />ക്ഷുദ്രകരമായ ആക്രമണങ്ങളാൽ കേടാകാനുമിടയുണ്ട്<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">നിങ്ങളുടെ പ്രൊഫൈൽ തുറക്കുമ്പോൾ എന്തോ കുഴപ്പമുണ്ടായി. സൈൻ ഔട്ട് ചെയ്ത്, വീണ്ടും സൈൻ ഇൻ ചെയ്യുക.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> ഇപ്പോൾ ലഭ്യമാണ്</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{ഒരു വിലാസം}other{# വിലാസങ്ങൾ}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">സമന്വയിപ്പിക്കാൻ തുടങ്ങുന്നതിന്, നിങ്ങളുടെ പാസ്ഫ്രെയ്സ് നൽകുക</translation> <translation id="6675665718701918026">പോയിന്റ് ചെയ്യുന്ന ഉപകരണം കണക്റ്റ് ചെയ്തു</translation> @@ -5770,6 +5772,7 @@ <translation id="7456142309650173560">ഡെവലപ്പർ</translation> <translation id="7456847797759667638">സ്ഥാനം തുറക്കുക...</translation> <translation id="7457384018036134905">Chrome OS ക്രമീകരണത്തിൽ ഭാഷകൾ മാനേജ് ചെയ്യുക</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{ഒരു ലിങ്ക്}other{# ലിങ്കുകൾ}}</translation> <translation id="7458168200501453431">Google തിരയലിൽ ഉപയോഗിക്കുന്ന അതേ സ്പെൽ ചെക്കർ ഉപയോഗിക്കുന്നു. നിങ്ങൾ ബ്രൗസറിൽ ടൈപ്പ് ചെയ്യുന്ന ടെക്സ്റ്റ് Google-ന് അയയ്ക്കുന്നു.</translation> <translation id="7460045493116006516">നിങ്ങൾ നിലവിൽ ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്ന തീം</translation> <translation id="7461924472993315131">പിൻ ചെയ്യുക</translation> @@ -6170,6 +6173,7 @@ <translation id="7883792253546618164">ഏത് സമയത്തും വരിക്കാരല്ലാതാവുക.</translation> <translation id="788453346724465748">അക്കൗണ്ട് വിവരങ്ങൾ ലോഡ് ചെയ്യുന്നു...</translation> <translation id="7885253890047913815">സമീപകാല ലക്ഷ്യസ്ഥാനങ്ങൾ</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{ഒരു ഇനം}other{# ഇനങ്ങൾ}}</translation> <translation id="7886605625338676841">ഇ-സിം</translation> <translation id="7887334752153342268">തനിപ്പകര്പ്പ്</translation> <translation id="7887864092952184874">Bluetooth മൗസ് ജോടിയാക്കി</translation> @@ -6410,6 +6414,7 @@ <translation id="8139447493436036221">Google Drive ഫയലുകൾ</translation> <translation id="8141584439523427891">ഇപ്പോൾ മറ്റൊരു ബ്രൗസറിൽ തുറക്കുന്നു</translation> <translation id="8141725884565838206">നിങ്ങളുടെ പാസ്വേഡുകൾ നിയന്ത്രിക്കുക</translation> +<translation id="814204052173971714">{COUNT,plural, =1{ഒരു വീഡിയോ}other{# വീഡിയോകൾ}}</translation> <translation id="8143442547342702591">ആപ്പ് അസാധുവാണ്</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> തിരഞ്ഞെടുക്കുക</translation> <translation id="8146177459103116374">നിങ്ങൾ ഇതിനകം ഈ ഉപകരണത്തിൽ രജിസ്റ്റർ ചെയ്തെങ്കിൽ, <ph name="LINK2_START" />നിലവിലുള്ള ഉപയോക്താവായി സൈൻ ഇൻ ചെയ്യാൻ<ph name="LINK2_END" /> നിങ്ങൾക്ക് കഴിയും.</translation> @@ -6429,6 +6434,7 @@ <translation id="8161293209665121583">വെബ് പേജുകൾക്കുള്ള വായനാ മോഡ്</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ടാബ് പുതിയ വിൻഡോയിലേക്ക് നീക്കുക}other{ടാബുകൾ പുതിയ വിൻഡോയിലേക്ക് നീക്കുക}}</translation> <translation id="8165997195302308593">Crostini പോർട്ട് ഫോർവേഡിംഗ്</translation> +<translation id="816704878106051517">{COUNT,plural, =1{ഒരു ഫോൺ നമ്പർ}other{# ഫോൺ നമ്പറുകൾ}}</translation> <translation id="8168435359814927499">ഉള്ളടക്കം</translation> <translation id="8168943654413034772">'തിരഞ്ഞെടുക്കുക' പ്രവർത്തനത്തിന് അസൈൻ ചെയ്തിട്ടുള്ള ഏക സ്വിച്ച് നീക്കം ചെയ്യാനാകില്ല. പുറത്ത് കടക്കാൻ ഏതെങ്കിലും കീ അമർത്തുക.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{വായനാ ലിസ്റ്റിലേക്ക് ടാബ് ചേർക്കുക}other{വായനാ ലിസ്റ്റിലേക്ക് ടാബുകൾ ചേർക്കുക}}</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 2def2ba..3b0d800 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -349,6 +349,7 @@ <translation id="1383597849754832576">Ярианы файлуудыг татах боломжгүй. Дараа дахин оролдоно уу.</translation> <translation id="1383861834909034572">Дуусах үед нээж байна</translation> <translation id="1383876407941801731">Хайлт</translation> +<translation id="1384849755549338773">Бусад хэл дээрх вебсайтуудад Google Орчуулагчийг санал болгоно</translation> <translation id="1386791642444521222">Биет SIM идэвхжүүлэх</translation> <translation id="138784436342154190">Өгөгдмөл эхлүүлэх хуудсыг сэргээх үү?</translation> <translation id="1388253969141979417">Таны микрофоныг ашиглахыг зөвшөөрсөн</translation> @@ -867,6 +868,7 @@ <translation id="1920390473494685033">Харилцагчид</translation> <translation id="1921050530041573580">Утсаа Мессежтэй хослуулах</translation> <translation id="1921584744613111023"><ph name="DPI" /> нэг инчид ноогдох цэгийн тоо</translation> +<translation id="1923468477587371721">Та тухайн бүтээгдэхүүний хэлийг тусад нь өөрчлөөгүй бол Gmail, Драйв болон YouTube зэрэг Google-н сайтууд таны Google Бүртгэлийн хэлийг ашиглана.</translation> <translation id="192494336144674234">Дараахаар нээх</translation> <translation id="1925017091976104802">Буулгахын тулд <ph name="MODIFIER_KEY_DESCRIPTION" />-г дарна уу</translation> <translation id="1925021887439448749">Тохируулсан веб хаяг оруулах</translation> @@ -1326,7 +1328,6 @@ <translation id="2440604414813129000">Эх үүсвэрийг харуул</translation> <translation id="244231003699905658">Хаяг буруу байна. Хаягийг шалгаад дахин оролдоно уу.</translation> <translation id="2442916515643169563">Текстийн сүүдэр</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Өргөтгөлийн стандарт директор шаардлагатай байна.</translation> <translation id="2445484935443597917">Шинэ профайл үүсгэх</translation> <translation id="2448312741937722512">Төрөл</translation> @@ -1632,7 +1633,6 @@ <translation id="2766006623206032690">Хуулан буулгасны дараагаар үргэлжлүүлэх</translation> <translation id="2766161002040448006">Эцэг эхээс асуух</translation> <translation id="2767127727915954024">Таныг энэ сайтын бүх табыг хаах хүртэл <ph name="ORIGIN" /> нь <ph name="FILENAME" />-г засах боломжтой байна</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" />-н нэрээр нэвтэрсэн байна.</translation> <translation id="2770465223704140727">Жагсаалтаас устгах</translation> <translation id="2770690685823456775">Нууц үгээ өөр фолдерт экспортлох</translation> <translation id="2770929488047004208">Мониторын нягтрал</translation> @@ -1950,6 +1950,7 @@ <translation id="311394601889664316">Сайтуудад таны төхөөрөмж дээрх файлууд эсвэл фолдеруудыг засахыг бүү зөвшөөр</translation> <translation id="3115147772012638511">Кэш хүлээж байна...</translation> <translation id="3115580024857770654">Бүгдийг буулгах</translation> +<translation id="3115743155098198207">Google Бүртгэлийн хэлийг удирдах</translation> <translation id="3117362587799608430">Холбогч бүрэн тохирохгүй байна</translation> <translation id="3117791853215125017">{COUNT,plural, =1{<ph name="ATTACHMENTS" />-г <ph name="DEVICE_NAME" /> руу илгээж чадсангүй}other{<ph name="ATTACHMENTS" />-г <ph name="DEVICE_NAME" /> руу илгээж чадсангүй}}</translation> <translation id="3118319026408854581"><ph name="PRODUCT_NAME" /> Тусламж</translation> @@ -2369,6 +2370,7 @@ <translation id="3599863153486145794">Бүх нэвтэрсэн төхөөрөмжийн түүхийг устгана. Таны Google бүртгэл <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-д хайлтын түүхийн өөр хэлбэртэй байж болзошгүй.</translation> <translation id="3600051066689725006">Вебийн хүсэлтийн мэдээлэл</translation> <translation id="3600792891314830896">Дуу тоглуулдаг сайтуудын дууг хаах</translation> +<translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation> <translation id="360180734785106144">Шинэ онцлогуудыг боломжтой болмогц санал болгох</translation> <translation id="3602290021589620013">Мэдээллийг урьдчилж харах</translation> <translation id="3602870520245633055">Хэвлэх болон скан хийх</translation> @@ -3693,6 +3695,7 @@ <translation id="5107443654503185812">Өргөтгөл нь Аюулгүй хайлтыг унтраасан</translation> <translation id="5108967062857032718">Тохиргоо - Андройд апп-г устгах</translation> <translation id="5109044022078737958">Миа</translation> +<translation id="5109816792918100764"><ph name="LANGUAGE_NAME" />-г хасах</translation> <translation id="5111646998522066203">Нууцлалын цонхыг хаах</translation> <translation id="5111692334209731439">& Хадгалагдсан хуудсын менежер</translation> <translation id="5112577000029535889">& Хөгжүүлэгч хэрэгслүүд</translation> @@ -4433,6 +4436,7 @@ <translation id="5943127421590245687">Та амжилттай баталгаажууллаа. Та дотоод өгөгдлийнхөө түгжээг тайлж, сэргээхийн тулд <ph name="DEVICE_TYPE" />-н хуучин нууц үгээ оруулна уу.</translation> <translation id="5944869793365969636">QR кодыг скан хийх</translation> <translation id="5945002094477276055"><ph name="FILE_NAME" /> аюултай байж болзошгүй. Google-н аюулгүй хөтөч рүү скан хийлгэхээр илгээх үү?</translation> +<translation id="5945363896952315544">Таны аюулгүй байдлын түлхүүр дахин ямар нэг хурууны хээ хадгалах боломжгүй. Шинийг нэмэхийн тулд эхлээд одоо байгаа аль нэг хурууны хээг устгана уу.</translation> <translation id="5946591249682680882"><ph name="WEBRTC_LOG_REPORT_ID" /> ID-ыг мэдээлэх</translation> <translation id="5948536763493709626">Гар эсвэл хулгана холбоно уу. Эсвэл тохируулгыг мэдрэмтгий дэлгэцээ ашиглан үргэлжлүүлнэ үү. Хэрэв та Bluetooth төхөөрөмжүүд ашиглаж байвал таны төхөөрөмжүүд хослуулахад бэлэн эсэхийг шалгана уу.</translation> <translation id="5949544233750246342">Файл задлах боломжгүй байна</translation> @@ -5378,6 +5382,7 @@ <translation id="7001036685275644873">Linux аппууд болон файлуудыг нөөцөлж байна</translation> <translation id="7002055706763150362">Chromebook-д зориулсан Smart Lock-ийг тохируулахын тулд Google та мөн гэдгийг батлах хэрэгтэй. Эхлэхийн тулд нууц үгээ бичнэ үү.</translation> <translation id="7003339318920871147">Веб өгөгдлийн сан</translation> +<translation id="7003454175711353260">{COUNT,plural, =1{{COUNT} файл}other{{COUNT} файл}}</translation> <translation id="7003723821785740825">Төхөөрөмжийнхөө түгжээг илүү хурдан тайлах арга тохируулах</translation> <translation id="7003844668372540529"><ph name="VENDOR_NAME" />-ын тодорхойгүй бүтээгдэхүүн <ph name="PRODUCT_ID" /></translation> <translation id="7004402701596653846">Сайт MIDI ашиглах боломжтой</translation> @@ -5642,6 +5647,7 @@ <translation id="7306521477691455105"><ph name="USB_DEVICE_NAME" />-г <ph name="USB_VM_NAME" />-д холбохын тулд Тохиргоог нээнэ үү</translation> <translation id="7307129035224081534">Түр зогсоосон</translation> <translation id="7308436126008021607">ард синк хийх</translation> +<translation id="7308643132139167865">Вебсайтын хэлнүүд</translation> <translation id="7309257895202129721">Хяналтыг харуул</translation> <translation id="7310598146671372464">Нэвтэрч чадсангүй. Сервер нь Kerberos-н тодорхой шифрлэлтийн төрлийг дэмждэггүй. Админтайгаа холбогдоно уу.</translation> <translation id="7320213904474460808">Сүлжээг өгөгдмөл болгох</translation> @@ -5853,6 +5859,7 @@ <translation id="7552846755917812628">Дараах зөвлөгөөг дагана уу:</translation> <translation id="7553012839257224005">Linux контейнерыг шалгаж байна</translation> <translation id="7553242001898162573">Нууц үгээ оруулна уу</translation> +<translation id="755472745191515939">Танай администратор энэ хэлийг зөвшөөрдөггүй</translation> <translation id="7554791636758816595">Шинэ таб</translation> <translation id="7556033326131260574">Smart Lock таны бүртгэлийг шалгах боломжгүй байна. Та нууц үгээ оруулна уу.</translation> <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> нь таны тохиргоог дахин сэргээх боломжгүй байна. Энэ алдааг засахын тулд <ph name="SHORT_PRODUCT_NAME" /> нь Powerwash-ийн тусламжтай таны төхөөрөмжид дахин тохиргоо хийх шаардлагатай.</translation> @@ -6153,6 +6160,7 @@ <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> <translation id="786073089922909430">Үйлчилгээ: <ph name="ARC_PROCESS_NAME" /></translation> <translation id="7861215335140947162">&Татаж авалтууд</translation> +<translation id="7861846108263890455">Google Бүртгэлийн хэл</translation> <translation id="7864539943188674973">Bluetooth-ийг идэвхгүй болго</translation> <translation id="786957569166715433"><ph name="DEVICE_NAME" /> - Холбосон</translation> <translation id="7870730066603611552">Синк хийх сонголтын тохируулгыг хянах</translation> @@ -6412,6 +6420,7 @@ <translation id="8143442547342702591">Хүчингүй апп</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />-г сонгох</translation> <translation id="8146177459103116374">Хэрэв та энэ төхөөрөмжид аль хэдийн бүртгүүлсэн бол та <ph name="LINK2_START" />бүртгэлтэй хэрэглэгчээр нэвтэрч<ph name="LINK2_END" /> болно.</translation> +<translation id="8146287226035613638">Сонгосон хэлнүүдээ нэмж, зэрэглэл хийнэ үү. Боломжтой бол вебсайтуудыг таны сонгосон хэлнүүд дээр харуулна. Эдгээр сонголтыг таны хөтчийн тохиргоотой синк хийдэг. <ph name="BEGIN_LINK_LEARN_MORE" />Нэмэлт мэдээлэл авах<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="8146793085009540321">Нэвтэрч чадсангүй. Та администратортайгаа холбогдох, эсвэл дахин оролдоно уу.</translation> <translation id="8147900440966275470"><ph name="NUM" /> таб оллоо</translation> <translation id="8148760431881541277">Нэвтрэхийг хязгаарлах</translation> @@ -7421,6 +7430,7 @@ <translation id="983511809958454316">Энэ онцлогийг VR-д дэмжээгүй</translation> <translation id="984136553749462603">Сайт зохиогчийн эрхээр хамгаалагдсан контент тоглуулахдаа таны төхөөрөмжийг танихыг хүсэж болзошгүй</translation> <translation id="984275831282074731">Төлбөрийн хэрэгсэл</translation> +<translation id="984705303330760860">Зөв бичгийн алдаа шалгах хэлнүүдийг нэмэх</translation> <translation id="98515147261107953">Газрын гадаргуун зураг</translation> <translation id="987068745968718743">Parallels Desktop: <ph name="PLUGIN_VM_NAME" /></translation> <translation id="987264212798334818">Ерөнхий</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 55b8317..a6f1837 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1635,7 +1635,6 @@ <translation id="2766006623206032690">पे&स्ट करा आणि जा</translation> <translation id="2766161002040448006">पालकाला विचारा</translation> <translation id="2767127727915954024">तुम्ही या साइटसाठी सर्व टॅब बंद करेपर्यंत <ph name="ORIGIN" /> ला <ph name="FILENAME" /> संपादित करता येईल</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> म्हणून साइन इन केले</translation> <translation id="2770465223704140727">सूचीमधून काढून टाका</translation> <translation id="2770690685823456775">तुमचे पासवर्ड दुसर्या फोल्डरमध्ये एक्सपोर्ट करा</translation> <translation id="2770929488047004208">मॉनिटर रिझोल्युशन</translation> @@ -2391,6 +2390,7 @@ <translation id="3616741288025931835">ब्राउझिंग डेटा &साफ करा...</translation> <translation id="3617891479562106823">बॅकग्राउंड अनुपलब्ध आहेत. नंतर पुन्हा प्रयत्न करा.</translation> <translation id="3619115746895587757">कॅपिचिनो</translation> +<translation id="362266093274784978">{COUNT,plural, =1{अॅप}other{# अॅप्स}}</translation> <translation id="362333465072914957">CA ने सर्टिफिकेट जारी करण्याची प्रतीक्षा करत आहे</translation> <translation id="3624567683873126087">डिव्हाइस अनलॉक करा आणि Google खात्यामध्ये साइन इन करा</translation> <translation id="3625481642044239431">चुकीची फाइल निवडली. पुन्हा प्रयत्न करा.</translation> @@ -2662,6 +2662,7 @@ <translation id="3895076768659607631">शोध इंजीन व्यवस्थापित करा...</translation> <translation id="3895090224522145010">Kerberos वापरकर्ता नाव</translation> <translation id="389521680295183045">तुम्ही तुमचे डिव्हाइस सक्रियपणे कधी वापरता त्याबद्दल जाणून घेण्यासाठी साइट विचारू शकतात</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{इमेज}other{# इमेज}}</translation> <translation id="3898233949376129212">डिव्हाइसची भाषा</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> ला हे करायचे आहे: <ph name="FIRST_PERMISSION" /> आणि <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">कीबोर्ड निवडा</translation> @@ -3573,6 +3574,7 @@ <translation id="4943368462779413526">फूटबॉल</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ना सिरीअल पोर्टशी कनेक्ट करायचे आहे</translation> <translation id="4944310289250773232">ही ऑथेंटिकेशन सेवा <ph name="SAML_DOMAIN" /> द्वारे होस्ट केली जाते</translation> +<translation id="495164417696120157">{COUNT,plural, =1{फाइल}other{# फाइल}}</translation> <translation id="495170559598752135">क्रिया</translation> <translation id="4953808748584563296">डीफॉल्ट नारिंगी अवतार</translation> <translation id="4955710816792587366">तुमचा पिन निवडा</translation> @@ -4641,6 +4643,7 @@ <translation id="6184099524311454384">टॅब शोधा</translation> <translation id="6185132558746749656">डिव्हाइस स्थान</translation> <translation id="6186394437969115158">आशय किंवा सेवा विनामूल्य पुरवता येण्यासाठी साइट सामान्यपणे जाहिराती दाखवतात. परंतु, काही साइट अनाहूत किंवा दिशाभूल करणार्या जाहिराती दाखवतात.</translation> +<translation id="6195005504600220730">तुमचे ब्राउझर, OS आणि डिव्हाइस यांबद्दल माहिती वाचा</translation> <translation id="6195693561221576702">हे डिव्हाइस ऑफलाइन डेमो मोडमध्ये सेट केले जाऊ शकत नाही.</translation> <translation id="6195724942939841102">रिस्टोअर करू नका</translation> <translation id="6196640612572343990">तृतीय-पक्ष कुकीज अवरोधित करा</translation> @@ -5072,6 +5075,7 @@ <translation id="6664237456442406323">दुर्दैवाने, तुमचा कॉंप्युटर एका विकृत हार्डवेअर आयडी सह कॉंफिगर केला आहे. हे नवीनतम सुरक्षितता निराकरणे अपडेट करण्यापासून Chrome OS ला प्रतिबंध करते आणि तुमच्या कॉंप्युटरवर <ph name="BEGIN_BOLD" />दुर्भावनापूर्ण आक्रमणांमुळे सहज परिणाम होऊ शकतो<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">तुमचे प्रोफाईल उघडताना काहीतरी चूक झाली. कृपया साइन आउट करा नंतर पुन्हा साइन इन करा.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> आता उपलब्ध आहे</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{पत्ता}other{# पत्ते}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">सिंक सुरू करण्यासाठी तुमचा पासफ्रेझ एंटर करा</translation> <translation id="6675665718701918026">निर्देशित करणारे डिव्हाइस कनेक्ट केले</translation> @@ -5768,6 +5772,7 @@ <translation id="7456142309650173560">dev</translation> <translation id="7456847797759667638">स्थान उघडा...</translation> <translation id="7457384018036134905">Chrome OS सेटिंग्जमध्ये भाषा व्यवस्थापित करा</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{लिंक}other{# लिंक}}</translation> <translation id="7458168200501453431">Google Search मध्ये वापरत असेलेले स्पेल चेकर वापरले जाते. तुम्ही ब्राउझरमध्ये टाइप करत असलेला मजकूर Google कडे पाठवला जातो.</translation> <translation id="7460045493116006516">तुम्ही इंस्टॉल केलेली सध्याची थीम</translation> <translation id="7461924472993315131">पिन</translation> @@ -6166,6 +6171,7 @@ <translation id="7883792253546618164">सदस्यत्व कधीही रद्द करा.</translation> <translation id="788453346724465748">खाते माहिती लोड करत आहे...</translation> <translation id="7885253890047913815">अलीकडील गंतव्ये</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{आयटम}other{# आयटम}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">डुप्लिकेट</translation> <translation id="7887864092952184874">ब्लूटूथ माउस जोडला</translation> @@ -6406,6 +6412,7 @@ <translation id="8139447493436036221">Google Drive फाइल</translation> <translation id="8141584439523427891">आता पर्यायी ब्राउझरमध्ये उघडत आहे</translation> <translation id="8141725884565838206">तुमचे पासवर्ड व्यवस्थापित करा</translation> +<translation id="814204052173971714">{COUNT,plural, =1{व्हिडिओ}other{# व्हिडिओ}}</translation> <translation id="8143442547342702591">चुकीचे ॲप्लिकेशन</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> निवडा</translation> <translation id="8146177459103116374">तुम्ही या डिव्हाइसवर आधीपासूनच नोंदणीकृत असल्यास, तुम्ही <ph name="LINK2_START" />विद्यमान वापरकर्ता म्हणून साइन इन<ph name="LINK2_END" /> करु शकता.</translation> @@ -6425,6 +6432,7 @@ <translation id="8161293209665121583">वेब पेजसाठी वाचक मोड</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{टॅब नवीन विंडो वर हलवा}other{टॅब नवीन विंडो वर हलवा}}</translation> <translation id="8165997195302308593">Crostini पोर्ट फॉरवर्डिंग</translation> +<translation id="816704878106051517">{COUNT,plural, =1{फोन नंबर}other{# फोन नंबर}}</translation> <translation id="8168435359814927499">आशय</translation> <translation id="8168943654413034772">निवडा यासाठी असाइन केलेला एकमेव स्विच काढून टाकू शकत नाही. बाहेर पडण्यासाठी कोणतीही की दाबा.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{वाचन सूचीवर टॅब जोडा}other{वाचन सूचीवर टॅब जोडा}}</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 09a4dac..a53583a 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Lihat s&umber</translation> <translation id="244231003699905658">Alamat tidak sah. Sila semak alamat dan cuba lagi.</translation> <translation id="2442916515643169563">Bayangan teks</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Direktori akar sambungan adalah diperlukan.</translation> <translation id="2445484935443597917">Buat Profil Baharu</translation> <translation id="2448312741937722512">Jenis</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Ta&mpal dan pergi</translation> <translation id="2766161002040448006">Tanya ibu/bapa</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> akan dapat mengedit <ph name="FILENAME" /> sehinggalah anda menutup semua tab bagi tapak ini</translation> -<translation id="276969039800130567">Log masuk sebagai <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Buang dari senarai</translation> <translation id="2770690685823456775">Eksport kata laluan anda ke folder lain</translation> <translation id="2770929488047004208">Peleraian monitor</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 19ae8da..d594067 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -133,7 +133,7 @@ <ph name="BEGIN_BOLD" />သတိပြုရန်-<ph name="END_BOLD" /> ၎င်းကို နောင်တွင် 'Google Assistant ဆက်တင်များ' > 'သက်ဆိုင်ရာ အချက်အလက်' ၌ အချိန်မရွေး ပြန်ပြောင်းနိုင်သည်။</translation> <translation id="1143142264369994168">အသိမှတ်ပြုလက်မှတ် ဆိုင်းထိုးသူ</translation> <translation id="1143816224540441191">{NUM_MINS,plural, =1{Chrome သည် သင့်ကွန်ပျူတာတွင် အန္တရာယ်ဆော့ဖ်ဝဲကို ရှာမတွေ့ပါ • ပြီးခဲ့သော 1 မိနစ်က စစ်ထားသည်}other{Chrome သည် သင့်ကွန်ပျူတာတွင် အန္တရာယ်ဆော့ဖ်ဝဲကို ရှာမတွေ့ပါ • ပြီးခဲ့သော {NUM_MINS} မိနစ်က စစ်ထားသည်}}</translation> -<translation id="1145593918056169051">ပုံနှိပ်စက် ရပ်သွားပါပြီ</translation> +<translation id="1145593918056169051">ပရင်တာ ရပ်သွားပါပြီ</translation> <translation id="114721135501989771">Chrome တွင် Google ကို ပို၍အဆင့်မြင့်လာအောင် ပြုလုပ်ခြင်း</translation> <translation id="1147322039136785890">ယခု <ph name="SUPERVISED_USER_NAME" /> ၏ အလှည့်ပါ</translation> <translation id="1147991416141538220">ဝင်ကြည့်ခွင့်တောင်းရန် ဤစက်၏ စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။</translation> @@ -332,7 +332,7 @@ <translation id="1361655923249334273">မသုံးခဲ့</translation> <translation id="1361872463926621533">အစပြုချိန်တွင် အသံဖွင့်ရန်</translation> <translation id="1362865166188278099">စက်ပြဿနာ။ ပရင်တာကိုစစ်ပါ</translation> -<translation id="1363585519747660921">USB ပုံနှိပ်စက်အတွက် စီစဉ်သတ်မှတ်မှု လိုအပ်သည်</translation> +<translation id="1363585519747660921">USB ပရင်တာအတွက် စီစဉ်သတ်မှတ်မှု လိုအပ်သည်</translation> <translation id="1367951781824006909">ဖိုင်ကို ရွေးရန်</translation> <translation id="1369149969991017342">ခလုတ်သုံးခြင်း (အသွင်တူခလုတ် တစ်ခု သို့မဟုတ် နှစ်ခုတည်းဖြင့် ကွန်ပျူတာကို ထိန်းချုပ်ပါ)</translation> <translation id="1372841398847029212">သင့်အကောင့်သို့ စင့်ခ်လုပ်ရန်</translation> @@ -357,7 +357,7 @@ <translation id="1390548061267426325">ပုံမှန် တပ်ဖ် အနေဖြင့် ဖွင့်မည်</translation> <translation id="1393283411312835250">နေနှင့် မိုးတိမ်</translation> <translation id="1395730723686586365">မွမ်းမံရေး လုပ်ကိုင်မှု စတင်ပြီ</translation> -<translation id="1396139853388185343">ပုံနှိပ်စက်ကို စနစ်ထည့်သွင်းစဉ် အမှားအယွင်းရှိနေသည်</translation> +<translation id="1396139853388185343">ပရင်တာကို စနစ်ထည့်သွင်းစဉ် အမှားအယွင်းရှိနေသည်</translation> <translation id="1396259464226642517">ဤရလဒ်ကို မျှော်မှန်းထားပါသလား။ <ph name="BEGIN_LINK" />အကြံပြုချက် ပို့ရန်<ph name="END_LINK" /></translation> <translation id="1396963298126346194">သင်ထည့်သွင်းသည့် အသုံးပြုသူအမည်နှင့် စကားဝှက်တို့ ကိုက်ညီမှုမရှိပါ</translation> <translation id="1397500194120344683">သတ်မှတ်ချက် ပြည့်မီသည့် စက်မရှိပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> @@ -379,7 +379,7 @@ <translation id="1414648216875402825">သင်သည် မတည်ငြိမ်သည့် <ph name="PRODUCT_NAME" /> ဗားရှင်းသို့အဆင့်မြှင့်နေသည် ၎င်းတွင် တိုးတက်ဆဲ အင်္ဂါရပ်များပါဝင်သည်။ ပျက်စီးခြင်းများနှင့် မမျှော်လင့်သည့် မှားယွင်းမှုများ ဖြစ်နိုင်ပါသည်။ ကျေးဇူးပြု၍ သတိဖြင့် ရှေ့ဆက်ပါ။</translation> <translation id="1415708812149920388">ကလစ်ဘုတ် ကြည့်ရှုခွင့်ကို ငြင်းပယ်ထားခြင်း</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (အိတ်စတန်းရှင်း ID "<ph name="EXTENSION_ID" />") အားဤအပိုင်းမျိုးတွင် ခွင့်မပြုပါ။</translation> -<translation id="1418954524306642206">သင့်ပုံနှိပ်စက် PPD ကို သတ်မှတ်ရန် ဖွင့်ကြည့်ပါ</translation> +<translation id="1418954524306642206">သင့်ပရင်တာ PPD ကို သတ်မှတ်ရန် ဖွင့်ကြည့်ပါ</translation> <translation id="1420834118113404499">မီဒီယာလိုင်စင်များ</translation> <translation id="1420920093772172268">တွဲချိတ်ခြင်းအား ခွင့်ပြုရန် <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> <translation id="1422159345171879700">မလုံခြုံသည့် Script များကို ဖွင့်ရန်</translation> @@ -518,7 +518,7 @@ <translation id="1562119309884184621">ဤအဆက်အသွယ်ကို ထည့်ပါက နောက်တစ်ကြိမ် သူမျှဝေသည့်အခါ မှတ်မိပါမည်</translation> <translation id="1563702743503072935">လက်မှတ်ထိုးဝင်ထားသည့်အခါ သင်၏ Google Account မှ စကားဝှက်များကိုလည်း ဤစက်တွင် အသုံးပြုနိုင်မည်</translation> <translation id="1566049601598938765">ဝဘ်ဆိုက်</translation> -<translation id="15662109988763471">ရွေးထားသည့် ပုံနှိပ်စက်ကို အသုံးပြု၍မရပါ (သို့) မှန်ကန်စွာ ထည့်သွင်းမထားပါ။ သင်၏ ပုံနှိပ်စက်ကို စစ်ဆေးပါ (သို့) နောက်တစ်ခုကို ရွေးကြည့်ပါ။</translation> +<translation id="15662109988763471">ရွေးထားသည့် ပရင်တာကို အသုံးပြု၍မရပါ (သို့) မှန်ကန်စွာ ထည့်သွင်းမထားပါ။ သင်၏ ပရင်တာကို စစ်ဆေးပါ (သို့) နောက်တစ်ခုကို ရွေးကြည့်ပါ။</translation> <translation id="1567135437923613642">အထူးဖော်ပြထားသော စမ်းသပ်မှုများ ဖွင့်ရန်</translation> <translation id="1567387640189251553">သင်၏ စကားဝှက်ကို နောက်ဆုံးထည့်သွင်းခဲ့သည့် အချိန်နောက်ပိုင်းတွင် မတူညီသည့်ကီးဘုတ်တစ်ခုကို ချိတ်ဆက်ထားသည်။ ၎င်းသည် သင်၏ ခလုတ်နှိပ်ချက်များကို ခိုးယူရန် ကြိုးစားနိုင်သည်။</translation> <translation id="1567993339577891801">JavaScript ခလုတ်ခုံ</translation> @@ -556,7 +556,7 @@ <translation id="1601560923496285236">ကျင့်သုံးရန်</translation> <translation id="1602085790802918092">ပကတိအသွင်စက်ကို စတင်နေသည်</translation> <translation id="1603914832182249871">(ရုပ်ဖျက်)</translation> -<translation id="1604432177629086300">ပုံနှိပ်ထုတ်၍ မရပါ။ ပုံနှိပ်စက်ကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> +<translation id="1604432177629086300">ပုံနှိပ်ထုတ်၍ မရပါ။ ပရင်တာကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="1605544918554600534"><ph name="PROFILE_NAME" />- စကားဝှက်စင့်ခ်လုပ်ခြင်းကို အသုံးပြု၍မရပါ</translation> <translation id="1607139524282324606">ထည့်သွင်းမှု ဖယ်ရှားရန်</translation> <translation id="1608626060424371292">ဒီအသုံးပြုသူကို ဖယ်ရှားရန်</translation> @@ -645,7 +645,7 @@ <translation id="168715261339224929">သင်၏ဝဘ်လိပ်စာများကို သင့်စက်များအားလုံးတွင် ရယူနိုင်ရန် စင့်ခ်လုပ်ခြင်းကို ဖွင့်ပါ။</translation> <translation id="1688867105868176567">ဝဘ်ဆိုက်ဒေတာများကို ရှင်းလင်းလိုပါသလား။</translation> <translation id="1688935057616748272">စာလုံးတစ်လုံး ရိုက်ရန်</translation> -<translation id="168991973552362966">အနီးတဝိုက်ရှိ ပုံနှိပ်စက်ကို ထည့်ရန်</translation> +<translation id="168991973552362966">အနီးတဝိုက်ရှိ ပရင်တာကို ထည့်ရန်</translation> <translation id="1689945336726856614">&URL ကို မိတ္တူကူးခြင်း</translation> <translation id="1690248886740053041">မိုဘိုင်းကွန်ရက်သို့ ချိတ်ဆက်၍မရပါ။ နည်းပညာအကူအညီအတွက် သင့်ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။</translation> <translation id="1692115862433274081">အခြားအကောင့်ကို သုံးရန်</translation> @@ -1102,7 +1102,7 @@ <translation id="2173801458090845390">ဤစက်ပစ္စည်းသို့ လိုအပ်ချက် ID ကို ထည့်ရန်</translation> <translation id="2174948148799307353">အကောင့်ကို <ph name="PARENT_EMAIL" /> က စီမံပါသည်။ ဤစက်ရှိ ပင်မအကောင့်မှထွက်ရန် ဖန်သားပြင်ပေါ်ရှိ အချိန်ကို နှိပ်ပါ။ ပေါ်လာသည့် မီနူးတွင် "ထွက်ရန်" ကို နှိပ်ပါ။</translation> <translation id="2175607476662778685">အမြန် ဖွင့်တင်ရေး ဘား</translation> -<translation id="217576141146192373">ပုံနှိပ်စက်ကို ထည့်၍မရပါ။ သင့်ပုံနှိပ်စက်၏ စီစဉ်သတ်မှတ်မှုကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> +<translation id="217576141146192373">ပရင်တာကို ထည့်၍မရပါ။ သင့်ပရင်တာ၏ စီစဉ်သတ်မှတ်မှုကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="2177950615300672361">Incognito တဲပ်: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA သံသယဖြစ်ခံခဲ့ရ</translation> <translation id="2182058453334755893">'သင့်ကလစ်ဘုတ်' သို့ မိတ္တူကူးထားသည်</translation> @@ -1323,7 +1323,7 @@ <translation id="2433452467737464329">URL ထဲမှာ မေးမြန်းမှု ဘောင် တစ်ခုကို ထည့်ပေးလျက် ဆန်းသစ်ပေးရမည့် စာမျက်နှာမှာ: chrome://network/?refresh=<sec></translation> <translation id="2433507940547922241">ပုံပန်း</translation> <translation id="2433836460518180625">စက်ပစ္စည်းကိုသာ လော့ခ်ဖွင့်ရန်</translation> -<translation id="2434449159125086437">ပုံနှိပ်စက်ကို စနစ်ထည့်သွင်း၍မရပါ။ စီစဉ်သတ်မှတ်ချက်ကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> +<translation id="2434449159125086437">ပရင်တာကို စနစ်ထည့်သွင်း၍မရပါ။ စီစဉ်သတ်မှတ်ချက်ကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="2434758125294431199">သင့်အားမျှဝေနိုင်သူကို ရွေးပါ</translation> <translation id="2435248616906486374">ကွန်ရက် ချိတ်ဆက်မှုပျက်တောက်</translation> <translation id="2435457462613246316">စကားဝှက်ကို ပြပါ</translation> @@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">ရင်း&မြစ်ကို ကြည့်ရန်</translation> <translation id="244231003699905658">လိပ်စာ မမှန်ကန်ပါ။ လိပ်စာကို ပြန်စစ်ပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="2442916515643169563">စာသားအရိပ်</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">တိုးချဲ့ ရင်းမြစ် ဒါရိုက်ထရီ လိုအပ်သည်။</translation> <translation id="2445484935443597917">ပရိုဖိုင်အသစ် ပြုလုပ်ရန်</translation> <translation id="2448312741937722512">ပုံစံ</translation> @@ -1359,7 +1358,7 @@ <translation id="2468205691404969808">အဆိုပါ စာမျက်နှာများကို သင်ဝင်ကြည့်မထားလျှင်ပင် သင့်ဦးစားပေးများကို မှတ်မိရန် ကွတ်ကီးများ အသုံးပြုသည်</translation> <translation id="2468402215065996499">Tamagotchi</translation> <translation id="2468845464436879514">{NUM_TABS,plural, =1{<ph name="GROUP_TITLE" /> - တဘ် 1 ခု}other{<ph name="GROUP_TITLE" /> - တဘ် # ခု}}</translation> -<translation id="2469259292033957819">သင်သိမ်းဆည်းထားသည့် ပုံနှိပ်စက် တစ်ခုမျှ မရှိပါ။</translation> +<translation id="2469259292033957819">သင်သိမ်းဆည်းထားသည့် ပရင်တာ တစ်ခုမျှ မရှိပါ။</translation> <translation id="2469375675106140201">စာလုံးပေါင်းစစ်ဆေးခြင်း စိတ်ကြိုက်လုပ်ရန်</translation> <translation id="247051149076336810">ဖိုင်မျှဝေမှု URL</translation> <translation id="2470702053775288986">မပံ့ပိုးသည့် တိုးချဲ့မှုများကို ပိတ်ထား</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">ကူးထည့်၍ သွား</translation> <translation id="2766161002040448006">မိဘ ခွင့်တောင်းရန်</translation> <translation id="2767127727915954024">ဤဝဘ်ဆိုက်အတွက် တဘ်များအားလုံးကို မပိတ်မချင်း <ph name="ORIGIN" /> သည် <ph name="FILENAME" /> ကို တည်းဖြတ်နိုင်ပါမည်</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> သုံး၍ ၐင်ပါ။</translation> <translation id="2770465223704140727">စာရင်းထဲမှ ဖယ်ပစ်ရန်</translation> <translation id="2770690685823456775">သင့်စကားဝှက်များကို အခြားအကန့်သို့ တင်ပို့ပါ</translation> <translation id="2770929488047004208">မော်နီတာ ပုံရိပ်ပြတ်သားကိန်း</translation> @@ -1898,7 +1896,7 @@ <translation id="3036327949511794916">ဤ <ph name="DEVICE_TYPE" /> ကိုပြန်ပို့ရန် နောက်ဆုံးသတ်မှတ်ရက် ကျော်သွားပါပြီ။</translation> <translation id="3036546437875325427">ဖလက်ရှ်မီးကို ဖွင့်ရန်</translation> <translation id="3037754279345160234">ဒိုမိန်းသို့ ချိတ်ဆက်ခြင်း စီစဉ်သတ်မှတ်မှုကို ခွဲခြမ်းစိတ်ဖြာ၍ မရပါ။ သင်၏ စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။</translation> -<translation id="3038612606416062604">ပုံနှိပ်စက်ကို မိမိကိုယ်တိုင် ထည့်ရန်</translation> +<translation id="3038612606416062604">ပရင်တာကို မိမိကိုယ်တိုင် ထည့်ရန်</translation> <translation id="3039491566278747710">စက်ပစ္စည်းပေါ်တွင် အော့ဖ်လိုင်းမူဝါဒကို ထည့်သွင်း၍မရပါ။</translation> <translation id="3043581297103810752"><ph name="ORIGIN" /> မှ</translation> <translation id="3045447014237878114">ဤဝဘ်ဆိုက်သည် ဖိုင်အမြောက်အများကို အလိုအလျောက် ဒေါင်းလုဒ်လုပ်ထားသည်</translation> @@ -2029,7 +2027,7 @@ <translation id="3208321278970793882">အက်ပ်</translation> <translation id="3208584281581115441">ယခု စစ်ကြည့်ရန်</translation> <translation id="3208703785962634733">အတည်မပြုသေး</translation> -<translation id="32101887417650595">ပုံနှိပ်စက်သို့ ချိတ်ဆက်၍မရပါ</translation> +<translation id="32101887417650595">ပရင်တာသို့ ချိတ်ဆက်၍မရပါ</translation> <translation id="321084946921799184">အဝါနှင့် အဖြူ</translation> <translation id="321356136776075234">စက်ပစ္စည်း OU (ဥပမာ OU=Chromebooks၊DC=example၊DC=com)</translation> <translation id="3216825226035747725">'ပညာရေးအတွက် G Suite' အကောင့်သို့ လက်မှတ်ထိုးဝင်ထားစဉ် အသုံးပြုသူ ဝင်ကြည့်နိုင်သော ဝန်ဆောင်မှုများကို 'ပညာရေးအတွက် G Suite' စီမံခန့်ခွဲသူများက ဆုံးဖြတ်ပေးသည်။ ၎င်းတွင် ဤကြီးကြပ်ထားသောအကောင့် သုံးပြီး သင်၏ကလေး ယခင်က အသုံးပြုခွင့်မရခဲ့သော လုပ်ဆောင်ချက်နှင့် ဝန်ဆောင်မှုအချို့ ပါဝင်နိုင်သည်။ အသက်မပြည့်သေးသူများ ဝန်ဆောင်မှုအသုံးပြုရန်အတွက် ကျောင်း၏စီမံခန့်ခွဲသူများက သဘောတူညီချက် ပေးရန် (သို့) ရယူရန် လိုအပ်သည်။</translation> @@ -2484,7 +2482,7 @@ <translation id="3708684582558000260">ဒေတာပို့ခြင်း (သို့) လက်ခံခြင်း အပြီးသတ်ရန် ပိတ်ထားသောဝဘ်ဆိုက်များကို ခွင့်မပြုပါနှင့်</translation> <translation id="3709244229496787112">ဘရောင်ဇာကို ဒေါင်းလုဒ် မပြီးဆုံးမီတွင် ပိတ်ပစ်ခဲ့သည်။</translation> <translation id="3711931198657368127">ကူးထည့်ပြီး <ph name="URL" /> သို့ သွားပါ</translation> -<translation id="3711945201266135623">ပုံနှိပ်စက်ဆာဗာတွင် ပုံနှိပ်စက် <ph name="NUM_PRINTERS" /> ခု တွေ့သည်</translation> +<translation id="3711945201266135623">ပရင်တာဆာဗာတွင် ပရင်တာ <ph name="NUM_PRINTERS" /> ခု တွေ့သည်</translation> <translation id="3712050472459130149">အကောင့် အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်</translation> <translation id="3712217561553024354">ဤစက်ပစ္စည်းအား မိုဘိုင်းဒေတာချိတ်ဆက်ထားသည့် သင့် Google အကောင့်ကိုသုံး၍ အခြားစက်ပစ္စည်းများကို ရှာဖွေခွင့်ပြုရန်</translation> <translation id="3712897371525859903">စာမျက်နှာကို &အဖြစ် သိမ်းရန်...</translation> @@ -2797,7 +2795,7 @@ <translation id="4031527940632463547">အာရုံခံကိရိယာကို ပိတ်ထားသည်</translation> <translation id="4033471457476425443">ဖိုင်တွဲအသစ် ထည့်ရန်</translation> <translation id="4033963223187371752">လုံခြုံသောဝဘ်ဆိုက်များသည် ဘေးကင်းမှုမရှိသော ပုံများ (သို့) ဝဘ်ဖရိမ်များကဲ့သို့ အကြောင်းအရာများကို မြှုပ်သွင်းထားနိုင်သည်</translation> -<translation id="4034824040120875894">ပုံနှိပ်စက်</translation> +<translation id="4034824040120875894">ပရင်တာ</translation> <translation id="4035758313003622889">အလုပ် မန်နေဂျာ</translation> <translation id="4036778507053569103">ဆာဗာမှနေ၍ ဒေါင်းလုဒ်လုပ်ထားသည့် မူဝါဒသည် မမှန်ကန်ပါ။</translation> <translation id="4037084878352560732">မြင်း</translation> @@ -2896,7 +2894,7 @@ <translation id="4138267921960073861">လက်မှတ်ထိုးဝင် မျက်နှာပြင်မှာ အသုံးပြုသူ အမည်များနှင့် ဓါတ်ပုံများကို ပြရန်</translation> <translation id="413915106327509564"><ph name="WINDOW_TITLE" /> - HID စက်ကို ချိတ်ဆက်ထားသည်</translation> <translation id="4142052906269098341">သင်၏ <ph name="DEVICE_TYPE" /> ကို သင့်ဖုန်းဖြင့် လော့ခ်ဖွင့်နိုင်သည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> -<translation id="4142518881503042940">တွေ့ရှိသည့် ပုံနှိပ်စက်များကို သင့်ပရိုဖိုင်သို့ သိမ်းပါ သို့မဟုတ် အသစ်တစ်ခု ထည့်ပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> +<translation id="4142518881503042940">တွေ့ရှိသည့် ပရင်တာများကို သင့်ပရိုဖိုင်သို့ သိမ်းပါ သို့မဟုတ် အသစ်တစ်ခု ထည့်ပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> <translation id="4144218403971135344">အရည်အသွေးပိုကောင်းသော ဗီဒီယိုကို ရယူပြီး ဘက်ထရီသက်တမ်း ချွေတာပါ။ ဗီဒီယိုကို ကာ့စ်ဖွင့်ထားသော မျက်နှာပြင်တွင်သာ ဖွင့်ပါမည်။</translation> <translation id="4146026355784316281">အမြဲတမ်း စနစ် ကြည့်ရှုသူဖြင့် ဖွင့်ပါ</translation> <translation id="4146785383423576110">ပြင်ဆင်သတ်မှတ်ပြီး ရှင်းလင်းခြင်း</translation> @@ -2933,7 +2931,7 @@ <translation id="4208390505124702064"><ph name="SITE_NAME" /> ကိုရှာပါ</translation> <translation id="4209092469652827314">ကြီးမား</translation> <translation id="4209251085232852247">ပိတ်ထားသည်</translation> -<translation id="4209464433672152343">မှတ်တမ်းမှတ်ရာများ ပုံနှိပ်ထုတ်ရန်အတွက် ပြင်ဆင်ရန် <ph name="BEGIN_LINK_HELP" />Google သို့ ပို့လိုက်သည်<ph name="END_LINK_HELP" />။ <ph name="BEGIN_LINK_DASHBOARD" />Google Cloud Print ဒက်ရှ်ဘုတ်<ph name="END_LINK_DASHBOARD" /> တွင် သင့်ပုံနှိပ်စက်များနှင့် ပုံနှိပ်ထုတ်ဝေမှု မှတ်တမ်းကို ကြည့်ရှုခြင်း၊ တည်းဖြတ်ခြင်းနှင့် စီမံခန့်ခွဲခြင်းတို့ ပြုလုပ်ပါ။</translation> +<translation id="4209464433672152343">မှတ်တမ်းမှတ်ရာများ ပုံနှိပ်ထုတ်ရန်အတွက် ပြင်ဆင်ရန် <ph name="BEGIN_LINK_HELP" />Google သို့ ပို့လိုက်သည်<ph name="END_LINK_HELP" />။ <ph name="BEGIN_LINK_DASHBOARD" />Google Cloud Print ဒက်ရှ်ဘုတ်<ph name="END_LINK_DASHBOARD" /> တွင် သင့်ပရင်တာများနှင့် ပုံနှိပ်ထုတ်ဝေမှု မှတ်တမ်းကို ကြည့်ရှုခြင်း၊ တည်းဖြတ်ခြင်းနှင့် စီမံခန့်ခွဲခြင်းတို့ ပြုလုပ်ပါ။</translation> <translation id="4210048056321123003">ပကတိအသွင် စက်စနစ်ကို ဒေါင်းလုဒ်လုပ်နေသည်</translation> <translation id="421182450098841253">&စာညှပ် ဘားကို ပြရန်</translation> <translation id="4211851069413100178">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ အမှားရှာဖွေမှု၊ စက်ပစ္စည်းနှင့်အက်ပ် အသုံးပြုမှုဒေတာများကို Google သို့ အလိုအလျောက်ပို့၍ Android အသုံးပြုမှု ပိုမိုကောင်းမွန်လာစေရန် ကူညီပါ။ ၎င်းက စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် ပံ့ပိုးပေးပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ ဤ <ph name="BEGIN_LINK1" />ဆက်တင်<ph name="END_LINK1" /> ကို ပိုင်ရှင်ဖြစ်သူက သတ်မှတ်ထားခြင်းဖြစ်သည်။ ပိုင်ရှင်သည် ဤစက်ပစ္စည်းအတွက် ပြဿနာအဖြေရှာခြင်းနှင့် အသုံးပြုမှုဒေတာများကို Google သို့ ပို့ရန် ရွေးချယ်နိုင်ပါသည်။ သင်၏ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သင့် Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK2" />ပိုမိုလေ့လာရန်<ph name="END_LINK2" /></translation> @@ -2952,7 +2950,7 @@ <translation id="4242145785130247982">ကလိုင်းယင့် အသိအမှတ်ပြုလက်မှတ် အများအပြားကို ပံ့ပိုးမပေးပါ</translation> <translation id="4242533952199664413">ဆက်တင်များကို ဖွင့်ရန်</translation> <translation id="4242577469625748426">စက်ပစ္စည်းပေါ်တွင် ပေါ်လစီကြိုတင်ချိန်ညှိချက်များ ထည့်သွင်းခြင်း မအောင်မြင်ပါ: <ph name="VALIDATION_ERROR" />။</translation> -<translation id="4243504193894350135">ပုံနှိပ်စက်ကို ခဏရပ်ထားသည်</translation> +<translation id="4243504193894350135">ပရင်တာကို ခဏရပ်ထားသည်</translation> <translation id="4244238649050961491">နောက်ထပ် စတိုင်လပ်စ်အက်ပ်များကို ရှာဖွေရန်</translation> <translation id="424726838611654458">အမြဲတမ်း Adobe Reader ထဲမှာ ဖွင့်ရန်</translation> <translation id="4247901771970415646"><ph name="USERNAME" /> သို့ စင့်ခ်လုပ်၍မရပါ</translation> @@ -3367,7 +3365,7 @@ <translation id="4691791363716065510">ဤဝဘ်ဆိုက်အတွက် တဘ်များအားလုံးကို မပိတ်မချင်း <ph name="ORIGIN" /> သည် <ph name="FILENAME" /> ကို ကြည့်နိုင်ပါမည်</translation> <translation id="4692623383562244444">ရှာဖွေမှု အင်ဂျင်</translation> <translation id="4693155481716051732">ဆူရှီ</translation> -<translation id="4694024090038830733">ပုံနှိပ်စက် စီစဉ်သတ်မှတ်မှုကို စီမံခန့်ခွဲသူက ကြီးကြပ်သည်။</translation> +<translation id="4694024090038830733">ပရင်တာ စီစဉ်သတ်မှတ်မှုကို စီမံခန့်ခွဲသူက ကြီးကြပ်သည်။</translation> <translation id="4694604912444486114">မျောက်</translation> <translation id="4697071790493980729">ရှာမတွေ့ပါ</translation> <translation id="4697551882387947560">ကြည့်ရှုရေး ချိတ်ဆက်မှု ပြီးဆုံးသွားသည့် အခါမှာ</translation> @@ -3464,7 +3462,7 @@ <translation id="4830121310592638841">သင့်ဖန်သားပြင်များတွင် ဝဘ်ဆိုက်က ဝင်းဒိုးများ ဖွင့်ပြီး နေရာချထားလိုသည့်အခါ ခွင့်တောင်းရန်</translation> <translation id="4830502475412647084">OS အပ်ဒိတ်ကို ထည့်သွင်းနေသည်</translation> <translation id="4830573902900904548">သင့် <ph name="DEVICE_TYPE" /> သည် <ph name="NETWORK_NAME" /> ကိုအသုံးပြုပြီ: အင်တာနက်သို့ ချိတ်ဆက်၍မရနိုင်ပါ။ ကျေးဇူးပြု၍ အခြားကွန်ရက်ကို ရွေးချယ်ပါ။ <ph name="LEARN_MORE_LINK_START" />ပိုမိုလေ့လာရန်<ph name="LEARN_MORE_LINK_END" /></translation> -<translation id="4833683849865011483">ပုံနှိပ်စက်ဆာဗာမှ ပုံနှိပ်စက် ၁ ခုတွေ့သည်</translation> +<translation id="4833683849865011483">ပရင်တာဆာဗာမှ ပရင်တာ ၁ ခုတွေ့သည်</translation> <translation id="4836046166855586901">ဤကိရိယာသုံးနေချိန်ကို ဝဘ်ဆိုက်ကသိလိုသည့်အခါ ခွင့်တောင်းရန်</translation> <translation id="4836504898754963407">လက်ဗွေရာများ စီမံရန်</translation> <translation id="4837128290434901661">Google Search သို့ ပြန်ပြောင်းမလား။</translation> @@ -3522,7 +3520,7 @@ <translation id="4884987973312178454">၆ ဆ</translation> <translation id="4887424188275796356">စနစ် ကြည့်ရှုမှုဖြင့် ဖွင့်ရန်</translation> <translation id="488785315393301722">အသေးစိတ်များကို ပြရန်</translation> -<translation id="4890773143211625964">ပုံနှိပ်စက်ဆိုင်ရာ အသေးစိတ် ရွေးစရာများကို ပြရန်</translation> +<translation id="4890773143211625964">ပရင်တာဆိုင်ရာ အသေးစိတ် ရွေးစရာများကို ပြရန်</translation> <translation id="4891089016822695758">စမ်းသပ်ဆော့ဖ်ဝဲဖိုရမ်</translation> <translation id="4892229439761351791">ဝဘ်ဆိုက်က ဘလူးတုသ်ကို အသုံးပြုနိုင်သည်</translation> <translation id="489258173289528622">ဘက်ထရီဖြင့်ဖွင့်ထားစဉ် လုပ်ဆောင်ချက်ကို ဆိုင်းငံ့ထားပါ</translation> @@ -3569,7 +3567,7 @@ <translation id="4936042273057045735">အလုပ်ပရိုဖိုင်တွင် အကြောင်းကြားချက်စင့်ခ်လုပ်ခြင်းကို ဖုန်းများအတွက် ပံ့ပိုးမထားပါ</translation> <translation id="4938788218358929252">ဤချက်ပြုတ်နည်း စိတ်ကူးများ</translation> <translation id="4939805055470675027"><ph name="CARRIER_NAME" /> သို့ ချိတ်ဆက်၍ မရပါ</translation> -<translation id="4940364377601827259">သိမ်းဆည်းရန် ပုံနှိပ်စက် <ph name="PRINTER_COUNT" /> ခု ရှိသည်။</translation> +<translation id="4940364377601827259">သိမ်းဆည်းရန် ပရင်တာ <ph name="PRINTER_COUNT" /> ခု ရှိသည်။</translation> <translation id="4940448324259979830">ဤအကောင့်ကို <ph name="PROFILE_NAME" /> က စီမံခန့်ခွဲသည်</translation> <translation id="4940845626435830013">ဒစ်ခ်အရွယ်အစား ဖယ်ထားရန်</translation> <translation id="4941074198479265146">သီချင်းဖန်တီးခြင်းနှင့် တည်းဖြတ်ခြင်း ဝန်ဆောင်မှုများအတွက် MIDI ကိရိယာများသို့ ဝဘ်ဆိုက်များက ချိတ်ဆက်လေ့ရှိသည်</translation> @@ -3593,7 +3591,7 @@ <translation id="496888482094675990">ဖိုင်များ အက်ပ်သည် သင်က Google ဒရိုက်ဗ်၊ ပြင်ပ သိုလှောင်ခန်း၊ သို့မဟုတ် သင်၏ Chrome OS ကိရိယာမှာ သိမ်းဆည်းထားသည့် ဖိုင်များကို လျင်မြန်စွာ ရယူသုံးခွင့် စီမံပေးသည်။</translation> <translation id="4971412780836297815">လုပ်ပြီးလျှင် ဖွင့်ပါ</translation> <translation id="4971735654804503942">အန္တရာယ်ရှိသည့် ဝဘ်ဆိုက်၊ ဒေါင်းလုဒ်နှင့် နောက်ဆက်တွဲများအတွက် ပိုမိုမြန်ဆန်ပြီး အမြဲမပြတ် ကာကွယ်မှုပေးပါသည်။ စကားဝှက်ပေါက်ကြားမှုများအကြောင်း သင့်အား သတိပေးပါသည်။ ကြည့်ရှုခြင်းဒေတာများကို Google သို့ ပို့ရန် လိုအပ်သည်။</translation> -<translation id="4972129977812092092">ပုံနှိပ်စက်ကို တည်းဖြတ်ရန်</translation> +<translation id="4972129977812092092">ပရင်တာကို တည်းဖြတ်ရန်</translation> <translation id="4972164225939028131">စကားဝှက် မှားနေသည်</translation> <translation id="4972737347717125191">ဝဘ်ဆိုက်များက ပကတိအသွင်စက်နှင့် ဒေတာများ အသုံးပြုလိုပါက ခွင့်တောင်းနိုင်သည်</translation> <translation id="4973307593867026061">ပရင်တာများကို ထည့်ပေးရန်</translation> @@ -3644,7 +3642,7 @@ <translation id="5039696241953571917">သင်၏ Google Account တွင် သိမ်းထားသော စကားဝှက်များကို ကြည့်ပြီးစီမံနိုင်သည်</translation> <translation id="5039804452771397117">ခွင့်ပြုရန်</translation> <translation id="5040823038948176460">နောက်ထပ် အကြောင်းအရာ ဆက်တင်များ</translation> -<translation id="5043913660911154449">သို့မဟုတ် သင့်ပုံနှိပ်စက် PPD ကို သတ်မှတ်ပါ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> +<translation id="5043913660911154449">သို့မဟုတ် သင့်ပရင်တာ PPD ကို သတ်မှတ်ပါ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> <translation id="5045550434625856497">စကားဝှက် မမှန်ပါ</translation> <translation id="504561833207953641">လက်ရှိ ဘရောင်ဇာစက်ရှင်တွင် ဖွင့်နေသည်</translation> <translation id="5047421709274785093">ဝဘ်ဆိုက်များကို လှုပ်ရှားမှုနှင့် အလင်းအာရုံခံကိရိယာများ အသုံးပြုခြင်းမှ ပိတ်ထားရန်</translation> @@ -3657,7 +3655,7 @@ <translation id="5057403786441168405">သင်လက်မှတ်ထိုးဝင်ထားသည့် အကောင့်များကို စီမံခန့်ခွဲပါ။ ခွင့်ပြုချက်များအပေါ် အခြေခံပြီး သင့်စိတ်ကြိုက်ပြင်ဆင် အသုံးပြုနိုင်ရန် Chrome နှင့် Google Play ရှိ ဝဘ်ဆိုက်၊ အက်ပ်၊ နောက်ဆက်တွဲများက ဤအကောင့်များကို အသုံးပြုနိုင်သည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> <translation id="5059241099014281248">လက်မှတ်ထိုးဝင်မှု ကန့်သတ်ရန်</translation> <translation id="5059526285558225588">မျှဝေလိုသည်များကို ရွေးပါ</translation> -<translation id="5060332552815861872">သိမ်းဆည်းရန် ပုံနှိပ်စက် ၁ ခုရှိသည်။</translation> +<translation id="5060332552815861872">သိမ်းဆည်းရန် ပရင်တာ ၁ ခုရှိသည်။</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{ဤဖိုင်တွဲတွင် ဝဘ်လိပ်စာ တစ်ခု ပါဝင်သည်။ ဖျက်လိုသည်မှာ သေချာပါသလား။}other{ဤဖိုင်တွဲတွင် ဝဘ်လိပ်စာ # ခု ပါဝင်သည်။ ဖျက်လိုသည်မှာ သေချာပါသလား။}}</translation> <translation id="5062930723426326933">လက်မှတ်ထိုး ဝင်မှု မအောင်မြင်ခဲ့ပါ၊ ကျေးဇူးပြုပြီး အင်တာနက်သို့ ဆက်ပြီး ထပ်စမ်းပါ။</translation> <translation id="5063480226653192405">အသုံးပြုပုံ</translation> @@ -4193,7 +4191,7 @@ <translation id="5648166631817621825">ပြီးခဲ့သည့် ၇ ရက်</translation> <translation id="5649053991847567735">အလိုအလျောက် ဒေါင်းလုပ်ရယူခြင်း</translation> <translation id="5651308944918885595">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ရှာဖွေတွေ့နိုင်မှု</translation> -<translation id="5653154844073528838">သင်သိမ်းဆည်းထားသည့် ပုံနှိပ်စက် <ph name="PRINTER_COUNT" /> ခု ရှိသည်။</translation> +<translation id="5653154844073528838">သင်သိမ်းဆည်းထားသည့် ပရင်တာ <ph name="PRINTER_COUNT" /> ခု ရှိသည်။</translation> <translation id="5656845498778518563">Google သို့ အကြံပြုချက် ပို့ရန်</translation> <translation id="5657156137487675418">ကွတ်ကီးများအားလုံးကို ခွင့်ပြုရန်</translation> <translation id="5657667036353380798">ဤ ပြင်ပတိုးချဲ့လိုင်းအတွက် chrome ဗားရှင်း <ph name="MINIMUM_CHROME_VERSION" /> သို့မဟုတ် ထို့ထက်ပိုမြင့်သော ဗားရှင်း တပ်ဆင်ထားရန်လိုအပ်သည်။</translation> @@ -4325,7 +4323,7 @@ <translation id="5812674658566766066">အားလုံးချဲ့ရန်</translation> <translation id="5814126672212206791">ချိတ်ဆက်မှု အမျိုးအစား</translation> <translation id="5815645614496570556">X.၄၀၀ လိပ်စာ</translation> -<translation id="5816434091619127343">ပုံနှိပ် အပြောင်းအလဲများပြုလုပ်ရန် တောင်းဆိုထားလျှင် ၎င်းကို အသုံးပြု၍ရမည် မဟုတ်ပါ။</translation> +<translation id="5816434091619127343">ပရင်တာ အပြောင်းအလဲများပြုလုပ်ရန် တောင်းဆိုထားလျှင် ၎င်းကို အသုံးပြု၍ရမည် မဟုတ်ပါ။</translation> <translation id="5817918615728894473">တွဲချိတ်ပါ</translation> <translation id="5821565227679781414">ဖြတ်လမ်း ဖန်တီးရန်</translation> <translation id="5825412242012995131">ဖွင့်ရန် (အကြံပြုထားသည်)</translation> @@ -4393,7 +4391,7 @@ <translation id="5895138241574237353">ပြန်စတင်မည</translation> <translation id="5900302528761731119">Google ပရိုဖိုင်ဓါတ်ပုံ</translation> <translation id="5901069264981746702">သင့်လက်ဗွေဒေတာကို သင်၏ <ph name="DEVICE_TYPE" /> တွင်သာ လုံခြုံစွာ သိမ်းထားသည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> -<translation id="5901494423252125310">ပုံနှိပ်စက်တံခါး ပွင့်နေခြင်း</translation> +<translation id="5901494423252125310">ပရင်တာတံခါး ပွင့်နေခြင်း</translation> <translation id="5901630391730855834">အၐါရောင်</translation> <translation id="5904614460720589786">စီစဉ်သတ်မှတ်မှု ပြဿနာကြောင့် <ph name="APP_NAME" /> ကို စနစ်ထည့်သွင်း၍မရပါ။ သင့်စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။ အမှားကုဒ်- <ph name="ERROR_CODE" />။</translation> <translation id="5906655207909574370">အပ်ဒိတ်ပြီးရန် အနည်းငယ်သာလိုပါသည်။ အပ်ဒိတ်လုပ်ခြင်းကို အဆုံးသတ်ရန် သင့်စက်ပစ္စည်းကို ပြန်ဖွင့်ပါ။</translation> @@ -4581,7 +4579,7 @@ <translation id="6103681770816982672">သတိပေးချက်: သင်သည် ပြုစုသူ ချာနယ်သို့ ခလုတ် ပြောင်းနေ</translation> <translation id="6104068876731806426">Google Accounts</translation> <translation id="6104311680260824317">စက်ပစ္စည်းကို ဒိုမိန်းသို့ ချိတ်ဆက်၍မရပါ။ ဆာဗာသည် သတ်မှတ်ထားသည့် Kerberos အသွင်ဝှက်ခြင်း အမျိုးအစားများကို ပံ့ပိုးမထားပါ။ အသွင်ဝှက်ခြင်း ဆက်တင်များအတွက် "နောက်ထပ် ရွေးချယ်စရာများ" တွင် ကြည့်ပါ။</translation> -<translation id="6104796831253957966">ပုံနှိပ်စက် စာရင်းစဉ် ပြည့်နေသည်</translation> +<translation id="6104796831253957966">ပရင်တာ စာရင်းစဉ် ပြည့်နေသည်</translation> <translation id="6105994589138235234">Chrome ဘရောင်ဇာ စင့်ခ်လုပ်ခြင်း</translation> <translation id="6111972606040028426">Google Assistant ဖွင့်ရန်</translation> <translation id="6112294629795967147">အရွယ်အစားပြင်ရန် ထိပါ</translation> @@ -4754,7 +4752,7 @@ <translation id="6298962879096096191">Android အက်ပ်များကို ထည့်သွင်းရန် Google Play ကို အသုံးပြုပါ</translation> <translation id="6300177430812514606">ဒေတာပို့ခြင်း (သို့) လက်ခံခြင်းတို့ကို အပြီးသတ်ရန် ခွင့်ပြုမထားပါ</translation> <translation id="630065524203833229">ထွက်</translation> -<translation id="6300718114348072351"><ph name="PRINTER_NAME" /> ကို အလိုအလျောက် စီစဉ်သတ်မှတ်၍မရပါ။ ပုံနှိပ်စက်ဆိုင်ရာ အဆင့်မြင့် အသေးစိတ်အချက်များကို သတ်မှတ်ပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> +<translation id="6300718114348072351"><ph name="PRINTER_NAME" /> ကို အလိုအလျောက် စီစဉ်သတ်မှတ်၍မရပါ။ ပရင်တာဆိုင်ရာ အဆင့်မြင့် အသေးစိတ်အချက်များကို သတ်မှတ်ပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> <translation id="630292539633944562">ကိုယ်ရေးကိုယ်တာအချက်အလက် အကြံပြုချက်များ</translation> <translation id="6305607932814307878">ကမ္ဘာသုံး မူဝါဒ−</translation> <translation id="6307990684951724544">စနစ် မအားပါ</translation> @@ -4776,7 +4774,7 @@ <translation id="6317608858038767920">စိတ်ကြိုက် အမည်ဆာဗာ <ph name="INPUT_INDEX" /></translation> <translation id="6318125393809743217">မူဝါဒ စီစဉ်သတ်မှတ်မှုများနှင့် policies.json ဖိုင် ပါဝင်သည်။</translation> <translation id="6318407754858604988">ဒေါင်းလုဒ် စလုပ်နေပါပြီ</translation> -<translation id="6318944945640833942">ပုံနှိပ်စက်ကို မတွေ့ပါ။ ပုံနှိပ်စက်၏ လိပ်စာကို ထပ်မံ၍ ထည့်သွင်းပါ။</translation> +<translation id="6318944945640833942">ပရင်တာကို မတွေ့ပါ။ ပရင်တာ၏ လိပ်စာကို ထပ်မံ၍ ထည့်သွင်းပါ။</translation> <translation id="6321407676395378991">ဖန်သားပြင်နားချိန် ဖွင့်ရန်</translation> <translation id="6322653941595359182">မိုဘိုင်းမက်ဆေ့ဂျ်များကို သင့် Chromebook မှ ပို့ပါ၊ လက်ခံရယူပါ</translation> <translation id="6324916366299863871">ဖြတ်လမ်းလင့်ခ်ကို တည်းဖြတ်ခြင်း</translation> @@ -4933,7 +4931,7 @@ <translation id="6503077044568424649">မကြာခဏ သွားကြည့်ရာ</translation> <translation id="650457560773015827">ဘယ်ခလုတ်</translation> <translation id="6504601948739128893">သင့်ကိရိယာတွင်ထည့်သွင်းထားသော ဖောင့်များသုံးရန် ခွင့်ပြုမထားပါ</translation> -<translation id="6504611359718185067">ပုံနှိပ်ထုတ်ယူစက်ကို ထည့်သွင်းရန် အင်တာနက်နှင့် ချိတ်ပါ</translation> +<translation id="6504611359718185067">ပရင်တာ ထည့်သွင်းရန် အင်တာနက်နှင့် ချိတ်ပါ</translation> <translation id="6506374932220792071">SHA-256 ဖြင့် X9.62 ECDSA လက်မှတ်</translation> <translation id="6508248480704296122"><ph name="NAME_PH" /> နှင့် ဆက်စပ်သည်</translation> <translation id="6508261954199872201">အက်ပ်: <ph name="APP_NAME" /></translation> @@ -5313,7 +5311,7 @@ <translation id="6930321203306643451">အဆင့်မြှင့်ခြင်း ပြီးပါပြီ</translation> <translation id="6935286146439255109">စာရွက်ဗန်း မရှိပါ</translation> <translation id="693807610556624488">"<ph name="DEVICE_NAME" />" သို့တည်းဖြတ်ခြင်းလုပ်ဆောင်ချက် ရည်ညွှန်းချက်၏ ရှည်လျားမှုအများဆုံးကို ကျော်လွန်သွားပါပြီ။</translation> -<translation id="6938386202199793006">သင်သိမ်းထားသည့် ပုံနှိပ်စက် ၁ ခုရှိသည်။</translation> +<translation id="6938386202199793006">သင်သိမ်းထားသည့် ပရင်တာ ၁ ခုရှိသည်။</translation> <translation id="6938606182859551396">သင့် <ph name="DEVICE_TYPE" /> တွင် သင်၏ဖုန်းမှ အကြောင်းကြားချက်များကို လက်ခံရန်အတွက် Google Play ဝန်ဆောင်မှုများတွင် အကြောင်းကြားချက်များ အသုံးပြုခွင့်ဖွင့်ရန် သင့်ဖုန်းရှိ လမ်းညွှန်ချက်များအတိုင်း လုပ်ဆောင်ပါ။</translation> <translation id="6938789263968032501">လူများ</translation> <translation id="6939815295902433669">စက်၏ဆော့ဖ်ဝဲကို ပြန်ကြည့်ရန်</translation> @@ -5539,7 +5537,7 @@ <translation id="7189234443051076392">သင့်စက်ပစ္စည်းပေါ်တွင် နေရာအလုံအလောက်ရှိမရှိ သေချာစစ်ဆေးပါ</translation> <translation id="7189451821249468368">ဤစက်ကို စာရင်းသွင်းရန် လုံလောက်သည့် အဆင့်မြှင့်တင်မှုများ မရှိပါ။ နောက်ထပ်ဝယ်ယူရန် ရောင်းချသူထံ ဆက်သွယ်ပါ။ ဤမက်ဆေ့ဂျ်ကို မှားယွင်း၍ မြင်ရခြင်းဖြစ်သည်ဟု ယူဆပါက အကူအညီရယူရန် ဆက်သွယ်ပါ။</translation> <translation id="7189965711416741966">လက်ဗွေကို ထည့်ပြီးပြီ။</translation> -<translation id="7191159667348037">အမျိုးအမည်မသိ ပုံနှိပ်စက် (USB)</translation> +<translation id="7191159667348037">အမျိုးအမည်မသိ ပရင်တာ (USB)</translation> <translation id="7193051357671784796">ဤအက်ပ်ကို သင့်အဖွဲ့အစည်းက ထည့်ထားပါသည်။ အက်ပ်စနစ်ထည့်သွင်းမှု အပြီးသတ်ရန် ၎င်းကိုပြန်စတင်ပါ။</translation> <translation id="7193374945610105795"><ph name="ORIGIN" /> အတွက် မည်သည့်စကားဝှက်မျှ သိမ်းမထားပါ</translation> <translation id="7196020411877309443">ကျွန်ုပ် ဒါကို မြင်နေရတာ ဘာကြောင့်လဲ?</translation> @@ -5641,7 +5639,7 @@ <translation id="7303281435234579599">ဝမ်းနည်းပါသည်။ သရုပ်ပြမုဒ်ကို စနစ်ထည့်သွင်းရာတွင် တစ်စုံတစ်ခု မှားယွင်းသွားသည်။</translation> <translation id="7303900363563182677">ဤဝဘ်ဆိုက်ကို ကလစ်ဘုတ်သို့ မိတ္တူကူးထားသည့် စာသားနှင့် ပုံများ ကြည့်ရှုခွင့် ပိတ်ထားသည်</translation> <translation id="7304030187361489308">မြင့်သော</translation> -<translation id="7305123176580523628">USB ပုံနှိပ်ထုတ်စက် ချိတ်ဆက်ပြီးပြီ</translation> +<translation id="7305123176580523628">USB ပရင်တာ ချိတ်ဆက်ပြီးပြီ</translation> <translation id="730515362922783851">ဒေသခံ ကွန်ရက် သို့မဟုတ် အင်တာနက်ပေါ်တွင် မည်သည့် စက်ကိရိယာနှင့် မဆို ဒေတာများ အလဲအလှယ်ပြုရန်</translation> <translation id="7306521477691455105"><ph name="USB_DEVICE_NAME" /> ကို <ph name="USB_VM_NAME" /> နှင့် ချိတ်ဆက်ရန် 'ဆက်တင်များ' ဖွင့်ပါ</translation> <translation id="7307129035224081534">ခေတ္တရပ်ထားသည်</translation> @@ -6284,7 +6282,7 @@ သင့်ဖိုင်များကို လုံခြုံသည့် နေရာတွင် ထားပါ။ သင့်အိတ်စတန်းရှင်း၏ ဗားရှင်းအသစ်ကို သင်ဖန်တီးရပါမည်။</translation> <translation id="8000066093800657092">ကွန်ရက် မရှိပါ</translation> -<translation id="8002274832045662704">ပုံနှိပ်စက် စီစဉ်သတ်မှတ်ချက် နောက်ထပ်ရွေးချယ်စရာများ</translation> +<translation id="8002274832045662704">ပရင်တာ စီစဉ်သတ်မှတ်ချက် နောက်ထပ်ရွေးချယ်စရာများ</translation> <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> ကို မရနိုင်တော့ပါ</translation> <translation id="8004582292198964060">ဘရောင်ဇာ</translation> <translation id="8005600846065423578"><ph name="HOST" /> အား ကလစ်ဘုတ်ကို အမြဲကြည့်ခွင့်ပြုရန်</translation> @@ -6347,7 +6345,7 @@ <translation id="8063535366119089408">ဖိုင်ကို ကြည့်ရန်</translation> <translation id="8064279191081105977">အုပ်စု <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">လက်မှတ်ထိုးဝင်ရန် ထိပါ</translation> -<translation id="8069615408251337349">Google မိုးတိမ် ပရင့်ထုတ်မှု</translation> +<translation id="8069615408251337349">Google Cloud ပရင့်ထုတ်မှု</translation> <translation id="8071432093239591881">ရုပ်ပုံအဖြစ် ပရင့်ထုတ်ရန်</translation> <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />အက်ပ်ဒေတာဟူသည်မှာ အဆက်အသွယ်၊ မက်ဆေ့ဂျ်နှင့် ဓာတ်ပုံများကဲ့သို့ ဒေတာများ အပါအဝင် (ဆော့ဖ်ဝဲ အင်ဂျင်နီယာ၏ ဆက်တင်များအပေါ် အခြေခံ၍) အက်ပ်တစ်ခုသိမ်းထားသော မည်သည့်ဒေတာမဆို ဖြစ်နိုင်သည်။<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />အရန်ဒေတာများက သင့်ကလေး၏ Drive သိုလှောင်ခန်းခွဲတမ်းကို အသုံးမပြုပါ။<ph name="END_PARAGRAPH2" /> @@ -6524,7 +6522,7 @@ <translation id="8264718194193514834">"<ph name="EXTENSION_NAME" />" စကရင်အပြည့် ခလုတ်နှိပ်။</translation> <translation id="826511437356419340">ဝင်းဒိုးအနှစ်ချုပ်မုဒ်သို့ ဝင်ထားသည်။ ရှေ့နောက်သွားရန် ပွတ်ဆွဲပါ သို့မဟုတ် လက်ကွက်အသုံးပြုနေပါက တဘ်ကိုနှိပ်ပါ။</translation> <translation id="8266947622852630193">လက်ကွက်များ အားလုံး</translation> -<translation id="8267539814046467575">ပုံနှိပ်စက် ထည့်ရန်</translation> +<translation id="8267539814046467575">ပရင်တာ ထည့်ရန်</translation> <translation id="8267961145111171918"><ph name="BEGIN_PARAGRAPH1" />၎င်းက သင့်စက်နှင့် ၎င်းကို သင်မည်သို့သုံးစွဲကြောင်း (ဘက်ထရီအား၊ စနစ်နှင့် အက်ပ်လုပ်ဆောင်ချက်နှင့် အမှားများ ကဲ့သို့) အထွေထွေ အချက်အလက်ဖြစ်ပါသည်။ ဤဒေတာများကို Android ပိုမိုကောင်းမွန်လာစေရန်အတွက် အသုံးပြုသွားမည်ဖြစ်ပြီး စုစည်းထားသည့်အချက်အလက်အချို့ကလည်း Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများအတွက် ၎င်းတို့၏ အက်ပ်နှင့် ထုတ်ကုန်များ ပိုမိုကောင်းမွန်လာစေရန် အထောက်အကူဖြစ်စေပါသည်။<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />ဤဝန်ဆောင်မှုကို ပိတ်လိုက်ခြင်းက စနစ်အပ်ဒိတ်များနှင့် လုံခြုံရေးတို့ကဲ့သို့ မရှိမဖြစ်ဝန်ဆောင်မှုများအတွက် လိုအပ်သော အချက်အလက်များကို ပေးပို့နိုင်သည့် စက်၏စွမ်းရည်အပေါ် သက်ရောက်မှုရှိမည် မဟုတ်ပါ။<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />၎င်းဝန်ဆောင်မှုကို ဆက်တင်များ > အဆင့်မြင့် > Google သို့ ချွတ်ယွင်းချက်နှင့် အသုံးပြုမှုဒေတာများ အလိုအလျောက် ပို့ခြင်းတွင် ပိုင်ရှင်က ထိန်းချုပ်နိုင်ပါသည်။<ph name="END_PARAGRAPH3" /> @@ -7323,7 +7321,7 @@ <translation id="91568222606626347">အလွယ်သုံး ဖန်တီးရန်</translation> <translation id="9157096865782046368">၀.၈ စက္ကန့်</translation> <translation id="9157697743260533322">အသုံးပြုသူများ အားလုံးအတွက် အလိုအလျောက်အပ်ဒိတ်များ စနစထည့်သွင်းမှု ပြုလုပ်ခြင်း မအောင်မြင်ပါ (လေယာဉ်မထွက်မီ စတင်ခြင်း ချွတ်ယွင်းချက် − <ph name="ERROR_NUMBER" />)</translation> -<translation id="9157915340203975005">ပုံနှိပ်စက်တံခါး ပွင့်နေသည်</translation> +<translation id="9157915340203975005">ပရင်တာတံခါး ပွင့်နေသည်</translation> <translation id="9158715103698450907">အူးပ်စ်! အထောက်အထားကို စိစစ်စဉ် ကွန်ရက် ဆက်သွယ်မှု ပြဿနာ တစ်ခု ကြုံခဲ့ရသည်။ ကျေးဇူးပြုပြီး သင်၏ ကွန်ရက် ချိတ်ဆက်မှုကို စစ်ကြည့်ပြီး ထပ်စမ်းပါ။</translation> <translation id="9159643062839240276">အောက်ပါတို့ကို စမ်းကြည့်ပါ- <ph name="BEGIN_LIST" />
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 67088c1..7d29a32e 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1632,7 +1632,6 @@ <translation id="2766006623206032690">टाँ&स्नुहोस् र जानुहोस्</translation> <translation id="2766161002040448006">अभिभावकलाई सोध्नुहोस्</translation> <translation id="2767127727915954024">तपाईंले यो साइटका सबै ट्याबहरू बन्द नगरुन्जेल <ph name="ORIGIN" /> ले <ph name="FILENAME" /> सम्पादन गर्न सक्ने छ</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> को रूपमा साइन इन गरिएको।</translation> <translation id="2770465223704140727">सूचीबाट हटाउनुहोस्</translation> <translation id="2770690685823456775">आफ्ना पासवर्डहरूलाई अर्को फोल्डरमा निर्यात गर्नुहोस्</translation> <translation id="2770929488047004208">मनिटरको रिजोल्युसन</translation> @@ -2389,6 +2388,7 @@ <translation id="3616741288025931835">&ब्राउजिङ लगत खालि गर्नुहोस्...</translation> <translation id="3617891479562106823">पृष्ठभूमिहरू उपलब्ध छैनन्। पछि फेरि प्रयास गर्नुहोस्।</translation> <translation id="3619115746895587757">कापाचिनो</translation> +<translation id="362266093274784978">{COUNT,plural, =1{एउटा एप}other{# वटा एप}}</translation> <translation id="362333465072914957">CA ले प्रमाणपत्र जारी गर्ने प्रतीक्षा गर्दै</translation> <translation id="3624567683873126087">यन्त्र अनलक गरी Google खातामा साइन इन गर्नुहोस्।</translation> <translation id="3625481642044239431">अमान्य फाइल चयन गरियो। फेरि प्रयास गर्नुहोस्।</translation> @@ -2660,6 +2660,7 @@ <translation id="3895076768659607631">&सर्च इन्जिनहरू व्यवस्थापन गर्नुहोस्...</translation> <translation id="3895090224522145010">Kerberos को युजरनेम</translation> <translation id="389521680295183045">साइटहरूले तपाईं आफ्नो यन्त्र चलाउँदै हुनुहुन्छ कि हुनुहुन्न भन्ने कुराको जानकारी माग्न सक्छन्</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{एउटा फोटो}other{# वटा फोटो}}</translation> <translation id="3898233949376129212">यन्त्रको भाषा</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> निम्न कुराहरू गर्न चाहन्छ: <ph name="FIRST_PERMISSION" /> र <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">किबोर्ड चयन गर्नुहोस्</translation> @@ -3572,6 +3573,7 @@ <translation id="4943368462779413526">फुटबल</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" कुनै क्रमिक पोर्टमा जडान गर्न चाहन्छ</translation> <translation id="4944310289250773232">यो प्रमाणीकरण सेवा <ph name="SAML_DOMAIN" /> ले होस्ट गरेको हो</translation> +<translation id="495164417696120157">{COUNT,plural, =1{एउटा फाइल}other{# वटा फाइल}}</translation> <translation id="495170559598752135">कार्यहरू</translation> <translation id="4953808748584563296">डिफल्ट सुन्तला रङ्गको अवतार</translation> <translation id="4955710816792587366">आफ्नो PIN छनौट गर्नुहोस्</translation> @@ -4638,6 +4640,7 @@ <translation id="6184099524311454384">ट्याब खोज्नुहोस्</translation> <translation id="6185132558746749656">यन्त्र स्थान</translation> <translation id="6186394437969115158">सामग्री वा सेवाहरू निःशुल्क रूपमा प्रदान गर्न सकियोस् भन्नाका खातिर साइटहरूले सामान्यतया विज्ञापनहरू देखाउँछन्। तर केही साइटहरूले हस्तक्षेपकारी वा भ्रामक विज्ञापनहरू देखाउन सक्छन्।</translation> +<translation id="6195005504600220730">तपाईंको ब्राउजर, OS र डिभाइससम्बन्धी जानकारी पढ्नुहोस्</translation> <translation id="6195693561221576702">यो डिभाइस अफलाइन डेमो मोडको प्रयोग गरी सेटअप गर्न सकिँदैन।</translation> <translation id="6195724942939841102">रिस्टोर नगरियोस्</translation> <translation id="6196640612572343990">तेस्रो पक्षीय कुकीहरूमाथि रोक लगाउनुहोस्</translation> @@ -5069,6 +5072,7 @@ <translation id="6664237456442406323">दुर्भाग्यवश, तपाइँको कम्प्युटर एक विकृत हार्डवेयर आइडीद्वारा विन्यास गरिएको छ। यसले Chrome OS लाई सबैभन्दा नयाँ सुरक्षा निर्धारणहरू अद्यावधिक गर्नबाट रोक्छ र तपाइँको कम्प्युटर <ph name="BEGIN_BOLD" />मालिसियस आक्रमणहरू देखि भेद्य हुन सक्छ<ph name="END_BOLD" />।</translation> <translation id="6664774537677393800">तपाईँको प्रोफाइल खोल्दा केही गडबड भयो। कृपया साइन आउट गर्नुहोस्, त्यसपछि फेरि साइन इन गर्नुहोस्।</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> अब उपलब्ध छ</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{एउटा ठेगाना}other{# वटा ठेगाना}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">सिंक गर्ने कार्य सुरु गर्न आफ्नो पासफ्रेज हाल्नुहोस्</translation> <translation id="6675665718701918026">निर्देशित गरिएको यन्त्र जडान गरियो</translation> @@ -5765,6 +5769,7 @@ <translation id="7456142309650173560">देव</translation> <translation id="7456847797759667638">खुला स्थान...</translation> <translation id="7457384018036134905">Chrome OS का सेटिङमा गई भाषाहरू व्यवस्थापन गर्नुहोस्</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{एउटा लिंक}other{# वटा लिंक}}</translation> <translation id="7458168200501453431">Google खोजमा प्रयोग हुने हिज्जे-जाँचकर्ता नै प्रयोग गर्छ। तपाईंले ब्राउजरमा टाइप गर्नुभएको पाठ Google लाई पठाइन्छ।</translation> <translation id="7460045493116006516">तपाईंले स्थापना गर्नुभएको हालको विषयवस्तु</translation> <translation id="7461924472993315131">पिन</translation> @@ -6165,6 +6170,7 @@ <translation id="7883792253546618164">जुनसुकै बेला सदस्यता रद्द गर्नुहोस्।</translation> <translation id="788453346724465748">खातासम्बन्धी जानकारी लोड गरिँदै छ...</translation> <translation id="7885253890047913815">हालैका गन्तव्यहरू</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{एउटा वस्तु}other{# वटा वस्तु}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">नक्कल बनाउनुहोस्</translation> <translation id="7887864092952184874">ब्लुटुथ माउस जोडा मिलाइएको</translation> @@ -6404,6 +6410,7 @@ <translation id="8139447493436036221">Google Drive मा भएका फाइलहरू</translation> <translation id="8141584439523427891">अहिले वैकल्पिक ब्राउजरमा खोल्दै</translation> <translation id="8141725884565838206">तपाइँका पासवर्डहरू व्यवस्थापित गर्नुहोस्</translation> +<translation id="814204052173971714">{COUNT,plural, =1{एउटा भिडियो}other{# वटा भिडियो}}</translation> <translation id="8143442547342702591">अमान्य एप</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> चयन गर्नुहोस्</translation> <translation id="8146177459103116374">यदि तपाईंले यो डिभाइसमा पहिले नै दर्ता गराउनुभएको छ भने, तपाईंले <ph name="LINK2_START" />एउटा विद्यमान प्रयोगकर्ताको रूपमा साइन इन<ph name="LINK2_END" /> गर्न सक्नुहुन्छ।</translation> @@ -6423,6 +6430,7 @@ <translation id="8161293209665121583">पाठक मोडमा वेब पृष्ठहरू पढ्ने सुविधा</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ट्याब सारेर नयाँ विन्डोमा लैजानुहोस्}other{ट्याबहरू सारेर नयाँ विन्डोमा लैजानुहोस्}}</translation> <translation id="8165997195302308593">Crostini मा पोर्ट फर्वार्ड गर्ने सुविधा</translation> +<translation id="816704878106051517">{COUNT,plural, =1{एउटा फोन नम्बर}other{# वटा फोन नम्बर}}</translation> <translation id="8168435359814927499">सामग्री</translation> <translation id="8168943654413034772">'चयन' गर्ने कार्यका निम्ति तोकिएको एक मात्र स्विच हटाउन मिल्दैन। बाहिर निस्कन कुनै पनि की थिच्नुहोस्।</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{पढ्ने सामग्रीको सूचीमा ट्याब हाल्नुहोस्}other{पढ्ने सामग्रीको सूचीमा ट्याबहरू हाल्नुहोस्}}</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 1d22b29..a3e9580 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Br&on bekijken</translation> <translation id="244231003699905658">Ongeldig adres. Controleer het adres en probeer het opnieuw.</translation> <translation id="2442916515643169563">Tekstschaduw</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Hoofddirectory van extensie is vereist.</translation> <translation id="2445484935443597917">Een nieuw profiel maken</translation> <translation id="2448312741937722512">Type</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">Pla&kken en gaan</translation> <translation id="2766161002040448006">Aan een ouder vragen</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> kan <ph name="FILENAME" /> bewerken totdat je alle tabbladen voor deze site sluit</translation> -<translation id="276969039800130567">Ingelogd als <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Verwijderen uit lijst</translation> <translation id="2770690685823456775">Exporteer je wachtwoorden naar een andere map</translation> <translation id="2770929488047004208">Monitorresolutie</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index f2f5503a..7a844364 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -1328,7 +1328,6 @@ <translation id="2440604414813129000">Vis &kilde</translation> <translation id="244231003699905658">Ugyldig adresse. Kontrollér adressen og prøv igjen.</translation> <translation id="2442916515643169563">Tekstskygge</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Det kreves en rotkatalog for utvidelsen</translation> <translation id="2445484935443597917">Opprett en ny profil</translation> <translation id="2448312741937722512">Type</translation> @@ -1634,7 +1633,6 @@ <translation id="2766006623206032690">&Lim inn og gå til</translation> <translation id="2766161002040448006">Spør en forelder</translation> <translation id="2767127727915954024">Da kan <ph name="ORIGIN" /> redigere <ph name="FILENAME" /> frem til du lukker alle fanene for dette nettstedet</translation> -<translation id="276969039800130567">Pålogget som <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Fjern fra listen</translation> <translation id="2770690685823456775">Eksportér passordene dine til en annen mappe</translation> <translation id="2770929488047004208">Skjermoppløsning</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 132e351..1a26ae54 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -1629,7 +1629,6 @@ <translation id="2766006623206032690">ଲେ&ପନ କରନ୍ତୁ ଓ ଯାଆନ୍ତୁ</translation> <translation id="2766161002040448006">ଜଣେ ବାପା କିମ୍ବା ମା'ଙ୍କୁ ପଚାରନ୍ତୁ</translation> <translation id="2767127727915954024">ଆପଣ ଏହି ସାଇଟ୍ ପାଇଁ ସମସ୍ତ ଟାବକୁ ବନ୍ଦ ନକରିବା ପର୍ଯ୍ୟନ୍ତ <ph name="ORIGIN" />, <ph name="FILENAME" />କୁ ସମ୍ପାଦନ କରିବାକୁ ସକ୍ଷମ ହେବ</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ଭାବରେ ସାଇନ୍-ଇନ୍ କରିଛନ୍ତି।</translation> <translation id="2770465223704140727">ତାଲିକାରୁ ବାହାର କରନ୍ତୁ</translation> <translation id="2770690685823456775">ଆପଣଙ୍କର ପାସ୍ୱର୍ଡ୍ ଅନ୍ୟ ଏକ ଫୋଲ୍ଡର୍କୁ ଏକ୍ସପୋର୍ଟ୍ କରନ୍ତୁ</translation> <translation id="2770929488047004208">ମନିଟର୍ ରିଜୋଲ୍ୟୁସନ୍</translation> @@ -2385,6 +2384,7 @@ <translation id="3616741288025931835">&ବ୍ରାଉଜିଂ ଡାଟା ଖାଲି କରନ୍ତୁ...</translation> <translation id="3617891479562106823">ପୃଷ୍ଠଭୂମି ଉପଲବ୍ଧ ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="3619115746895587757">କ୍ୟାପାଚିନୋ</translation> +<translation id="362266093274784978">{COUNT,plural, =1{ଏକ ଆପ୍}other{#ଟି ଆପ୍}}</translation> <translation id="362333465072914957">ଏକ ସାର୍ଟିଫିକେଟ୍ ଜାରି କରିବାକୁ CA ପାଇଁ ଅପେକ୍ଷା କରାଯାଉଛି</translation> <translation id="3624567683873126087">ଡିଭାଇସ୍ ଅନ୍ଲକ୍ କରନ୍ତୁ ଏବଂ Google ଆକାଉଣ୍ଟକୁ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="3625481642044239431">ଅବୈଧ ଫାଇଲ୍ ବଛାଯାଇଛି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> @@ -2656,6 +2656,7 @@ <translation id="3895076768659607631">ସନ୍ଧାନ ଇଞ୍ଜିନଗୁଡ଼ିକୁ &ପରିଚାଳନା କରନ୍ତୁ...</translation> <translation id="3895090224522145010">Kerberos ଉପଯୋଗକର୍ତ୍ତାନାମ</translation> <translation id="389521680295183045">ଆପଣ କେତେବେଳେ ଆପଣଙ୍କ ଡିଭାଇସକୁ ସକ୍ରିୟ ଭାବରେ ବ୍ୟବହାର କରୁଛନ୍ତି ତାହା ଜାଣିବାକୁ ସାଇଟଗୁଡ଼ିକ ପଚାରିପାରେ</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{ଏକ ଛବି}other{#ଟି ଛବି}}</translation> <translation id="3898233949376129212">ଡିଭାଇସର ଭାଷା</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> ଏହା ଚାହୁଁଛି: <ph name="FIRST_PERMISSION" /> ଏବଂ <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">କୀ'ବୋର୍ଡ୍ ଚୟନ କରନ୍ତୁ</translation> @@ -3568,6 +3569,7 @@ <translation id="4943368462779413526">ଫୁଟ୍ବଲ୍</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ଏକ ସିରିୟାଲ୍ ପୋର୍ଟ ସହ ସଂଯୋଗ କରିବାକୁ ଚାହୁଁଛି</translation> <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> ଦ୍ୱାରା ପ୍ରାମାଣିକତା ସେବା ହୋଷ୍ଟ କରାଯାଇଛି</translation> +<translation id="495164417696120157">{COUNT,plural, =1{ଏକ ଫାଇଲ୍}other{#ଟି ଫାଇଲ୍}}</translation> <translation id="495170559598752135">କାର୍ଯ୍ୟ</translation> <translation id="4953808748584563296">ଡିଫଲ୍ଟ ଅରେଞ୍ଜ ଅବତାର</translation> <translation id="4955710816792587366">ଆପଣଙ୍କର ପିନ୍ ନମ୍ବର ବାଛନ୍ତୁ</translation> @@ -4635,6 +4637,7 @@ <translation id="6184099524311454384">ଟାବଗୁଡ଼ିକୁ ସନ୍ଧାନ କରନ୍ତୁ</translation> <translation id="6185132558746749656">ଡିଭାଇସ୍ ଲୋକେସନ୍</translation> <translation id="6186394437969115158">ସାଇଟଗୁଡ଼ିକ ସାଧାରଣତଃ ବିଜ୍ଞାପନଗୁଡ଼ିକ ଦେଖାଇଥାଏ ଯାହା ଫଳରେ ସେଗୁଡ଼ିକ ବିଷୟବସ୍ତୁ କିମ୍ବା ସେବାଗୁଡ଼ିକୁ ମାଗଣାରେ ପ୍ରଦାନ କରିପାରିବ। କିନ୍ତୁ, କିଛି ସାଇଟ୍ ଅନଧିକାର ପ୍ରବେଶ କରିଥିବା କିମ୍ବା ବିଭ୍ରାନ୍ତିକର ବିଜ୍ଞାପନ ପ୍ରଦର୍ଶନ କରିଥିବାର ଜଣାଯାଏ।</translation> +<translation id="6195005504600220730">ଆପଣଙ୍କ ବ୍ରାଉଜର୍, OS ଏବଂ ଡିଭାଇସ୍ ବିଷୟରେ ସୂଚନା ପଢ଼ନ୍ତୁ</translation> <translation id="6195693561221576702">ଏହି ଡିଭାଇସ୍ଟି ଅଫ୍ଲାଇନ୍ ଡେମୋ ମୋଡ୍ରେ ସେଟ୍ ଅପ୍ କରାଯାଇପାରିବ ନାହିଁ।</translation> <translation id="6195724942939841102">ରିଷ୍ଟୋର କରନ୍ତୁ ନାହିଁ</translation> <translation id="6196640612572343990">ତୃତୀୟ ପକ୍ଷ କୁକୀଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତୁ</translation> @@ -5068,6 +5071,7 @@ <translation id="6664237456442406323">ଦୁର୍ଭାଗ୍ୟବଶତଃ, ଆପଣଙ୍କର କମ୍ପ୍ୟୁଟର୍ କୌଣସି ବିକୃତ ହାର୍ଡୱେର୍ ID ଦ୍ୱାରା କନ୍ଫିଗର୍ କରାଯାଇଛି। ଏହାଦ୍ୱାରା Chrome OSକୁ ନବୀନତମ ସୁରକ୍ଷା ସମାଧାନରୁ ଅପ୍ଡେଟ୍ ହେବାରେ ପ୍ରତିବନ୍ଧତା ହେଉଛି ଏବଂ ଆପଣଙ୍କର କମ୍ପ୍ୟୁଟର୍ <ph name="BEGIN_BOLD" />ବିଦ୍ୱେଷ ପ୍ରଣୋଦିତ ଆକ୍ରମଣଗୁଡ଼ିକର ସମ୍ଭାବନା ଥାଇପାରେ <ph name="END_BOLD" />।</translation> <translation id="6664774537677393800">ଆପଣଙ୍କର ପ୍ରୋଫାଇଲ୍ ଖୋଲିବା ସମୟରେ କିଛି ତ୍ରୁଟି ହୋଇଛି। ଦୟାକରି ସାଇନ୍ ଆଉଟ୍ କରିବା ପରେ ପୁଣିଥରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> ବର୍ତ୍ତମାନ ଉପଲବ୍ଧ ଅଛି</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{ଏକ ଠିକଣା}other{#ଟି ଠିକଣା}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ, ଆପଣଙ୍କ ପାସଫ୍ରେଜ୍ ଲେଖନ୍ତୁ</translation> <translation id="6675665718701918026">ପଏଣ୍ଟିଂ ଡିଭାଇସ୍ ସଂଯୋଗ ହୋଇଛି</translation> @@ -5764,6 +5768,7 @@ <translation id="7456142309650173560">ଡେଭ୍</translation> <translation id="7456847797759667638">ଲୋକେସନ୍ ଖୋଲନ୍ତୁ...</translation> <translation id="7457384018036134905">Chrome OS ସେଟିଂସରେ ଭାଷାଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{ଏକ ଲିଙ୍କ୍}other{#ଟି ଲିଙ୍କ୍}}</translation> <translation id="7458168200501453431">ଏହା Google ସନ୍ଧାନରେ ବ୍ୟବହୃତ ହୋଇଥିବା ସମାନ ବନାନ ଯାଞ୍ଚକାରୀ ବ୍ୟବହାର କରେ। ବ୍ରାଉଜର୍ରେ ଆପଣ ଟାଇପ୍ କରିଥିବା ଟେକ୍ସଟ୍ Googleକୁ ପଠାଯାଏ।</translation> <translation id="7460045493116006516">ଆପଣ ଇନ୍ଷ୍ଟଲ୍ କରିଥିବା ବର୍ତ୍ତମାନର ଥିମ୍</translation> <translation id="7461924472993315131">ପିନ୍</translation> @@ -6164,6 +6169,7 @@ <translation id="7883792253546618164">ଯେ କୌଣସି ସମୟରେ ସଦସ୍ୟତା ତ୍ୟାଗ କରନ୍ତୁ।</translation> <translation id="788453346724465748">ଆକାଉଣ୍ଟ ସୂଚନା ଲୋଡ୍ କରାଯାଉଛି...</translation> <translation id="7885253890047913815">ନିକଟର ଲକ୍ଷସ୍ଥଳଗୁଡ଼ିକ</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{ଏକ ଆଇଟମ୍}other{#ଟି ଆଇଟମ୍}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">ନକଲ</translation> <translation id="7887864092952184874">ବ୍ଲୁଟୁଥ୍ ମାଉସ୍ ପେୟାର୍ ହୋଇଛି</translation> @@ -6401,6 +6407,7 @@ <translation id="8139447493436036221">Google Drive ଫାଇଲଗୁଡ଼ିକ</translation> <translation id="8141584439523427891">ବର୍ତ୍ତମାନ ବିକଳ୍ପ ବ୍ରାଉଜର୍ରେ ଖୋଲୁଛି</translation> <translation id="8141725884565838206">ଆପଣଙ୍କର ପାସ୍ୱର୍ଡଗୁଡ଼ିକ ପରିଚାଳିତ କରନ୍ତୁ</translation> +<translation id="814204052173971714">{COUNT,plural, =1{ଏକ ଭିଡିଓ}other{#ଟି ଭିଡିଓ}}</translation> <translation id="8143442547342702591">ଅବୈଧ ଆପ୍ଲିକେସନ୍</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> ଚୟନ କରନ୍ତୁ</translation> <translation id="8146177459103116374">ଯଦି ଆପଣ ଆଗରୁ ଏହି ଡିଭାଇସ୍ରେ ପଞ୍ଜିକୃତ କରିସାରିଛନ୍ତି, ତେବେ ଆପଣ <ph name="LINK2_START" />ଜଣେ ବିଦ୍ୟମାନ ଉପଯୋଗକର୍ତ୍ତା ଭାବରେ ସାଇନ୍ ଇନ୍<ph name="LINK2_END" /> କରିପାରିବେ।</translation> @@ -6420,6 +6427,7 @@ <translation id="8161293209665121583">ୱେବ୍ ପୃଷ୍ଠା ପାଇଁ ରିଡର୍ ମୋଡ୍</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ନୂଆ ୱିଣ୍ଡୋକୁ ଟାବ୍ ମୁଭ୍ କରନ୍ତୁ}other{ନୂଆ ୱିଣ୍ଡୋକୁ ଟାବଗୁଡ଼ିକ ମୁଭ୍ କରନ୍ତୁ}}</translation> <translation id="8165997195302308593">Crostini ପୋର୍ଟ ଫରୱାର୍ଡିଂ</translation> +<translation id="816704878106051517">{COUNT,plural, =1{ଏକ ଫୋନ୍ ନମ୍ବର}other{#ଟି ଫୋନ୍ ନମ୍ବର}}</translation> <translation id="8168435359814927499">ବିଷୟବସ୍ତୁ</translation> <translation id="8168943654413034772">ଚୟନ କରିବାକୁ ଆସାଇନ୍ କରାଯାଇଥିବା ଏକମାତ୍ର ସ୍ୱିଚକୁ କାଢ଼ି ଦିଆଯାଇପାରିବ ନାହିଁ। ବାହାରି ଯିବା ପାଇଁ ଯେ କୌଣସି କୀକୁ ଦବାନ୍ତୁ।</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{ପଢ଼ିବା ତାଲିକାରେ ଟାବ୍ ଯୋଗ କରନ୍ତୁ}other{ପଢ଼ିବା ତାଲିକାରେ ଟାବଗୁଡ଼ିକୁ ଯୋଗ କରନ୍ତୁ}}</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index df37c3d..4cc5336 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">ਸ&ਰੋਤ ਦੇਖੋ</translation> <translation id="244231003699905658">ਅਵੈਧ ਪਤਾ। ਕਿਰਪਾ ਕਰਕੇ ਪਤੇ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="2442916515643169563">ਲਿਖਤ ਸ਼ੈਡੋ</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">ਐਕਸਟੈਂਸ਼ਨ ਰੂਟ ਡਾਇਰੈਕਟਰੀ ਲੋੜੀਂਦੀ ਹੈ।</translation> <translation id="2445484935443597917">ਇੱਕ ਨਵਾਂ ਪ੍ਰੋਫਾਈਲ ਬਣਾਓ</translation> <translation id="2448312741937722512">ਟਾਈਪ ਕਰੋ</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">ਪੇ&ਸਟ ਕਰੋ ਅਤੇ ਜਾਓ</translation> <translation id="2766161002040448006">ਮਾਂ-ਪਿਓ ਨੂੰ ਪੁੱਛੋ</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> ਇਸ ਸਾਈਟ ਲਈ ਸਾਰੀਆਂ ਟੈਬਾਂ ਬੰਦ ਨਾ ਕੀਤੇ ਜਾਣ ਤੱਕ <ph name="FILENAME" /> ਦਾ ਸੰਪਾਦਨ ਕਰ ਸਕੇਗੀ</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ਦੇ ਤੌਰ ਤੇ ਸਾਈਨ ਇਨ ਕੀਤਾ।</translation> <translation id="2770465223704140727">ਸੂਚੀ ਵਿੱਚੋਂ ਹਟਾਓ</translation> <translation id="2770690685823456775">ਆਪਣੇ ਪਾਸਵਰਡਾਂ ਨੂੰ ਕਿਸੇ ਹੋਰ ਫੋਲਡਰ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ</translation> <translation id="2770929488047004208">ਮਾਨੀਟਰ ਰੈਜ਼ੋਲਿਊਸ਼ਨ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 986aac55..a80323a 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -1329,7 +1329,6 @@ <translation id="2440604414813129000">Wyświetl ź&ródło</translation> <translation id="244231003699905658">Nieprawidłowy adres. Sprawdź adres i spróbuj ponownie.</translation> <translation id="2442916515643169563">Cień tekstu</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Wymagany jest główny katalog rozszerzenia.</translation> <translation id="2445484935443597917">Utwórz nowy profil</translation> <translation id="2448312741937722512">Typ</translation> @@ -1634,7 +1633,6 @@ <translation id="2766006623206032690">Wk&lej i otwórz</translation> <translation id="2766161002040448006">Poproś rodzica</translation> <translation id="2767127727915954024">Strona <ph name="ORIGIN" /> będzie mogła edytować plik <ph name="FILENAME" />, dopóki nie zamkniesz wszystkich jej kart</translation> -<translation id="276969039800130567">Zalogowano jako <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Usuń z listy</translation> <translation id="2770690685823456775">Eksportuj hasła do innego folderu</translation> <translation id="2770929488047004208">Rozdzielczość monitora</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index e23a3651..ba26b78 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Exibir &código fonte</translation> <translation id="244231003699905658">Endereço inválido. Verifique o endereço e tente novamente.</translation> <translation id="2442916515643169563">Sombra do texto</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" />: <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">O diretório raiz da extensão é obrigatório.</translation> <translation id="2445484935443597917">Criar um novo perfil</translation> <translation id="2448312741937722512">Tipo</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Co&lar e ir</translation> <translation id="2766161002040448006">Pedir para pai/mãe</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> poderá editar <ph name="FILENAME" /> até que você feche todas as guias desse site</translation> -<translation id="276969039800130567">Conectado como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Remover da lista</translation> <translation id="2770690685823456775">Exportar suas senhas para outra pasta</translation> <translation id="2770929488047004208">Resolução do monitor</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 5f16a5ab..6c5bcbd 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Ver fonte</translation> <translation id="244231003699905658">Endereço inválido. Verifique o endereço e tente novamente.</translation> <translation id="2442916515643169563">Sombra do texto</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">É necessário o directório de raiz da extensão.</translation> <translation id="2445484935443597917">Criar um novo perfil</translation> <translation id="2448312741937722512">Tipo</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">Co&lar e ir</translation> <translation id="2766161002040448006">Pedir ao pai/mãe</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> poderá editar o ficheiro <ph name="FILENAME" /> até fechar todos os separadores deste site.</translation> -<translation id="276969039800130567">Com sessão iniciado como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Remover da lista</translation> <translation id="2770690685823456775">Exportar as palavras-passe para outra pasta</translation> <translation id="2770929488047004208">Resolução do monitor</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index ed5c6b18..c349c37 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -350,6 +350,7 @@ <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="1384849755549338773">Oferă Google Traducere pentru site-uri în alte limbi</translation> <translation id="1386791642444521222">Activează cardul SIM fizic</translation> <translation id="138784436342154190">Restabilești pagina de pornire prestabilită?</translation> <translation id="1388253969141979417">Au permisiunea de a folosi microfonul</translation> @@ -872,6 +873,7 @@ <translation id="1920390473494685033">Agendă</translation> <translation id="1921050530041573580">Asociază telefonul cu Messages</translation> <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation> +<translation id="1923468477587371721">Site-urile Google, cum ar fi Gmail, Drive și YouTube, folosesc limba Contului tău Google dacă nu ai schimbat limba individuală a produsului</translation> <translation id="192494336144674234">Deschide cu</translation> <translation id="1925017091976104802">Apasă pe <ph name="MODIFIER_KEY_DESCRIPTION" /> pentru a insera</translation> <translation id="1925021887439448749">Introdu adresa web personalizată</translation> @@ -1332,7 +1334,6 @@ <translation id="2440604414813129000">Afișează s&ursa</translation> <translation id="244231003699905658">Adresa nu este validă. Verifică adresa și încearcă din nou.</translation> <translation id="2442916515643169563">Umbrirea textului</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Este necesar directorul rădăcină pentru extensie.</translation> <translation id="2445484935443597917">Creează un profil nou</translation> <translation id="2448312741937722512">Tipul</translation> @@ -1638,7 +1639,6 @@ <translation id="2766006623206032690">In&serează și accesează</translation> <translation id="2766161002040448006">Cere unui părinte</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> va putea edita <ph name="FILENAME" /> până când închizi toate filele pentru acest site</translation> -<translation id="276969039800130567">Conectat(ă) ca <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Elimină din listă</translation> <translation id="2770690685823456775">Exportă parolele într-un alt dosar</translation> <translation id="2770929488047004208">Rezoluția monitorului</translation> @@ -1956,6 +1956,7 @@ <translation id="311394601889664316">Nu permite site-urilor să modifice fișierele sau dosarele de pe dispozitiv</translation> <translation id="3115147772012638511">Se așteaptă cache-ul...</translation> <translation id="3115580024857770654">Restrânge tot</translation> +<translation id="3115743155098198207">Gestionează limba Contului Google</translation> <translation id="3117362587799608430">Dispozitivul de andocare nu este compatibil în totalitate</translation> <translation id="3117791853215125017">{COUNT,plural, =1{Nu s-a trimis <ph name="ATTACHMENTS" /> către <ph name="DEVICE_NAME" />}few{Nu s-au trimis <ph name="ATTACHMENTS" /> către <ph name="DEVICE_NAME" />}other{Nu s-au trimis <ph name="ATTACHMENTS" /> către <ph name="DEVICE_NAME" />}}</translation> <translation id="3118319026408854581">Ajutor <ph name="PRODUCT_NAME" /></translation> @@ -2375,6 +2376,7 @@ <translation id="3599863153486145794">Șterge istoricul de pe toate dispozitivele conectate. Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="3600051066689725006">Informații despre solicitarea web</translation> <translation id="3600792891314830896">Dezactivează sunetul pentru site-urile care îl redau</translation> +<translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation> <translation id="360180734785106144">să ofere noi caracteristici pe măsură ce devin disponibile;</translation> <translation id="3602290021589620013">Previzualizare</translation> <translation id="3602870520245633055">Printează și scanează</translation> @@ -3700,6 +3702,7 @@ <translation id="5107443654503185812">O extensie a dezactivat Navigarea sigură</translation> <translation id="5108967062857032718">Setări – Elimină aplicațiile Android</translation> <translation id="5109044022078737958">Mia</translation> +<translation id="5109816792918100764">Elimină <ph name="LANGUAGE_NAME" /></translation> <translation id="5111646998522066203">Ieși din modul incognito</translation> <translation id="5111692334209731439">&Manager de marcaje</translation> <translation id="5112577000029535889">&Instrumente pentru dezvoltatori</translation> @@ -4440,6 +4443,7 @@ <translation id="5943127421590245687">S-a confirmat. Pentru a debloca și a restabili datele locale, introdu parola veche pentru <ph name="DEVICE_TYPE" />.</translation> <translation id="5944869793365969636">Scanează codul QR</translation> <translation id="5945002094477276055">Fișierul <ph name="FILE_NAME" /> poate fi periculos. Îl trimiți la Navigare sigură Google pentru scanare?</translation> +<translation id="5945363896952315544">Cheia de securitate nu poate stoca amprente suplimentare. Pentru a adăuga una nouă, mai întâi șterge o amprentă existentă.</translation> <translation id="5946591249682680882">ID raport <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5948536763493709626">Conectează o tastatură ori un mouse sau continuă configurarea pe ecranul tactil. Dacă folosești dispozitive Bluetooth, asigură-te că sunt gata de conectare.</translation> <translation id="5949544233750246342">Fișierul nu poate fi analizat</translation> @@ -5385,6 +5389,7 @@ <translation id="7001036685275644873">Se face backup pentru aplicațiile și fișierele Linux</translation> <translation id="7002055706763150362">Pentru a configura Smart Lock pentru Chromebook, Google trebuie să se asigure că ești tu: introdu parola pentru a începe.</translation> <translation id="7003339318920871147">Baze de date web</translation> +<translation id="7003454175711353260">{COUNT,plural, =1{{COUNT} fișier}few{{COUNT} fișiere}other{{COUNT} de fișiere}}</translation> <translation id="7003723821785740825">Configurează o modalitate mai rapidă de a debloca dispozitivul</translation> <translation id="7003844668372540529">Produs necunoscut <ph name="PRODUCT_ID" /> de la <ph name="VENDOR_NAME" /></translation> <translation id="7004402701596653846">Este posibil ca site-ul să folosească dispozitive MIDI</translation> @@ -5649,6 +5654,7 @@ <translation id="7306521477691455105">Deschide Setările pentru a conecta <ph name="USB_DEVICE_NAME" /> la <ph name="USB_VM_NAME" /></translation> <translation id="7307129035224081534">Întreruptă</translation> <translation id="7308436126008021607">Sincronizare în fundal</translation> +<translation id="7308643132139167865">Limbi pentru site-uri</translation> <translation id="7309257895202129721">Afișați &comenzile</translation> <translation id="7310598146671372464">Conectarea nu a reușit. Serverul nu acceptă tipurile de criptare Kerberos specificate. Contactează administratorul.</translation> <translation id="7320213904474460808">Setează ca rețea prestabilită</translation> @@ -5860,6 +5866,7 @@ <translation id="7552846755917812628">Încearcă următoarele sfaturi:</translation> <translation id="7553012839257224005">Verificarea containerului Linux este în curs</translation> <translation id="7553242001898162573">Introdu parola</translation> +<translation id="755472745191515939">Administratorul nu permite această limbă</translation> <translation id="7554791636758816595">Filă nouă</translation> <translation id="7556033326131260574">Smart Lock nu a putut verifica contul tău. Pentru acces, introdu parola.</translation> <translation id="7556242789364317684">Din păcate, <ph name="SHORT_PRODUCT_NAME" /> nu vă poate recupera setările. Pentru a remedia eroarea, este necesar ca <ph name="SHORT_PRODUCT_NAME" /> să reseteze dispozitivul utilizând Powerwash.</translation> @@ -6161,6 +6168,7 @@ <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> <translation id="786073089922909430">Serviciu: <ph name="ARC_PROCESS_NAME" /></translation> <translation id="7861215335140947162">&Descărcări</translation> +<translation id="7861846108263890455">Limba Contului Google</translation> <translation id="7864539943188674973">Dezactivați Bluetooth</translation> <translation id="786957569166715433"><ph name="DEVICE_NAME" /> – asociat</translation> <translation id="7870730066603611552">Examinează opțiunile de sincronizare după configurare</translation> @@ -6423,6 +6431,7 @@ <translation id="8143442547342702591">Aplicație nevalidă</translation> <translation id="8143951647992294073">Selectează <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation> <translation id="8146177459103116374">Dacă v-ați înregistrat deja pe acest dispozitiv, puteți să vă <ph name="LINK2_START" />conectați ca utilizator existent<ph name="LINK2_END" />.</translation> +<translation id="8146287226035613638">Adaugă și ordonează limbile preferate. Site-urile se vor afișa în limbile tale preferate, dacă este posibil. Aceste preferințe se sincronizează cu setările browserului. <ph name="BEGIN_LINK_LEARN_MORE" />Află mai multe<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="8146793085009540321">Conectarea nu a reușit. Contactează administratorul sau încearcă din nou.</translation> <translation id="8147900440966275470">S-a găsit <ph name="NUM" /> filă</translation> <translation id="8148760431881541277">Limitează conectarea</translation> @@ -7435,6 +7444,7 @@ <translation id="983511809958454316">Această funcție nu este acceptată în RV</translation> <translation id="984136553749462603">Atunci când un site redă conținut protejat prin drepturi de autor, poate solicita să îți recunoască dispozitivul</translation> <translation id="984275831282074731">Metode de plată</translation> +<translation id="984705303330760860">Adaugă limbi pentru verificarea ortografiei</translation> <translation id="98515147261107953">Peisaj</translation> <translation id="987068745968718743">Parallels Desktop: <ph name="PLUGIN_VM_NAME" /></translation> <translation id="987264212798334818">General</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 870c961..0820b3c 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">Просмотреть и&сходный код</translation> <translation id="244231003699905658">Недопустимый адрес. Проверьте его и повторите попытку.</translation> <translation id="2442916515643169563">Тень текста</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Требуется корневой каталог расширения.</translation> <translation id="2445484935443597917">Создать профиль</translation> <translation id="2448312741937722512">Тип</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Вс&тавить из буфера и перейти</translation> <translation id="2766161002040448006">Отправить запрос родителям</translation> <translation id="2767127727915954024">Сайт <ph name="ORIGIN" /> сможет изменять файл "<ph name="FILENAME" />", пока вы не закроете все вкладки этого сайта.</translation> -<translation id="276969039800130567">Вы вошли как <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Удалить из списка</translation> <translation id="2770690685823456775">Экспортируйте пароли в другую папку.</translation> <translation id="2770929488047004208">Разрешение монитора</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index 58c4e67..d6f45e7 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -1329,7 +1329,6 @@ <translation id="2440604414813129000">මූලය පෙන්වන්න (&o)</translation> <translation id="244231003699905658">අවලංගු ලිපිනය. ලිපිනය පරික්ෂා කර, නැවත උත්සාහ කරන්න.</translation> <translation id="2442916515643169563">පාඨ ඡායාව</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">දිගු මූල නාමාවලියක් අවශ්යයි</translation> <translation id="2445484935443597917">නව පැතිකඩක් සාදන්න</translation> <translation id="2448312741937722512">වර්ගය</translation> @@ -1634,7 +1633,6 @@ <translation id="2766006623206032690">අල&වා යන්න</translation> <translation id="2766161002040448006">දෙමාපියෙකුගෙන් අසන්න</translation> <translation id="2767127727915954024">මෙම වෙබ් අඩවිය සඳහා වන පටිති සියල්ල වසන තෙක් <ph name="ORIGIN" /> හට <ph name="FILENAME" /> සංස්කරණ කිරීමට හැකි වෙයි</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ලෙස පුරන ලදී.</translation> <translation id="2770465223704140727">ලැයිස්තුවෙන් ඉවත් කරන්න</translation> <translation id="2770690685823456775">ඔබේ මුරපද වෙනත් ෆෝල්ඩරයකට නිර්යාත කරන්න</translation> <translation id="2770929488047004208">මොනිටර් විභේදනය</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 3a7814e..c233fea 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -1332,7 +1332,6 @@ <translation id="2440604414813129000">&Zobraziť zdrojový kód</translation> <translation id="244231003699905658">Neplatná adresa. Skontrolujte adresu a skúste to znova.</translation> <translation id="2442916515643169563">Tieň textu</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Požaduje sa koreňový adresár rozšírenia.</translation> <translation id="2445484935443597917">Vytvoriť nový profil</translation> <translation id="2448312741937722512">Typ</translation> @@ -1638,7 +1637,6 @@ <translation id="2766006623206032690">Prilepiť a &otvoriť</translation> <translation id="2766161002040448006">Opýtať sa rodiča</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> bude môcť upravovať súbor <ph name="FILENAME" />, dokým nezavriete všetky karty tohto webu</translation> -<translation id="276969039800130567">Prihlásený účet <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Odstrániť zo zoznamu</translation> <translation id="2770690685823456775">Exportujte heslá do iného priečinka</translation> <translation id="2770929488047004208">Rozlíšenie monitora</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 419b545..3a9cbeaa 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -1334,7 +1334,6 @@ <translation id="2440604414813129000">Ogled v&ira</translation> <translation id="244231003699905658">Neveljaven naslov. Preverite naslov in poskusite znova.</translation> <translation id="2442916515643169563">Senčenje besedila</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Potreben je korenski imenik razširitve.</translation> <translation id="2445484935443597917">Ustvari nov profil</translation> <translation id="2448312741937722512">Vrsta</translation> @@ -1640,7 +1639,6 @@ <translation id="2766006623206032690">Pr&ilepi in nadaljuj</translation> <translation id="2766161002040448006">Prosi starša</translation> <translation id="2767127727915954024">Spletno mesto <ph name="ORIGIN" /> bo lahko urejalo datoteko <ph name="FILENAME" />, dokler ne zaprete vseh zavihkov tega spletnega mesta</translation> -<translation id="276969039800130567">Prijavljen kot <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Odstrani s seznama</translation> <translation id="2770690685823456775">Izvozite gesla v drugo mapo</translation> <translation id="2770929488047004208">Ločljivost monitorja</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 914936b..0f1a796 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -1328,7 +1328,6 @@ <translation id="2440604414813129000">Shiko b&urimin</translation> <translation id="244231003699905658">Adresë e pavlefshme. Kontrollo adresën dhe provo përsëri.</translation> <translation id="2442916515643169563">Hija e tekstit</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Kërkohet direktoria rrënjë e shtesës.</translation> <translation id="2445484935443597917">Krijo një profil të ri</translation> <translation id="2448312741937722512">Shkruaj</translation> @@ -1633,7 +1632,6 @@ <translation id="2766006623206032690">Ngj&it dhe vazhdo</translation> <translation id="2766161002040448006">Pyet një prind</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> do të mund ta modifikojë <ph name="FILENAME" /> deri sa t'i mbyllësh të gjitha skedat për këtë sajt</translation> -<translation id="276969039800130567">I identifikuar si <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Hiqe nga lista</translation> <translation id="2770690685823456775">Eksporto fjalëkalimet e tua te një dosje tjetër</translation> <translation id="2770929488047004208">Rezolucioni i monitorit</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 3a12508..23ab4f7 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Prikaži i&zvor</translation> <translation id="244231003699905658">Nevažeća adresa. Proverite adresu i probajte ponovo.</translation> <translation id="2442916515643169563">Senka teksta</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Osnovni direktorijum dodatka je obavezan.</translation> <translation id="2445484935443597917">Napravi nov profil</translation> <translation id="2448312741937722512">Tip</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">Na&lepi i idi</translation> <translation id="2766161002040448006">Zamoli roditelja</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> će moći da menja datoteku <ph name="FILENAME" /> dok ne zatvorite sve kartice ovog sajta</translation> -<translation id="276969039800130567">Prijavljen/na kao <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Ukloni sa liste</translation> <translation id="2770690685823456775">Izvezite lozinke u drugi direktorijum</translation> <translation id="2770929488047004208">Rezolucija monitora</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 8af92cb5..780d974c 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Прикажи и&звор</translation> <translation id="244231003699905658">Неважећа адреса. Проверите адресу и пробајте поново.</translation> <translation id="2442916515643169563">Сенка текста</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Основни директоријум додатка је обавезан.</translation> <translation id="2445484935443597917">Направи нов профил</translation> <translation id="2448312741937722512">Тип</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">На&лепи и иди</translation> <translation id="2766161002040448006">Замоли родитеља</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> ће моћи да мења датотеку <ph name="FILENAME" /> док не затворите све картице овог сајта</translation> -<translation id="276969039800130567">Пријављен/на као <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Уклони са листе</translation> <translation id="2770690685823456775">Извезите лозинке у други директоријум</translation> <translation id="2770929488047004208">Резолуција монитора</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 8418dc4f..64cfccc 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Visa &källa</translation> <translation id="244231003699905658">Adressen är ogiltig. Kontrollera webbadressen och försök igen.</translation> <translation id="2442916515643169563">Textskugga</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Tilläggets rotkatalog måste anges.</translation> <translation id="2445484935443597917">Skapa en ny profil</translation> <translation id="2448312741937722512">Typ</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Kl&istra in och öppna</translation> <translation id="2766161002040448006">Fråga en förälder</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> har redigeringsbehörighet till <ph name="FILENAME" /> tills du stänger alla flikar för den här webbplatsen</translation> -<translation id="276969039800130567">Inloggad som <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Ta bort från listan</translation> <translation id="2770690685823456775">Exportera lösenorden till en annan mapp</translation> <translation id="2770929488047004208">Skärmupplösning</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 70d9784..4e54e67 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1328,7 +1328,6 @@ <translation id="2440604414813129000">Tazama &asili</translation> <translation id="244231003699905658">Anwani si sahihi. Tafadhali thibitisha anwani kisha ujaribu tena.</translation> <translation id="2442916515643169563">Vivuli vya maandishi</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Saraka la shina la kiendelezi linahitajika.</translation> <translation id="2445484935443597917">Unda Wasifu Mpya</translation> <translation id="2448312741937722512">Aina</translation> @@ -1634,7 +1633,6 @@ <translation id="2766006623206032690">&Bandika na uende</translation> <translation id="2766161002040448006">Muulize mzazi</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> itaweza kubadilisha <ph name="FILENAME" /> hadi ufunge vichupo vyote vya tovuti hii</translation> -<translation id="276969039800130567">Umeingia ukitumia <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Ondoa kwenye orodha</translation> <translation id="2770690685823456775">Tuma manenosiri yako kwenye folda nyingine</translation> <translation id="2770929488047004208">Ubora wa skrini</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 3ad1c4a..2455936 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">ஆ&தாரத்தைக் காண்பி</translation> <translation id="244231003699905658">தவறான முகவரி. முகவரியைச் சரிபார்த்துவிட்டு மீண்டும் முயலவும்.</translation> <translation id="2442916515643169563">டெக்ஸ்ட் ஷேடோ</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">நீட்டிப்பு மூல கோப்பகம் தேவை.</translation> <translation id="2445484935443597917">ஒரு புதிய சுயவிவரத்தை உருவாக்கு</translation> <translation id="2448312741937722512">வகை</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">ஒட்&டி விட்டு செல்</translation> <translation id="2766161002040448006">பெற்றோரிடம் கேள்</translation> <translation id="2767127727915954024">இந்தத் தளத்தின் தாவல்கள் அனைத்தையும் மூடும் வரை <ph name="ORIGIN" /> தளத்தால் <ph name="FILENAME" /> கோப்பைத் திருத்த முடியும்</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ஆக உள்நுழைந்துள்ளீர்கள்.</translation> <translation id="2770465223704140727">பட்டியலிலிருந்து நீக்கு</translation> <translation id="2770690685823456775">மற்றொரு கோப்புறைக்குக் கடவுச்சொற்களை ஏற்றவும்</translation> <translation id="2770929488047004208">மானிட்டரின் தெளிவுத்திறன்</translation> @@ -2393,6 +2391,7 @@ <translation id="3616741288025931835">உலாவிய தரவை &சுத்தமாக்கு...</translation> <translation id="3617891479562106823">பின்னணிகள் கிடைக்கவில்லை. பின்னர் மீண்டும் முயலவும்.</translation> <translation id="3619115746895587757">காப்பச்சினோ</translation> +<translation id="362266093274784978">{COUNT,plural, =1{ஓர் ஆப்ஸை}other{# ஆப்ஸை}}</translation> <translation id="362333465072914957">CAயிடமிருந்து சான்றிதழ் பெறுவதற்காகக் காத்திருக்கிறது</translation> <translation id="3624567683873126087">ஃபோனைத் திறந்து, Google கணக்கில் உள்நுழை</translation> <translation id="3625481642044239431">தவறான கோப்பைத் தேர்ந்தெடுத்துள்ளீர்கள். மீண்டும் முயலவும்.</translation> @@ -2664,6 +2663,7 @@ <translation id="3895076768659607631">&தேடல் இன்ஜின்களை நிர்வகிக்கவும்...</translation> <translation id="3895090224522145010">Kerberos பயனர்பெயர்</translation> <translation id="389521680295183045">சாதனத்தில் நான் செயலில் இருப்பது குறித்து அறிந்துகொள்ள தளங்கள் அனுமதி கேட்க வேண்டும்</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{ஒரு படத்தை}other{# படங்களை}}</translation> <translation id="3898233949376129212">சாதனத்தின் மொழி</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> இந்த அனுமதிகளைக் கோருகிறது: <ph name="FIRST_PERMISSION" /> & <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">கீபோர்டைத் தேர்ந்தெடுக்கவும்</translation> @@ -3577,6 +3577,7 @@ <translation id="4943368462779413526">கால்பந்து</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ஒரு சீரியல் போர்ட்டுடன் இணைக்க விரும்புகிறது</translation> <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> நிறுவனத்தின் மூலம் அடையாளச் சேவை ஹோஸ்ட் செய்யப்படுகிறது</translation> +<translation id="495164417696120157">{COUNT,plural, =1{ஒரு கோப்பினை}other{# கோப்புகளை}}</translation> <translation id="495170559598752135">செயல்கள்</translation> <translation id="4953808748584563296">இயல்பு ஆரஞ்சுநிற அவதார்</translation> <translation id="4955710816792587366">பின்னைத் தேர்ந்தெடுக்கவும்</translation> @@ -5077,6 +5078,7 @@ <translation id="6664237456442406323">எதிர்பாராதவிதமாக, உங்கள் கம்ப்யூட்டர் ஒரு தவறான வன்பொருள் ஐடியுடன் உள்ளமைக்கப்பட்டது. இது சமீபத்திய பாதுகாப்பு திருத்தங்களைக் கொண்டு Chrome OSஸைப் புதுப்பிப்பதிலிருந்து தடுக்கும், உங்கள் கம்ப்யூட்டர் <ph name="BEGIN_BOLD" />தீங்கிழைக்கும் தாக்குதல்களின்<ph name="END_BOLD" /> மூலம் பாதிக்கப்படலாம்.</translation> <translation id="6664774537677393800">சுயவிவரத்தைத் திறக்கும் போது, ஏதோ தவறாகிவிட்டது. வெளியேறி, மீண்டும் உள்நுழையவும்.</translation> <translation id="6670142487971298264">இப்போது <ph name="APP_NAME" /> ஆப்ஸைப் பயன்படுத்தலாம்</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{ஒரு முகவரியை}other{# முகவரிகளை}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">ஒத்திசைவைத் தொடங்க, கடவுச்சொற்றொடரை உள்ளிடவும்</translation> <translation id="6675665718701918026">சுட்டும் சாதனம் இணைக்கப்பட்டது</translation> @@ -5773,6 +5775,7 @@ <translation id="7456142309650173560">dev</translation> <translation id="7456847797759667638">இருப்பிடத்தைத் திற...</translation> <translation id="7457384018036134905">Chrome OS அமைப்புகளில் மொழிகளை நிர்வகியுங்கள்</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{ஓர் இணைப்பை}other{# இணைப்புகளை}}</translation> <translation id="7458168200501453431">Google தேடலில் பயன்படுத்தப்படும் அதே பிழைத்திருத்தியைப் பயன்படுத்தும். உலாவியில் நீங்கள் உள்ளிடும் உரை Googleளுக்கு அனுப்பப்படும்.</translation> <translation id="7460045493116006516">தற்போது நிறுவியுள்ள தீம்</translation> <translation id="7461924472993315131">நிலையாக வை</translation> @@ -6173,6 +6176,7 @@ <translation id="7883792253546618164">எப்போது வேண்டுமானாலும் குழுவிலகலாம்.</translation> <translation id="788453346724465748">கணக்குத் தகவல்களை ஏற்றுகிறது...</translation> <translation id="7885253890047913815">சமீபத்திய இலக்குகள்</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{ஓர் ஆவணத்தை}other{# ஆவணங்களை}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">பிரதி எடு</translation> <translation id="7887864092952184874">புளூடூத் மவுஸ் இணைக்கப்பட்டது</translation> @@ -6413,6 +6417,7 @@ <translation id="8139447493436036221">Google Drive கோப்புகள்</translation> <translation id="8141584439523427891">மாற்று உலாவியில் இப்போது திறக்கிறது</translation> <translation id="8141725884565838206">உங்கள் கடவுச்சொற்களை நிர்வகிக்கவும்</translation> +<translation id="814204052173971714">{COUNT,plural, =1{ஒரு வீடியோவை}other{# வீடியோக்களை}}</translation> <translation id="8143442547342702591">தவறான ஆப்ஸ்</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> ஐத் தேர்ந்தெடுங்கள்</translation> <translation id="8146177459103116374">இந்த சாதனத்தில் ஏற்கனவே பதிவுசெய்திருந்தால், <ph name="LINK2_START" />நடப்புப் பயனராக உள்நுழையலாம்<ph name="LINK2_END" />.</translation> @@ -6432,6 +6437,7 @@ <translation id="8161293209665121583">இணையப் பக்கங்களுக்கான படித்தல் பயன்முறை</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{தாவலைப் புதிய சாளரத்திற்கு நகர்த்து}other{தாவல்களைப் புதிய சாளரத்திற்கு நகர்த்து}}</translation> <translation id="8165997195302308593">Crostini போர்ட் அனுப்புதல்</translation> +<translation id="816704878106051517">{COUNT,plural, =1{ஒரு ஃபோன் எண்ணை}other{# ஃபோன் எண்களை}}</translation> <translation id="8168435359814927499">உள்ளடக்கம்</translation> <translation id="8168943654413034772">தேர்ந்தெடுப்பதற்கு ஒரு ஸ்விட்ச் மட்டுமே இருப்பதால் அதை அகற்ற முடியாது. வெளியேற ஏதாவது ஒரு விசையை அழுத்தவும்.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{தாவலை வாசிப்புப் பட்டியலில் சேர்}other{தாவல்களை வாசிப்புப் பட்டியலில் சேர்}}</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index dff9ce0b..92627126 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -1636,7 +1636,6 @@ <translation id="2766006623206032690">పే&స్ట్ చేసి ముందుకు వెళ్ళండి</translation> <translation id="2766161002040448006">తల్లి/తండ్రిని అడగండి</translation> <translation id="2767127727915954024">మీరు ఈ సైట్లో అన్ని ట్యాబ్లను మూసివేసే వరకు <ph name="ORIGIN" />, <ph name="FILENAME" />ను ఎడిట్ చేయగలదు</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" />గా సైన్ ఇన్ చేసారు.</translation> <translation id="2770465223704140727">లిస్ట్ నుండి తొలగించు</translation> <translation id="2770690685823456775">మీ పాస్వర్డ్లను మరో ఫోల్డర్కు ఎగుమతి చేయండి</translation> <translation id="2770929488047004208">మానిటర్ రిజల్యూషన్</translation> @@ -2392,6 +2391,7 @@ <translation id="3616741288025931835">బ్రౌజింగ్ డేటాను &క్లియర్ చేయి...</translation> <translation id="3617891479562106823">నేపథ్యాలు అందుబాటులో లేవు. తర్వాత మళ్లీ ప్రయత్నించండి.</translation> <translation id="3619115746895587757">కాపుచినో</translation> +<translation id="362266093274784978">{COUNT,plural, =1{యాప్}other{# యాప్లు}}</translation> <translation id="362333465072914957">CA, సర్టిఫికెట్ను జారీ చేయడం కోసం వేచి ఉంది</translation> <translation id="3624567683873126087">పరికరాన్ని అన్లాక్ చేసి, Google ఖాతాలోకి సైన్-ఇన్ చేయండి</translation> <translation id="3625481642044239431">చెల్లని ఫైల్ ఎంచుకోబడింది. మళ్లీ ప్రయత్నించండి.</translation> @@ -2663,6 +2663,7 @@ <translation id="3895076768659607631">సెర్చ్ ఇంజిన్లను &మేనేజ్ చేయండి...</translation> <translation id="3895090224522145010">Kerberos వినియోగదారు పేరు</translation> <translation id="389521680295183045">మీరు మీ పరికరాన్ని యాక్టివ్గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్లు అడగవచ్చు</translation> +<translation id="3897298432557662720">{COUNT,plural, =1{ఇమేజ్}other{# ఇమేజ్లు}}</translation> <translation id="3898233949376129212">పరికర భాష</translation> <translation id="3898327728850887246"><ph name="SITE_NAME" /> వీటిని చేయాలనుకుంటోంది: <ph name="FIRST_PERMISSION" />, <ph name="SECOND_PERMISSION" /></translation> <translation id="389901847090970821">కీబోర్డ్ను ఎంచుకోండి</translation> @@ -3576,6 +3577,7 @@ <translation id="4943368462779413526">ఫుట్బాల్</translation> <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ఈ సీరియల్ పోర్ట్లలో ఒకదానితో కనెక్ట్ (అనుసంధానం) కావాలని కోరుకుంటుంది</translation> <translation id="4944310289250773232">ఈ ప్రమాణీకరణ సేవ <ph name="SAML_DOMAIN" /> ద్వారా హోస్ట్ చేయబడుతోంది</translation> +<translation id="495164417696120157">{COUNT,plural, =1{ఫైల్}other{# ఫైల్లు}}</translation> <translation id="495170559598752135">చర్యలు</translation> <translation id="4953808748584563296">డిఫాల్ట్ నారింజ రంగు అవతార్</translation> <translation id="4955710816792587366">మీ పిన్ ఎంచుకోండి</translation> @@ -4643,6 +4645,7 @@ <translation id="6184099524311454384">ట్యాబ్లలో సెర్చ్ చేయండి</translation> <translation id="6185132558746749656">పరికర స్థానం</translation> <translation id="6186394437969115158">సైట్లు సాధారణంగా యాడ్లను చూపిస్తాయి, తద్వారా అవి కంటెంట్ లేదా సర్వీస్లను ఉచితంగా అందిస్తాయి. కానీ, కొన్ని సైట్లు అనుచితమైన లేదా తప్పుదారి పట్టించే యాడ్లను చూపిస్తాయి.</translation> +<translation id="6195005504600220730">మీ బ్రౌజర్, OS, పరికరం గురించి సమాచారాన్ని చదవండి</translation> <translation id="6195693561221576702">ఈ పరికరాన్ని ఆఫ్లైన్ డెమో మోడ్లో సెటప్ చేయలేరు.</translation> <translation id="6195724942939841102">రీస్టోర్ చేయవద్దు</translation> <translation id="6196640612572343990">థర్డ్ పార్టీ కుక్కీలను బ్లాక్ చేయండి</translation> @@ -5074,6 +5077,7 @@ <translation id="6664237456442406323">దురదృష్టవశాత్తూ, తప్పుగా ఫార్మాట్ చేయబడిన హార్డ్వేర్ IDతో మీ కంప్యూటర్ కాన్ఫిగర్ చేయబడింది. Chrome OSను తాజా భద్రతా పరిష్కారాలతో అప్డేట్ అవ్వకుండా ఇది నిరోధిస్తుంది, తద్వారా మీ కంప్యూటర్ <ph name="BEGIN_BOLD" />హానికరమైన దాడులకు గురి కావచ్చు<ph name="END_BOLD" />.</translation> <translation id="6664774537677393800">మీ ప్రొఫైల్ను తెరుస్తున్నప్పుడు ఏదో తప్పు జరిగింది. దయచేసి సైన్ అవుట్ చేసి, మళ్లీ సైన్ ఇన్ చేయండి.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> ఇప్పుడు అందుబాటులో ఉంది</translation> +<translation id="6671320560732140690">{COUNT,plural, =1{అడ్రస్}other{# అడ్రస్లు}}</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">సింక్ను ప్రారంభించడానికి, రహస్య పదబంధాన్ని ఎంటర్ చేయండి</translation> <translation id="6675665718701918026">కర్సర్ను నియంత్రించే పరికరం కనెక్ట్ చేయబడింది</translation> @@ -5770,6 +5774,7 @@ <translation id="7456142309650173560">డెవలపర్</translation> <translation id="7456847797759667638">స్థానాన్ని తెరువు...</translation> <translation id="7457384018036134905">Chrome OS సెట్టింగ్లలో భాషలను మేనేజ్ చేయండి</translation> +<translation id="7457831169406914076">{COUNT,plural, =1{లింక్}other{# లింక్లు}}</translation> <translation id="7458168200501453431">Google Searchలో ఉపయోగించే స్పెల్ చెకర్నే ఇక్కడ ఉపయోగిస్తుంది. మీరు బ్రౌజర్లో టైప్ చేసే టెక్స్ట్ను Googleకు పంపుతుంది.</translation> <translation id="7460045493116006516">మీరు ప్రస్తుతం ఇన్స్టాల్ చేసుకున్న థీమ్</translation> <translation id="7461924472993315131">పిన్ చేయి</translation> @@ -6169,6 +6174,7 @@ <translation id="7883792253546618164">ఏ సమయంలో అయినా సబ్స్క్రిప్షన్ను తీసివేయండి.</translation> <translation id="788453346724465748">ఖాతా సమాచారం లోడ్ అవుతోంది...</translation> <translation id="7885253890047913815">ఇటీవలి గమ్యస్థానాలు</translation> +<translation id="7886279613512920452">{COUNT,plural, =1{ఐటెమ్}other{# ఐటెమ్లు}}</translation> <translation id="7886605625338676841">eSIM</translation> <translation id="7887334752153342268">నకిలీ</translation> <translation id="7887864092952184874">బ్లూటూత్ మౌస్ జత చేయబడింది</translation> @@ -6406,6 +6412,7 @@ <translation id="8139447493436036221">Google Drive ఫైల్లు</translation> <translation id="8141584439523427891">ఇప్పుడు ప్రత్యామ్నాయ బ్రౌజర్లో తెరుస్తోంది</translation> <translation id="8141725884565838206">మీ పాస్వర్డ్లను నిర్వహించండి</translation> +<translation id="814204052173971714">{COUNT,plural, =1{వీడియో}other{# వీడియోలు}}</translation> <translation id="8143442547342702591">చెల్లని అప్లికేషన్</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />ని ఎంచుకోండి</translation> <translation id="8146177459103116374">మీరు ఇప్పటికే ఈ పరికరంలో నమోదు చేసి ఉంటే, మీరు <ph name="LINK2_START" />ఇప్పటికే ఉన్న వినియోగదారు వలే సైన్ ఇన్ చేయవచ్చు<ph name="LINK2_END" />.</translation> @@ -6425,6 +6432,7 @@ <translation id="8161293209665121583">వెబ్ పేజీల కోసం రీడర్ మోడ్</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ట్యాబ్ను కొత్త విండోకు తరలించు}other{ట్యాబ్లను కొత్త విండోకు తరలించు}}</translation> <translation id="8165997195302308593">Crostini పోర్ట్ ఫార్వర్డింగ్</translation> +<translation id="816704878106051517">{COUNT,plural, =1{ఫోన్ నంబర్}other{# ఫోన్ నంబర్లు}}</translation> <translation id="8168435359814927499">కంటెంట్</translation> <translation id="8168943654413034772">'ఎంచుకోండి'కి కేటాయించిన ఒకే స్విచ్ను తీసివేయడం సాధ్యపడలేదు. నిష్క్రమించడానికి ఏదైనా కీని నొక్కండి.</translation> <translation id="8169165065843881617">{NUM_TABS,plural, =1{చదవాల్సిన లిస్ట్కు ట్యాబ్ను జోడించండి}other{చదవాల్సిన లిస్ట్కు ట్యాబ్లను జోడించండి}}</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 3d59fee5..99b342b 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -349,6 +349,7 @@ <translation id="1383597849754832576">ดาวน์โหลดไฟล์คำพูดไม่ได้ โปรดลองอีกครั้งภายหลัง</translation> <translation id="1383861834909034572">เปิดไฟล์เมื่อดาวน์โหลดเสร็จสมบูรณ์</translation> <translation id="1383876407941801731">ค้นหา</translation> +<translation id="1384849755549338773">เสนอ Google แปลภาษาสำหรับเว็บไซต์ในภาษาอื่นๆ</translation> <translation id="1386791642444521222">เปิดใช้งานซิมจริง</translation> <translation id="138784436342154190">คืนค่าเป็นหน้าเริ่มต้นใช้งานเริ่มต้นไหม</translation> <translation id="1388253969141979417">ได้รับอนุญาตให้ใช้ไมโครโฟน</translation> @@ -871,6 +872,7 @@ <translation id="1920390473494685033">รายชื่อติดต่อ</translation> <translation id="1921050530041573580">จับคู่โทรศัพท์กับ Messages</translation> <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation> +<translation id="1923468477587371721">เว็บไซต์ของ Google อย่างเช่น Gmail, ไดรฟ์ และ YouTube ใช้ภาษาของบัญชี Google ยกเว้นว่าคุณได้เปลี่ยนภาษาของแต่ละผลิตภัณฑ์</translation> <translation id="192494336144674234">เปิดด้วย</translation> <translation id="1925017091976104802">กด <ph name="MODIFIER_KEY_DESCRIPTION" /> เพื่อวาง</translation> <translation id="1925021887439448749">ป้อนที่อยู่เว็บที่กำหนดเอง</translation> @@ -1331,7 +1333,6 @@ <translation id="2440604414813129000">ดูโ&ค้ดต้นฉบับ</translation> <translation id="244231003699905658">ที่อยู่ไม่ถูกต้อง โปรดตรวจสอบที่อยู่แล้วลองอีกครั้ง</translation> <translation id="2442916515643169563">เงาของข้อความ</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">จำเป็นต้องระบุไดเรกทอรีหลักของส่วนขยาย</translation> <translation id="2445484935443597917">สร้างโปรไฟล์ใหม่</translation> <translation id="2448312741937722512">ประเภท</translation> @@ -1637,7 +1638,6 @@ <translation id="2766006623206032690">&วางแล้วไป</translation> <translation id="2766161002040448006">ถามผู้ปกครอง</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> จะแก้ไข <ph name="FILENAME" /> ได้อยู่จนกว่าคุณจะปิดทุกแท็บของเว็บไซต์นี้</translation> -<translation id="276969039800130567">ลงชื่อเข้าใช้โดยใช้ <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="2770465223704140727">ลบจากรายการ</translation> <translation id="2770690685823456775">ส่งออกรหัสผ่านไปยังโฟลเดอร์อื่น</translation> <translation id="2770929488047004208">ความละเอียดของจอภาพ</translation> @@ -1955,6 +1955,7 @@ <translation id="311394601889664316">ไม่อนุญาตให้เว็บไซต์แก้ไขไฟล์หรือโฟลเดอร์ในอุปกรณ์ของคุณ</translation> <translation id="3115147772012638511">กำลังรอแคช...</translation> <translation id="3115580024857770654">ยุบทั้งหมด</translation> +<translation id="3115743155098198207">จัดการภาษาของบัญชี Google</translation> <translation id="3117362587799608430">แท่นชาร์จไม่ค่อยเข้ากัน</translation> <translation id="3117791853215125017">{COUNT,plural, =1{ส่ง <ph name="ATTACHMENTS" />ไปยัง <ph name="DEVICE_NAME" /> ไม่สำเร็จ}other{ส่ง <ph name="ATTACHMENTS" />ไปยัง <ph name="DEVICE_NAME" /> ไม่สำเร็จ}}</translation> <translation id="3118319026408854581">ความช่วยเหลือของ <ph name="PRODUCT_NAME" /></translation> @@ -2374,6 +2375,7 @@ <translation id="3599863153486145794">ล้างประวัติจากอุปกรณ์ที่ลงชื่อเข้าใช้ทั้งหมด บัญชี Google อาจมีประวัติการท่องเว็บรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation> <translation id="3600051066689725006">ข้อมูลคำขอเว็บ</translation> <translation id="3600792891314830896">ปิดเสียงเว็บไซต์ที่เล่นเสียง</translation> +<translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation> <translation id="360180734785106144">นำเสนอฟีเจอร์ใหม่ๆ เมื่อพร้อมให้บริการ</translation> <translation id="3602290021589620013">ดูตัวอย่าง</translation> <translation id="3602870520245633055">พิมพ์และสแกน</translation> @@ -3699,6 +3701,7 @@ <translation id="5107443654503185812">ส่วนขยายหนึ่งได้ปิด Google Safe Browsing ไป</translation> <translation id="5108967062857032718">การตั้งค่า - นำแอป Android ออก</translation> <translation id="5109044022078737958">มีอา</translation> +<translation id="5109816792918100764">นำภาษา<ph name="LANGUAGE_NAME" />ออก</translation> <translation id="5111646998522066203">ออกจากโหมดไม่ระบุตัวตน</translation> <translation id="5111692334209731439">&ตัวจัดการบุ๊กมาร์ก</translation> <translation id="5112577000029535889">&เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์</translation> @@ -4439,6 +4442,7 @@ <translation id="5943127421590245687">ยืนยันสำเร็จ โปรดป้อนรหัสผ่านเก่าของ <ph name="DEVICE_TYPE" /> เพื่อปลดล็อกและกู้คืนข้อมูลในเครื่อง</translation> <translation id="5944869793365969636">สแกนคิวอาร์โค้ด</translation> <translation id="5945002094477276055"><ph name="FILE_NAME" /> อาจเป็นอันตราย ส่งไปให้ Google Safe Browsing สแกนไหม</translation> +<translation id="5945363896952315544">คีย์ความปลอดภัยเก็บลายนิ้วมือไม่ได้อีก หากต้องการเพิ่มใหม่ ให้ลบลายนิ้วมือที่มีอยู่ออกก่อน</translation> <translation id="5946591249682680882">รหัสรายงาน <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5948536763493709626">เชื่อมต่อแป้นพิมพ์หรือเมาส์ หรือตั้งค่าต่อโดยใช้หน้าจอสัมผัส หากกำลังใช้อุปกรณ์บลูทูธ ให้ตรวจสอบว่าอุปกรณ์พร้อมที่จะจับคู่</translation> <translation id="5949544233750246342">ไม่สามารถแยกวิเคราะห์ไฟล์</translation> @@ -5384,6 +5388,7 @@ <translation id="7001036685275644873">กำลังสำรองข้อมูลแอปและไฟล์ Linux</translation> <translation id="7002055706763150362">ในการตั้งค่า Smart Lock สำหรับ Chromebook นั้น Google จะต้องตรวจสอบว่าเป็นคุณจริงๆ โปรดพิมพ์รหัสผ่านเพื่อเริ่มต้นใช้งาน</translation> <translation id="7003339318920871147">ฐานข้อมูลเว็บ</translation> +<translation id="7003454175711353260">{COUNT,plural, =1{{COUNT} ไฟล์}other{{COUNT} ไฟล์}}</translation> <translation id="7003723821785740825">ตั้งค่าวิธีปลดล็อกอุปกรณ์ที่เร็วขึ้น</translation> <translation id="7003844668372540529">ผลิตภัณฑ์ที่ไม่รู้จัก <ph name="PRODUCT_ID" /> จาก <ph name="VENDOR_NAME" /></translation> <translation id="7004402701596653846">เว็บไซต์ใช้ MIDI ได้</translation> @@ -5648,6 +5653,7 @@ <translation id="7306521477691455105">เปิดการตั้งค่าเพื่อเชื่อมต่อ <ph name="USB_DEVICE_NAME" /> กับ <ph name="USB_VM_NAME" /></translation> <translation id="7307129035224081534">หยุดชั่วคราว</translation> <translation id="7308436126008021607">การซิงค์ในเบื้องหลัง</translation> +<translation id="7308643132139167865">ภาษาของเว็บไซต์</translation> <translation id="7309257895202129721">แสดงปุ่ม&ควบคุม</translation> <translation id="7310598146671372464">เข้าสู่ระบบไม่สำเร็จ เซิร์ฟเวอร์ไม่รองรับประเภทการเข้ารหัส Kerberos ที่ระบุ โปรดติดต่อผู้ดูแลระบบ</translation> <translation id="7320213904474460808">เครือข่ายเริ่มต้น</translation> @@ -5859,6 +5865,7 @@ <translation id="7552846755917812628">ลองทำตามเคล็ดลับต่อไปนี้:</translation> <translation id="7553012839257224005">กำลังตรวจสอบคอนเทนเนอร์ Linux</translation> <translation id="7553242001898162573">ป้อนรหัสผ่าน</translation> +<translation id="755472745191515939">ผู้ดูแลระบบไม่อนุญาตภาษานี้</translation> <translation id="7554791636758816595">แท็บใหม่</translation> <translation id="7556033326131260574">Smart Lock ไม่สามารถยืนยันบัญชีของคุณได้ โปรดพิมพ์รหัสผ่านเพื่อเข้าใช้งาน</translation> <translation id="7556242789364317684">ขออภัย <ph name="SHORT_PRODUCT_NAME" /> ไม่สามารถกู้คืนการตั้งค่าของคุณได้ หากต้องการแก้ไขข้อผิดพลาด <ph name="SHORT_PRODUCT_NAME" /> ต้องรีเซ็ตอุปกรณ์ของคุณด้วย Powerwash</translation> @@ -6160,6 +6167,7 @@ <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> <translation id="786073089922909430">บริการ: <ph name="ARC_PROCESS_NAME" /></translation> <translation id="7861215335140947162">&ดาวน์โหลด</translation> +<translation id="7861846108263890455">ภาษาของบัญชี Google</translation> <translation id="7864539943188674973">ปิดใช้งานบลูทูธ</translation> <translation id="786957569166715433"><ph name="DEVICE_NAME" /> - จับคู่แล้ว</translation> <translation id="7870730066603611552">ตรวจสอบตัวเลือกการซิงค์หลังการตั้งค่า</translation> @@ -6422,6 +6430,7 @@ <translation id="8143442547342702591">แอปพลิเคชันไม่ถูกต้อง</translation> <translation id="8143951647992294073">เลือก <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation> <translation id="8146177459103116374">หากคุณได้ลงทะเบียนในอุปกรณ์นี้แล้ว คุณสามารถ<ph name="LINK2_START" />ลงชื่อเข้าใช้ในฐานะผู้ใช้ที่มีอยู่แล้ว<ph name="LINK2_END" />ได้</translation> +<translation id="8146287226035613638">เพิ่มและจัดอันดับภาษาที่ต้องการ เว็บไซต์จะแสดงในภาษาที่คุณต้องการ เมื่อเป็นไปได้ ระบบจะซิงค์ค่ากำหนดเหล่านี้กับการตั้งค่าเบราว์เซอร์ <ph name="BEGIN_LINK_LEARN_MORE" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="8146793085009540321">การลงชื่อเข้าใช้ไม่สำเร็จ โปรดติดต่อผู้ดูแลระบบหรือลองอีกครั้ง</translation> <translation id="8147900440966275470">พบ <ph name="NUM" /> แท็บ</translation> <translation id="8148760431881541277">จำกัดการลงชื่อเข้าใช้</translation> @@ -7433,6 +7442,7 @@ <translation id="983511809958454316">ฟีเจอร์นี้ใช้ไม่ได้ใน VR</translation> <translation id="984136553749462603">เมื่อเล่นเนื้อหาที่ได้รับการคุ้มครองโดยลิขสิทธิ์ เว็บไซต์อาจขอจดจำอุปกรณ์ของคุณ</translation> <translation id="984275831282074731">วิธีการชำระเงิน</translation> +<translation id="984705303330760860">เพิ่มภาษาที่ใช้การตรวจตัวสะกดได้</translation> <translation id="98515147261107953">แนวนอน</translation> <translation id="987068745968718743">Parallels Desktop: <ph name="PLUGIN_VM_NAME" /></translation> <translation id="987264212798334818">ทั่วไป</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index febde05a..5f8d530 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Ka&ynağı görüntüle</translation> <translation id="244231003699905658">Geçersiz adres. Lütfen adresi kontrol edip tekrar deneyin.</translation> <translation id="2442916515643169563">Metin gölgesi</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Uzantı kök dizini gerekiyor.</translation> <translation id="2445484935443597917">Yeni Profil Oluştur</translation> <translation id="2448312741937722512">Tür</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">Ya&pıştır ve git</translation> <translation id="2766161002040448006">Ebeveyninize sorun</translation> <translation id="2767127727915954024"><ph name="ORIGIN" />, siz bu siteye ait tüm sekmeleri kapatana kadar <ph name="FILENAME" /> dosyasını düzenleyebilecek</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> olarak oturum açıldı.</translation> <translation id="2770465223704140727">Listeden kaldır</translation> <translation id="2770690685823456775">Şifrelerinizi başka bir klasöre dışa aktarın</translation> <translation id="2770929488047004208">Monitör çözünürlüğü</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index bc8781d..0015d2d 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1334,7 +1334,6 @@ <translation id="2440604414813129000">Див. д&жерело</translation> <translation id="244231003699905658">Недійсна адреса. Перевірте адресу та повторіть спробу.</translation> <translation id="2442916515643169563">Тінь тексту</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Потрібен кореневий каталог розширення.</translation> <translation id="2445484935443597917">Створити новий профіль</translation> <translation id="2448312741937722512">Тип</translation> @@ -1640,7 +1639,6 @@ <translation id="2766006623206032690">Вста&вити та перейти</translation> <translation id="2766161002040448006">Попросити батьків</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> зможе змінювати файл "<ph name="FILENAME" />", поки ви не закриєте всі вкладки для цього сайту</translation> -<translation id="276969039800130567">Ви ввійшли як <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Видалити зі списку</translation> <translation id="2770690685823456775">Експортуйте паролі в іншу папку</translation> <translation id="2770929488047004208">Роздільна здатність монітора</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 9460608..cee0039 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1636,7 +1636,6 @@ <translation id="2766006623206032690">پی&سٹ کریں اور جائیں</translation> <translation id="2766161002040448006">والدین سے پوچھیں</translation> <translation id="2767127727915954024">اس سائٹ کے لیے آپ کے سبھی ٹیبز کو بند کرنے تک <ph name="ORIGIN" /> <ph name="FILENAME" /> میں ترمیم کر سکے گا</translation> -<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> کے بطور سائن ان کردہ۔</translation> <translation id="2770465223704140727">فہرست سے ہٹائیں</translation> <translation id="2770690685823456775">اپنے پاسورڈز کو کسی دوسرے فولڈر میں برآمد کریں</translation> <translation id="2770929488047004208">مانیٹر کا ریزولیوشن</translation> @@ -4643,6 +4642,7 @@ <translation id="6184099524311454384">ٹیبز تلاش کریں</translation> <translation id="6185132558746749656">آلہ کا مقام</translation> <translation id="6186394437969115158">سائٹس عام طور پر اشتہارات دکھاتی ہیں تاکہ وہ مفت میں مواد یا سروسز فراہم کر سکیں۔ لیکن کچھ سائٹس دخل انداز یا گمراہ کن اشتہارات دکھانے کے لیے جانی جاتی ہیں۔</translation> +<translation id="6195005504600220730">اپنے براؤزر، OS اور آلے کے متعلق معلومات پڑھیں</translation> <translation id="6195693561221576702">اس آلہ کو آف لائن ڈیمو موڈ میں سیٹ نہیں کیا جا سکتا ہے۔</translation> <translation id="6195724942939841102">بحال نہ کریں</translation> <translation id="6196640612572343990">فریق ثالث کوکیز کو مسدود کریں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 3640bcc..4a3d959 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -1329,7 +1329,6 @@ <translation id="2440604414813129000">Sahifa &kodini ko‘rish</translation> <translation id="244231003699905658">Xato manzil. Manzilni tekshirib, qaytadan urining.</translation> <translation id="2442916515643169563">Matn soyasi</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Kengaytma tub katalogi talab qilinadi.</translation> <translation id="2445484935443597917">Yangi profil yaratish</translation> <translation id="2448312741937722512">Turi</translation> @@ -1635,7 +1634,6 @@ <translation id="2766006623206032690">&Joylash va o‘tish</translation> <translation id="2766161002040448006">Ota-onangizdan soʻrang</translation> <translation id="2767127727915954024">Bu sayt uchun barcha varaqlarni yopmasangiz, <ph name="ORIGIN" /> sayti <ph name="FILENAME" /> faylini tahrirlay oladi</translation> -<translation id="276969039800130567">Siz <ph name="USER_EMAIL_ADDRESS" /> nomidan kirdingiz.</translation> <translation id="2770465223704140727">Ro‘yxatdan o‘chirish</translation> <translation id="2770690685823456775">Parollaringizni boshqa jildga eksport qiling</translation> <translation id="2770929488047004208">Ekrandagi tasvir tiniqligi</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 86948330..be581ba 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -1331,7 +1331,6 @@ <translation id="2440604414813129000">Xem &nguồn</translation> <translation id="244231003699905658">Địa chỉ không hợp lệ. Vui lòng kiểm tra địa chỉ rồi thử lại.</translation> <translation id="2442916515643169563">Đổ bóng văn bản</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Thư mục gốc của tiện ích là bắt buộc.</translation> <translation id="2445484935443597917">Tạo hồ sơ mới</translation> <translation id="2448312741937722512">Loại</translation> @@ -1637,7 +1636,6 @@ <translation id="2766006623206032690">Dán và tru&y cập</translation> <translation id="2766161002040448006">Xin phép cha mẹ</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> sẽ có thể chỉnh sửa <ph name="FILENAME" /> cho đến khi bạn đóng tất cả các thẻ cho trang web này</translation> -<translation id="276969039800130567">Đăng nhập bằng địa chỉ <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Xóa khỏi danh sách</translation> <translation id="2770690685823456775">Xuất mật khẩu của bạn sang thư mục khác</translation> <translation id="2770929488047004208">Độ phân giải màn hình</translation> @@ -4338,7 +4336,7 @@ <translation id="583281660410589416">Không xác định</translation> <translation id="5832976493438355584">Đã khóa</translation> <translation id="5833397272224757657">Dùng nội dung trên trang web bạn truy cập cũng như các tương tác và hoạt động trên trình duyệt để cá nhân hóa</translation> -<translation id="5833726373896279253">Chỉ chủ sở hữu mới có thể sửa đổi các tùy chọn cài đặt này:</translation> +<translation id="5833726373896279253">Chỉ chủ sở hữu mới có thể sửa đổi các chế độ cài đặt này:</translation> <translation id="5834581999798853053">Còn khoảng <ph name="TIME" /> phút</translation> <translation id="5835486486592033703"><ph name="WINDOW_TITLE" /> - Đang ghi âm hoặc quay phim</translation> <translation id="5840680448799937675">Tệp sẽ luôn được chia sẻ mà không dùng Internet</translation> @@ -7042,7 +7040,7 @@ <translation id="8846132060409673887">Đọc thông tin về nhà sản xuất và kiểu máy của máy tính này</translation> <translation id="8847523528195140327">Đăng xuất khi đóng nắp màn hình</translation> <translation id="8847988622838149491">USB</translation> -<translation id="8849001918648564819">Ẩn</translation> +<translation id="8849001918648564819">Đã ẩn</translation> <translation id="8850251000316748990">Xem thêm...</translation> <translation id="885246833287407341">Đối số hàm API</translation> <translation id="8853586775156634952">Thẻ này sẽ chỉ được lưu vào thiết bị này</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index 404b4dc3..3367193 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -1631,7 +1631,6 @@ <translation id="2766006623206032690">粘贴并转到(&S)</translation> <translation id="2766161002040448006">询问家长的意见</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> 将能够修改“<ph name="FILENAME" />”中的内容,除非您关闭此网站的所有标签页</translation> -<translation id="276969039800130567">您已用 <ph name="USER_EMAIL_ADDRESS" /> 的身份登录。</translation> <translation id="2770465223704140727">从列表中移除</translation> <translation id="2770690685823456775">将您的密码导出到其他文件夹</translation> <translation id="2770929488047004208">显示器分辨率</translation> @@ -4640,6 +4639,7 @@ <translation id="6184099524311454384">搜索标签页</translation> <translation id="6185132558746749656">设备位置</translation> <translation id="6186394437969115158">网站通常会显示广告,以便能够免费提供内容或服务。但是,我们已知某些网站会展示侵扰性或误导性广告。</translation> +<translation id="6195005504600220730">读取您的浏览器、操作系统和设备的相关信息</translation> <translation id="6195693561221576702">无法在此设备上设置离线演示模式。</translation> <translation id="6195724942939841102">不恢复</translation> <translation id="6196640612572343990">阻止第三方 Cookie</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 0c1195cb..675458d 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">檢視原始碼(&O)</translation> <translation id="244231003699905658">地址無效。請檢查地址,然後再試一次。</translation> <translation id="2442916515643169563">文字陰影</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">請指定擴充功能根目錄。</translation> <translation id="2445484935443597917">建立新的設定檔</translation> <translation id="2448312741937722512">類型</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">貼上及前往(&S)</translation> <translation id="2766161002040448006">詢問家長</translation> <translation id="2767127727915954024">在您關閉此網站的所有分頁前,<ph name="ORIGIN" /> 都能編輯「<ph name="FILENAME" />」</translation> -<translation id="276969039800130567">以 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入。</translation> <translation id="2770465223704140727">從清單中移除</translation> <translation id="2770690685823456775">將您的密碼匯出至其他資料夾</translation> <translation id="2770929488047004208">顯示器解像度</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 4dc84e0..3eba86b 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">檢視原始碼(&O)</translation> <translation id="244231003699905658">位址無效。請檢查位址是否正確,然後再試一次。</translation> <translation id="2442916515643169563">文字陰影</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">請指定擴充功能根目錄。</translation> <translation id="2445484935443597917">建立新的個人資料</translation> <translation id="2448312741937722512">類型</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">貼上及前往(&S)</translation> <translation id="2766161002040448006">詢問家長</translation> <translation id="2767127727915954024">在你關閉這個網站的所有分頁前,<ph name="ORIGIN" /> 都可以編輯「<ph name="FILENAME" />」</translation> -<translation id="276969039800130567">以 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入。</translation> <translation id="2770465223704140727">從清單中移除</translation> <translation id="2770690685823456775">將你的密碼匯出至其他資料夾</translation> <translation id="2770929488047004208">顯示器解析度</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 9bc4096..89ad6bb 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -1330,7 +1330,6 @@ <translation id="2440604414813129000">Buka umthombo</translation> <translation id="244231003699905658">Ikheli elingavumelekile. Sicela uhlole ikheli uphinde uzame futhi.</translation> <translation id="2442916515643169563">Umthunzi wombhalo</translation> -<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation> <translation id="2445081178310039857">Kudingeka impande yesandiso somkhombandlela.</translation> <translation id="2445484935443597917">Dala iphrofayela entsha</translation> <translation id="2448312741937722512">Uhlobo</translation> @@ -1636,7 +1635,6 @@ <translation id="2766006623206032690">Namathisela uphinde uhambe</translation> <translation id="2766161002040448006">Buza umzali</translation> <translation id="2767127727915954024">I-<ph name="ORIGIN" /> izokwazi ukuhlela i-<ph name="FILENAME" /> kuze kube yilapho uvala wonke amathebhu wale sayithi</translation> -<translation id="276969039800130567">Ingene ngemvume njengo-<ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2770465223704140727">Susa kusuka kuhlu</translation> <translation id="2770690685823456775">Thumela amaphasiwedi akho kwenye ifolda</translation> <translation id="2770929488047004208">Gada ukulungiswa</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb index 6cad626..28062f2 100644 --- a/chrome/app/resources/google_chrome_strings_as.xtb +++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -257,6 +257,7 @@ <translation id="7905891027772979035">Chromeএ আপোনাৰ এক্সটেনশ্বনসমূহ পৰীক্ষা কৰিব নোৱাৰে। পাছত আকৌ চেষ্টা কৰক।</translation> <translation id="7930071585467473040">Google Chromeএ পাছৱর্ডসমূহ প্ৰতিলিপি কৰিবলৈ চেষ্টা কৰি আছে।</translation> <translation id="7962410387636238736">এতিয়াৰ পৰা Windows XP আৰু Windows Vista সমৰ্থন কৰা নহয় বাবে এই কম্পিউটাৰটোৱে এতিয়াৰে পৰা Google Chromeৰ আপডে'টসমূহ নাপাব</translation> +<translation id="79947657522496226"><ph name="BEGIN_LINK_LINUX_OSS" />Linux বিকাশৰ পৰিৱেশ<ph name="END_LINK_LINUX_OSS" />ৰ দৰে অতিৰিক্ত <ph name="BEGIN_LINK_CROS_OSS" />মুক্ত উৎসৰ ছফ্টৱেৰ<ph name="END_LINK_CROS_OSS" />ৰ জৰিয়তে Chrome OSক ব্যৱহাৰযোগ্য কৰা হৈছে।</translation> <translation id="8008534537613507642">Chrome পুনৰ ইনষ্টল কৰক</translation> <translation id="8013993649590906847">যদি কোনো প্ৰতিচ্ছবিত উপযোগী বিৱৰণ নাই তেন্তে Chromeএ আপোনাক সেয়া প্ৰদান কৰিবলৈ চেষ্টা কৰিব। বিৱৰণ সৃষ্টি কৰিবলৈ প্ৰতিচ্ছবি Googleলৈ প্ৰেৰণ কৰা হয়।</translation> <translation id="8129812357326543296">&Google Chromeৰ বিষয়ে</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb index eaab9c69..ac48b9e7 100644 --- a/chrome/app/resources/google_chrome_strings_bn.xtb +++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -253,6 +253,7 @@ <translation id="7905891027772979035">Chrome আপনার এক্সটেনশনগুলি চেক করে দেখতে পারছে না। পরে আবার চেষ্টা করুন।</translation> <translation id="7930071585467473040">Google Chrome পাসওয়ার্ড কপি করার চেষ্টা করছে।</translation> <translation id="7962410387636238736">Windows XP ও Windows Vista আর সমর্থিত না হওয়ার জন্য এই কম্পিউটারে আর Google Chrome আপডেট পাবে না</translation> +<translation id="79947657522496226"><ph name="BEGIN_LINK_LINUX_OSS" />Linux ডেভেলপমেন্ট এনভায়রনমেন্ট<ph name="END_LINK_LINUX_OSS" />-এর ক্ষেত্রে যেমন করা হয়েছে, তেমনভাবে অতিরিক্ত <ph name="BEGIN_LINK_CROS_OSS" />ওপেন সোর্স সফ্টওয়্যার<ph name="END_LINK_CROS_OSS" />-এর মাধ্যমে Chrome OS তৈরি করা সম্ভব হয়েছে।</translation> <translation id="8008534537613507642">Chrome আবার ইন্সটল করুন</translation> <translation id="8013993649590906847">যদি ছবিতে প্রয়োজনীয় বিবরণ দেওয়া না থাকে, তাহলে Chrome আপনাকে একটি বিবরণ দেওয়ার চেষ্টা করবে। বিবরণ তৈরির জন্য, Google-এ ছবি পাঠানো হয়।</translation> <translation id="8129812357326543296">&Google Chrome সম্বন্ধে</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb index 61d4f15..3003eec6 100644 --- a/chrome/app/resources/google_chrome_strings_fr.xtb +++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -255,7 +255,7 @@ <translation id="7905891027772979035">Chrome ne parvient pas à vérifier vos extensions. Réessayez plus tard.</translation> <translation id="7930071585467473040">Google Chrome tente de copier les mots de passe.</translation> <translation id="7962410387636238736">Cet ordinateur ne recevra plus les mises à jour de Google Chrome, car la compatibilité n'est plus assurée sur Windows XP et Windows Vista</translation> -<translation id="79947657522496226">Chrome OS fonctionne grâce à d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels Open Source<ph name="END_LINK_CROS_OSS" />, tout comme l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" />.</translation> +<translation id="79947657522496226">Chrome OS dépend d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels Open Source<ph name="END_LINK_CROS_OSS" />, et l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" /> en est un.</translation> <translation id="8008534537613507642">Réinstaller Chrome</translation> <translation id="8013993649590906847">Si une image n'est pas accompagnée d'une description utile, Chrome essaiera de vous en proposer une. Pour nous permettre de créer des descriptions, les images sont envoyées à Google.</translation> <translation id="8129812357326543296">À propos de &Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb index b68abc5..3dba48d7 100644 --- a/chrome/app/resources/google_chrome_strings_gu.xtb +++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -257,6 +257,7 @@ <translation id="7905891027772979035">Chrome તમારા એક્સ્ટેંશન ચેક કરી શકતું નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> <translation id="7930071585467473040">Google Chrome પાસવર્ડની કૉપિ કરવાનો પ્રયાસ કરી રહ્યું છે.</translation> <translation id="7962410387636238736">આ કમ્પ્યુટર હવેથી Google Chrome અપડેટ મેળવી શકશે નહીં કારણકે Windows XP અને Windows Vista હવે સમર્થિત રહ્યાં નથી</translation> +<translation id="79947657522496226"><ph name="BEGIN_LINK_LINUX_OSS" />Linux ડેવલપમેન્ટ વાતાવરણ<ph name="END_LINK_LINUX_OSS" />ની જેમ, Chrome OS વધારાના <ph name="BEGIN_LINK_CROS_OSS" />ઓપન સૉર્સ સૉફ્ટવેર<ph name="END_LINK_CROS_OSS" /> દ્વારા તૈયાર કરવામાં આવ્યું છે.</translation> <translation id="8008534537613507642">Chrome ફરીથી ઇન્સ્ટોલ કરો</translation> <translation id="8013993649590906847">જો છબીમાં ઉપયોગી વર્ણન ન હોય, તો Chrome તમને વર્ણન પૂરું પાડવાનો પ્રયાસ કરશે. વર્ણન બનાવવા માટે, Googleને છબીઓ મોકલવામાં આવે છે.</translation> <translation id="8129812357326543296">&Google Chrome વિશે</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb index a442c85e..57493e0 100644 --- a/chrome/app/resources/google_chrome_strings_it.xtb +++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -247,7 +247,7 @@ <translation id="7905891027772979035">Chrome non può controllare le tue estensioni. Riprova più tardi.</translation> <translation id="7930071585467473040">Google Chrome sta cercando di copiare le password.</translation> <translation id="7962410387636238736">Questo computer non riceverà più gli aggiornamenti di Google Chrome perché Windows XP e Windows Vista non sono più supportati.</translation> -<translation id="79947657522496226">La realizzazione di Chrome OS è stata possibile grazie a <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivo, noto come <ph name="BEGIN_LINK_LINUX_OSS" />ambiente di sviluppo Linux<ph name="END_LINK_LINUX_OSS" />.</translation> +<translation id="79947657522496226">La realizzazione di Chrome OS è stata possibile grazie a un <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivo, noto come <ph name="BEGIN_LINK_LINUX_OSS" />ambiente di sviluppo Linux<ph name="END_LINK_LINUX_OSS" />.</translation> <translation id="8008534537613507642">Reinstalla Chrome</translation> <translation id="8013993649590906847">Se un'immagine è senza descrizione utile, Chrome proverà a fornirne una. Per la creazione delle descrizioni, le immagini vengono inviate a Google.</translation> <translation id="8129812357326543296">Informazioni su &Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb index 264bede7..fcb95738d 100644 --- a/chrome/app/resources/google_chrome_strings_kk.xtb +++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -256,7 +256,7 @@ <translation id="7905891027772979035">Chrome браузері кеңейтімдеріңізді тексере алмайды. Кейінірек қайталап көріңіз.</translation> <translation id="7930071585467473040">Google Chrome құпия сөздерді көшіргісі келеді.</translation> <translation id="7962410387636238736">Windows XP және Windows Vista жүйелеріне қолдау көрсетілмейтіндіктен, бұл компьютер енді Google Chrome жаңартылған нұсқаларын қабылдамайды</translation> -<translation id="79947657522496226">Chrome OS операциялық жүйесі де <ph name="BEGIN_LINK_LINUX_OSS" />Linux әзірлеу ортасы<ph name="END_LINK_LINUX_OSS" /> сияқты<ph name="BEGIN_LINK_CROS_OSS" />ашық кодты бағдарламалық құрал<ph name="END_LINK_CROS_OSS" /> арқасында қолжетімді болды.</translation> +<translation id="79947657522496226">Chrome OS операциялық жүйесі де <ph name="BEGIN_LINK_LINUX_OSS" />Linux әзірлеу ортасы<ph name="END_LINK_LINUX_OSS" /> сияқты <ph name="BEGIN_LINK_CROS_OSS" />ашық кодты бағдарламалық құрал<ph name="END_LINK_CROS_OSS" /> арқасында қолжетімді болды.</translation> <translation id="8008534537613507642">Chrome қайта орнату</translation> <translation id="8013993649590906847">Егер суреттің пайдалы сипаттамасы болмаса, Chrome оны өзі ұсынып көреді. Сипаттамалар жасау үшін суреттер Google-ға жіберіледі.</translation> <translation id="8129812357326543296">Google Chrome туралы ақпарат</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mr.xtb b/chrome/app/resources/google_chrome_strings_mr.xtb index c803587..66837e7 100644 --- a/chrome/app/resources/google_chrome_strings_mr.xtb +++ b/chrome/app/resources/google_chrome_strings_mr.xtb
@@ -255,6 +255,7 @@ <translation id="7905891027772979035">Chrome तुमची एक्स्टेंशन तपासू शकत नाही. नंतर पुन्हा प्रयत्न करा.</translation> <translation id="7930071585467473040">Google Chrome पासवर्ड कॉपी करण्याचा प्रयत्न करत आहे.</translation> <translation id="7962410387636238736">Windows XP आणि Windows Vista ला आता सपोर्ट नसल्याने या कॉंप्युटरला यापुढे Google Chrome अपडेट मिळणार नाहीत</translation> +<translation id="79947657522496226">Chrome OS हे <ph name="BEGIN_LINK_LINUX_OSS" />Linux डेव्हलपमेंट पद्धत<ph name="END_LINK_LINUX_OSS" /> यासारख्या अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />मुक्त स्रोत सॉफ्टवेअर<ph name="END_LINK_CROS_OSS" /> याद्वारे तयार करण्यात आले आहे.</translation> <translation id="8008534537613507642">Chrome पुनर्स्थापित करा</translation> <translation id="8013993649590906847">इमेजचे उपयोगी वर्णन नसल्यास, Chrome तुमच्यासाठी ते देण्याचा प्रयत्न करेल. वर्णने तयार करण्यासाठी, इमेज Google ला पाठवल्या जातात.</translation> <translation id="8129812357326543296">&Google Chrome विषयी</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ne.xtb b/chrome/app/resources/google_chrome_strings_ne.xtb index f09e153..80cc4369 100644 --- a/chrome/app/resources/google_chrome_strings_ne.xtb +++ b/chrome/app/resources/google_chrome_strings_ne.xtb
@@ -253,6 +253,7 @@ <translation id="7905891027772979035">Chrome ले तपाईंका एक्स्टेन्सनहरूको जाँच गर्न सकेन। पछि फेरि प्रयास गर्नुहोस्।</translation> <translation id="7930071585467473040">Google Chrome ले पासवर्डहरू प्रतिलिपि गर्ने प्रयास गर्दै छ।</translation> <translation id="7962410387636238736">Windows XP र Windows Vista अब उप्रान्त समर्थित नभएकाले अब उप्रान्त यस कम्प्युटरले Google Chrome का अद्यावधिकहरू प्राप्त गर्ने छैन</translation> +<translation id="79947657522496226">Chrome OS पनि <ph name="BEGIN_LINK_LINUX_OSS" />Linux डेभलपमेन्ट इनभारमेन्ट<ph name="END_LINK_LINUX_OSS" /> जस्तै अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />खुला स्रोतको सफ्टवेयर<ph name="END_LINK_CROS_OSS" /> प्रयोग गरी निर्माण गरिएको हो।</translation> <translation id="8008534537613507642">Chrome लाई पुन: स्थापना गर्नुहोस्</translation> <translation id="8013993649590906847">कुनै छविमा उपयोगी विवरण नभएका खण्डमा Chrome ले तपाईंलाई एउटा विवरण उपलब्ध गराउने प्रयास गर्ने छ। विवरणहरू सिर्जना गर्न छविहरू Google मा पठाइन्छ।</translation> <translation id="8129812357326543296">&Google Chrome बारे</translation>
diff --git a/chrome/app/resources/google_chrome_strings_or.xtb b/chrome/app/resources/google_chrome_strings_or.xtb index 2c95fc7..d7f0385 100644 --- a/chrome/app/resources/google_chrome_strings_or.xtb +++ b/chrome/app/resources/google_chrome_strings_or.xtb
@@ -256,6 +256,7 @@ <translation id="7905891027772979035">Chrome ଆପଣଙ୍କର ଏକ୍ସଟେନସନଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="7930071585467473040">Google Chrome ପାସୱାର୍ଡଗୁଡ଼ିକ କପି କରିବାକୁ ଚେଷ୍ଟା କରୁଛି।</translation> <translation id="7962410387636238736">ଏହି କମ୍ପ୍ୟୁଟର୍ ଆଉ Google Chrome ଅପଡେଟ୍ ପ୍ରାପ୍ତ କରିବ ନାହିଁ କାରଣ ଏହା ଆଉ Windows XP ଏବଂ Windows Vista ଦ୍ୱାରା ସମର୍ଥିତ ନୁହେଁ</translation> +<translation id="79947657522496226">Chrome OS <ph name="BEGIN_LINK_LINUX_OSS" />Linux ଡେଭଲପମେଣ୍ଟ ପରିବେଶ <ph name="END_LINK_LINUX_OSS" /> ପରି ଅତିରିକ୍ତ <ph name="BEGIN_LINK_CROS_OSS" />ଓପନ୍ ସୋର୍ସ ସଫ୍ଟୱେର୍<ph name="END_LINK_CROS_OSS" /> ଦ୍ୱାରା ସମ୍ଭବପର ହୋଇଛି।</translation> <translation id="8008534537613507642">Chrome ପୁଣି ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ</translation> <translation id="8013993649590906847">ଯଦି ଗୋଟିଏ ଛବିରେ ଏକ ବ୍ୟବହାରଯୋଗ୍ୟ ବିବରଣୀ ନାହିଁ, ତେବେ Chrome ଆପଣଙ୍କ ପାଇଁ ଏକ ବିବରଣୀ ପ୍ରଦାନ କରିବାକୁ ଚେଷ୍ଟା କରିବ। ବିବରଣୀ ତିଆରି କରିବାକୁ, ଛବିଗୁଡ଼ିକ Googleକୁ ପଠାଇ ଦିଆଯାଇଛି।</translation> <translation id="8129812357326543296">&Google Chrome ବିଷୟରେ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index e8d6398..dc895a6 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -249,6 +249,7 @@ <translation id="7905891027772979035">Chrome మీ ఎక్స్టెన్షన్లను తనిఖీ చేయలేకపోయింది. తర్వాత మళ్లీ ట్రై చేయండి.</translation> <translation id="7930071585467473040">పాస్వర్డ్లను కాపీ చేయడానికి Google Chrome ప్రయత్నిస్తోంది.</translation> <translation id="7962410387636238736">Windows XP మరియు Windows Vistaలకు ఇప్పుడు మద్దతు లేనందున ఈ కంప్యూటర్ ఇకపై Google Chrome అప్డేట్లను స్వీకరించదు</translation> +<translation id="79947657522496226"><ph name="BEGIN_LINK_LINUX_OSS" />Linux డెవలప్మెంట్ ఎన్విరాన్మెంట్<ph name="END_LINK_LINUX_OSS" /> లాగానే Chrome OS కూడా అదనపు <ph name="BEGIN_LINK_CROS_OSS" />ఓపెన్ సోర్స్ సాఫ్ట్వేర్<ph name="END_LINK_CROS_OSS" />పై ఎంతగానో ఆధారపడుతుంది.</translation> <translation id="8008534537613507642">Chromeను మళ్లీ ఇన్స్టాల్ చేయి</translation> <translation id="8013993649590906847">చిత్రంలో ఉపయోగకరమైన వివరణ లేకుంటే, మీ కోసం ఒక వివరణను అందించడానికి Chrome ప్రయత్నిస్తుంది. వివరణలను సృష్టించడానికి, చిత్రాలు Googleకు పంపబడతాయి.</translation> <translation id="8129812357326543296">&Google Chrome గురించి</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ur.xtb b/chrome/app/resources/google_chrome_strings_ur.xtb index bdc00bb..42b33c2 100644 --- a/chrome/app/resources/google_chrome_strings_ur.xtb +++ b/chrome/app/resources/google_chrome_strings_ur.xtb
@@ -256,6 +256,7 @@ <translation id="7905891027772979035">Chrome آپ کی ایکسٹینشنز چیک نہیں کر سکتا ہے۔ بعد میں دوبارہ کوشش کریں۔</translation> <translation id="7930071585467473040">Google Chrome پاس ورڈز کاپی کرنے کی کوشش کر رہا ہے۔</translation> <translation id="7962410387636238736">یہ کمپیوٹر اب Google Chrome اپ ڈيٹس موصول نہیں کرے گا کیونکہ Windows XP اور Windows Vista اب تعاون یافتہ نہیں ہے</translation> +<translation id="79947657522496226">Chrome OS کو اضافی <ph name="BEGIN_LINK_CROS_OSS" />اوپن سورس سافٹ ویئر<ph name="END_LINK_CROS_OSS" /> کے ذریعے ممکن بنایا گیا ہے، جیسے کہ <ph name="BEGIN_LINK_LINUX_OSS" />Linux ڈیولپمنٹ انوائرنمنٹ<ph name="END_LINK_LINUX_OSS" />۔</translation> <translation id="8008534537613507642">Chrome کو دوبارہ انسٹال کریں</translation> <translation id="8013993649590906847">اگر کسی تصویر میں مفید تفصیل موجود نہیں ہے تو Chrome آپ کے لیے تفصیل فراہم کرنے کی کوشش کرے گا۔ تفصیلات تخلیق کرنے کے لیے، تصاویر Google کو بھیجی جاتی ہیں۔</translation> <translation id="8129812357326543296">&Google Chrome کے بارے میں</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb index fef9d41..35fb4db 100644 --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -248,6 +248,7 @@ <translation id="7905891027772979035">Chrome 无法检查您的扩展程序。请稍后重试。</translation> <translation id="7930071585467473040">Google Chrome 正在尝试复制密码。</translation> <translation id="7962410387636238736">此计算机将不会再收到 Google Chrome 更新,因为 Windows XP 和 Windows Vista 已不再受支持</translation> +<translation id="79947657522496226">Chrome 操作系统是借助了其他<ph name="BEGIN_LINK_CROS_OSS" />开源软件<ph name="END_LINK_CROS_OSS" />才得以问世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 开发环境<ph name="END_LINK_LINUX_OSS" />也是如此。</translation> <translation id="8008534537613507642">重新安装Chrome</translation> <translation id="8013993649590906847">如果图片缺少有用的说明,则 Chrome 会尝试为您提供一条说明。为便于创建说明,系统会将图片发送给 Google。</translation> <translation id="8129812357326543296">关于 Google Chrome(&G)</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 3d608e8c..83fd706 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -3235,6 +3235,7 @@ "//chrome/browser/optimization_guide/android:jni_headers", "//chrome/browser/password_check/android:jni_headers", "//chrome/browser/password_check/android:password_check_enums_srcjar", + "//chrome/browser/password_edit_dialog/android", "//chrome/browser/password_entry_edit/android", "//chrome/browser/password_manager/android:jni_headers", "//chrome/browser/payments/android:jni_headers",
diff --git a/chrome/browser/android/autofill_assistant/onboarding_fetcher_factory.cc b/chrome/browser/android/autofill_assistant/onboarding_fetcher_factory.cc index c0176f2..72ece423b 100644 --- a/chrome/browser/android/autofill_assistant/onboarding_fetcher_factory.cc +++ b/chrome/browser/android/autofill_assistant/onboarding_fetcher_factory.cc
@@ -34,6 +34,6 @@ KeyedService* OnboardingFetcherFactory::BuildServiceInstanceFor( content::BrowserContext* browser_context) const { return new autofill_assistant::AutofillAssistantOnboardingFetcher( - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc index 9793aa8..75f1e98 100644 --- a/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc +++ b/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc
@@ -214,7 +214,7 @@ GURL gurl(thumbnail_url_); Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); network::mojom::URLLoaderFactory* loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); fetcher_ =
diff --git a/chrome/browser/android/cookies/cookies_fetcher_util.cc b/chrome/browser/android/cookies/cookies_fetcher_util.cc index a9713b6..4f35bc80 100644 --- a/chrome/browser/android/cookies/cookies_fetcher_util.cc +++ b/chrome/browser/android/cookies/cookies_fetcher_util.cc
@@ -25,9 +25,9 @@ network::mojom::CookieManager* GetCookieServiceClient() { // Since restoring Incognito CCT session from cookies is not supported, it is // safe to use the primary OTR profile here. - return content::BrowserContext::GetDefaultStoragePartition( - ProfileManager::GetPrimaryUserProfile()->GetPrimaryOTRProfile( - /*create_if_needed=*/true)) + return ProfileManager::GetPrimaryUserProfile() + ->GetPrimaryOTRProfile(/*create_if_needed=*/true) + ->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); }
diff --git a/chrome/browser/android/customtabs/detached_resource_request.cc b/chrome/browser/android/customtabs/detached_resource_request.cc index f8de4e5..0dae6aef 100644 --- a/chrome/browser/android/customtabs/detached_resource_request.cc +++ b/chrome/browser/android/customtabs/detached_resource_request.cc
@@ -145,8 +145,7 @@ std::unique_ptr<DetachedResourceRequest> request, content::BrowserContext* browser_context) { request->start_time_ = base::TimeTicks::Now(); - auto* storage_partition = - content::BrowserContext::GetStoragePartition(browser_context, nullptr); + auto* storage_partition = browser_context->GetStoragePartition(nullptr); request->url_loader_->SetOnRedirectCallback( base::BindRepeating(&DetachedResourceRequest::OnRedirectCallback,
diff --git a/chrome/browser/android/customtabs/origin_verifier.cc b/chrome/browser/android/customtabs/origin_verifier.cc index fe777fc4..d06e031 100644 --- a/chrome/browser/android/customtabs/origin_verifier.cc +++ b/chrome/browser/android/customtabs/origin_verifier.cc
@@ -36,9 +36,8 @@ jobject_.Reset(obj); Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile); DCHECK(profile); - url_loader_factory_ = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + url_loader_factory_ = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); web_contents_ = content::WebContents::FromJavaWebContents(jweb_contents); }
diff --git a/chrome/browser/android/explore_sites/explore_sites_bridge_experimental.cc b/chrome/browser/android/explore_sites/explore_sites_bridge_experimental.cc index c4d7e14..f313ceb 100644 --- a/chrome/browser/android/explore_sites/explore_sites_bridge_experimental.cc +++ b/chrome/browser/android/explore_sites/explore_sites_bridge_experimental.cc
@@ -126,7 +126,7 @@ Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); GURL icon_url(ConvertJavaStringToUTF8(env, j_url)); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); image_fetcher::ImageFetcherParams params(kTrafficAnnotation, kImageFetcherUmaClientName);
diff --git a/chrome/browser/android/explore_sites/ntp_json_fetcher.cc b/chrome/browser/android/explore_sites/ntp_json_fetcher.cc index ec398c9..c04e897 100644 --- a/chrome/browser/android/explore_sites/ntp_json_fetcher.cc +++ b/chrome/browser/android/explore_sites/ntp_json_fetcher.cc
@@ -66,7 +66,7 @@ simple_loader_ = network::SimpleURLLoader::Create(std::move(resource_request), traffic_annotation); network::mojom::URLLoaderFactory* loader_factory = - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); simple_loader_->SetRetryOptions(
diff --git a/chrome/browser/android/feed/v2/feed_service_bridge.cc b/chrome/browser/android/feed/v2/feed_service_bridge.cc index 11e5609b..9d6031a 100644 --- a/chrome/browser/android/feed/v2/feed_service_bridge.cc +++ b/chrome/browser/android/feed/v2/feed_service_bridge.cc
@@ -15,11 +15,13 @@ #include "chrome/browser/android/feed/v2/feed_service_factory.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/feed/android/jni_headers/FeedServiceBridge_jni.h" +#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "components/feed/core/shared_prefs/pref_names.h" #include "components/feed/core/v2/config.h" #include "components/feed/core/v2/public/feed_service.h" +#include "components/feed/feed_feature_list.h" #include "components/metrics/metrics_service.h" #include "components/prefs/pref_service.h" @@ -94,6 +96,10 @@ return FeedServiceBridge::GetReliabilityLoggingId(); } +static jboolean JNI_FeedServiceBridge_IsAutoplayEnabled(JNIEnv* env) { + return FeedServiceBridge::IsAutoplayEnabled(); +} + static jlong JNI_FeedServiceBridge_AddUnreadContentObserver( JNIEnv* env, const base::android::JavaParamRef<jobject>& j_observer, @@ -127,6 +133,13 @@ return result; } +bool FeedServiceBridge::IsAutoplayEnabled() { + // For now, disable autoplay if metrics are disabled until we can ensure that + // the autoplay feature does not report metrics. + return base::FeatureList::IsEnabled(kInterestFeedV2Autoplay) && + ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); +} + void FeedServiceBridge::ClearAll() { JNIEnv* env = base::android::AttachCurrentThread(); Java_FeedServiceBridge_clearAll(env);
diff --git a/chrome/browser/android/feed/v2/feed_service_bridge.h b/chrome/browser/android/feed/v2/feed_service_bridge.h index e0e3bec1..43fc885 100644 --- a/chrome/browser/android/feed/v2/feed_service_bridge.h +++ b/chrome/browser/android/feed/v2/feed_service_bridge.h
@@ -19,6 +19,7 @@ public: static std::string GetLanguageTag(); static DisplayMetrics GetDisplayMetrics(); + static bool IsAutoplayEnabled(); static void ClearAll(); static bool IsEnabled(); static void PrefetchImage(const GURL& url);
diff --git a/chrome/browser/android/feed/v2/feed_service_factory.cc b/chrome/browser/android/feed/v2/feed_service_factory.cc index e3d39a1c..d514e10 100644 --- a/chrome/browser/android/feed/v2/feed_service_factory.cc +++ b/chrome/browser/android/feed/v2/feed_service_factory.cc
@@ -46,6 +46,9 @@ DisplayMetrics GetDisplayMetrics() override { return FeedServiceBridge::GetDisplayMetrics(); } + bool IsAutoplayEnabled() override { + return FeedServiceBridge::IsAutoplayEnabled(); + } void ClearAll() override { FeedServiceBridge::ClearAll(); } void PrefetchImage(const GURL& url) override { FeedServiceBridge::PrefetchImage(url); @@ -100,7 +103,7 @@ Profile* profile = Profile::FromBrowserContext(context); content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(context); + context->GetDefaultStoragePartition(); signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(profile);
diff --git a/chrome/browser/android/feedback/connectivity_checker.cc b/chrome/browser/android/feedback/connectivity_checker.cc index e84dc5e..f026eb3 100644 --- a/chrome/browser/android/feedback/connectivity_checker.cc +++ b/chrome/browser/android/feedback/connectivity_checker.cc
@@ -122,9 +122,8 @@ const GURL& url, const base::TimeDelta& timeout, const base::android::JavaRef<jobject>& java_callback) - : shared_url_loader_factory_( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess()), + : shared_url_loader_factory_(profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()), url_(url), timeout_(timeout), java_callback_(java_callback),
diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/android/rlz/rlz_ping_handler.cc index 72e74768..6c48734 100644 --- a/chrome/browser/android/rlz/rlz_ping_handler.cc +++ b/chrome/browser/android/rlz/rlz_ping_handler.cc
@@ -44,9 +44,8 @@ RlzPingHandler::RlzPingHandler(const JavaRef<jobject>& jprofile) { Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile); DCHECK(profile); - url_loader_factory_ = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + url_loader_factory_ = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); } RlzPingHandler::~RlzPingHandler() = default;
diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc index da41033..3b7adff 100644 --- a/chrome/browser/android/signin/signin_manager_android.cc +++ b/chrome/browser/android/signin/signin_manager_android.cc
@@ -235,7 +235,7 @@ base::OnceCallback<void()> policy_callback, const ManagementCredentials& credentials) { scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); user_policy_signin_service_->FetchPolicyForSignedInUser( AccountIdFromAccountInfo(account), credentials.dm_token,
diff --git a/chrome/browser/android/signin/signin_manager_android_unittest.cc b/chrome/browser/android/signin/signin_manager_android_unittest.cc index 4210c21c..fc5e096 100644 --- a/chrome/browser/android/signin/signin_manager_android_unittest.cc +++ b/chrome/browser/android/signin/signin_manager_android_unittest.cc
@@ -136,7 +136,7 @@ // be able to observe deletions. // Add service workers. auto helper = base::MakeRefCounted<browsing_data::CannedCacheStorageHelper>( - content::BrowserContext::GetDefaultStoragePartition(profile())); + profile()->GetDefaultStoragePartition()); for (const TestCase& test_case : kTestCases) helper->Add(url::Origin::Create(GURL(test_case.worker_url)));
diff --git a/chrome/browser/android/usage_stats/notification_suspender.cc b/chrome/browser/android/usage_stats/notification_suspender.cc index 683131c..a552f95 100644 --- a/chrome/browser/android/usage_stats/notification_suspender.cc +++ b/chrome/browser/android/usage_stats/notification_suspender.cc
@@ -57,7 +57,7 @@ } PlatformNotificationContext* GetContext(Profile* profile, const GURL& origin) { - auto* partition = BrowserContext::GetStoragePartitionForUrl(profile, origin); + auto* partition = profile->GetStoragePartitionForUrl(origin); auto* context = partition->GetPlatformNotificationContext(); DCHECK(context); return context;
diff --git a/chrome/browser/android/usage_stats/usage_stats_database.cc b/chrome/browser/android/usage_stats/usage_stats_database.cc index bb9bdb10..800247f 100644 --- a/chrome/browser/android/usage_stats/usage_stats_database.cc +++ b/chrome/browser/android/usage_stats/usage_stats_database.cc
@@ -38,8 +38,7 @@ suspension_db_initialized_(false), token_mapping_db_initialized_(false) { ProtoDatabaseProvider* db_provider = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetProtoDatabaseProvider(); + profile->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); base::FilePath usage_stats_dir = profile->GetPath().Append(kNamespace);
diff --git a/chrome/browser/android/vr/vr_shell.cc b/chrome/browser/android/vr/vr_shell.cc index a7e03a39..ae55919 100644 --- a/chrome/browser/android/vr/vr_shell.cc +++ b/chrome/browser/android/vr/vr_shell.cc
@@ -818,7 +818,7 @@ std::string profile_locale = g_browser_process->GetApplicationLocale(); speech_recognizer_.reset(new SpeechRecognizer( this, ui_, - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcessIOThread(), profile->GetPrefs()->GetString(language::prefs::kAcceptLanguages), profile_locale));
diff --git a/chrome/browser/android/webapk/webapk_icon_hasher_browsertest.cc b/chrome/browser/android/webapk/webapk_icon_hasher_browsertest.cc index 3a9e994..280185b 100644 --- a/chrome/browser/android/webapk/webapk_icon_hasher_browsertest.cc +++ b/chrome/browser/android/webapk/webapk_icon_hasher_browsertest.cc
@@ -108,8 +108,8 @@ { scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition( - web_contents->GetBrowserContext()) + web_contents->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); base::RunLoop run_loop;
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc index dc8bdd5a..7d6ca318 100644 --- a/chrome/browser/android/webapk/webapk_installer.cc +++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -652,7 +652,7 @@ network::SharedURLLoaderFactory* GetURLLoaderFactory( content::BrowserContext* browser_context) { - return content::BrowserContext::GetDefaultStoragePartition(browser_context) + return browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); }
diff --git a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc index 65939366..6a52401 100644 --- a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc +++ b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
@@ -173,7 +173,7 @@ Profile::FromBrowserContext(web_contents()->GetBrowserContext()); WebApkIconHasher::DownloadAndComputeMurmur2Hash( - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), url::Origin::Create(last_fetched_url_), urls,
diff --git a/chrome/browser/android/webapps/launchpad/BUILD.gn b/chrome/browser/android/webapps/launchpad/BUILD.gn index 2c210468..62e91d44 100644 --- a/chrome/browser/android/webapps/launchpad/BUILD.gn +++ b/chrome/browser/android/webapps/launchpad/BUILD.gn
@@ -19,12 +19,15 @@ "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadCoordinator.java", "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadItem.java", "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadPage.java", + "java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemProperties.java", + "java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemViewBinder.java", ] deps = [ ":java_resources", "//base:base_java", "//chrome/android/webapk/libs/client:client_java", + "//chrome/browser/android/browserservices/intents:java", "//chrome/browser/profiles/android:java", "//chrome/browser/ui/android/native_page:java", "//components/browser_ui/settings/android:java", @@ -51,6 +54,7 @@ "java/res/layout/launchpad_menu_dialog_layout.xml", "java/res/layout/launchpad_menu_dialog_layout.xml", "java/res/layout/launchpad_page_layout.xml", + "java/res/layout/launchpad_shortcut_item_view.xml", "java/res/layout/launchpad_tile_view.xml", "java/res/menu/launchpad_action_bar_menu.xml", "java/res/values/dimens.xml", @@ -65,13 +69,18 @@ android_library("javatests") { testonly = true - sources = [ "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadPageTest.java" ] + sources = [ + "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java", + "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadPageTest.java", + "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadTestUtils.java", + ] deps = [ ":java", ":java_resources", "//base:base_java_test_support", "//chrome/android:chrome_java", + "//chrome/browser/android/browserservices/intents:java", "//chrome/browser/flags:java", "//chrome/browser/profiles/android:java", "//chrome/browser/tab:java", @@ -91,6 +100,7 @@ "//third_party/hamcrest:hamcrest_java", "//third_party/junit", "//ui/android:ui_full_java", + "//ui/android:ui_java_test_support", ] } @@ -100,6 +110,7 @@ testonly = true sources = [ + "java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinatorTest.java", "java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsCoordinatorTest.java", "java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadCoordinatorTest.java", ] @@ -110,6 +121,7 @@ "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", + "//chrome/browser/android/browserservices/intents:java", "//chrome/browser/profiles/android:java", "//chrome/test/android:chrome_java_test_support", "//components/browser_ui/site_settings/android:java",
diff --git a/chrome/browser/android/webapps/launchpad/java/res/layout/launchpad_shortcut_item_view.xml b/chrome/browser/android/webapps/launchpad/java/res/layout/launchpad_shortcut_item_view.xml new file mode 100644 index 0000000..f69cff4 --- /dev/null +++ b/chrome/browser/android/webapps/launchpad/java/res/layout/launchpad_shortcut_item_view.xml
@@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. --> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:orientation="horizontal"> + + <org.chromium.ui.widget.ChromeImageView + android:id="@+id/shortcut_icon" + style="@style/ListItemStartIcon" + android:scaleType="centerInside" /> + + <org.chromium.ui.widget.TextViewWithLeading + android:id="@+id/shortcut_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:gravity="center_vertical" + android:maxLines="1" + android:minHeight="@dimen/min_touch_target_size" + android:textAppearance="@style/TextAppearance.TextMedium.Primary" + app:leading="@dimen/text_size_small_leading" /> +</LinearLayout>
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinator.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinator.java index f3b5010..9e8b149 100644 --- a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinator.java +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinator.java
@@ -4,16 +4,26 @@ package org.chromium.chrome.browser.webapps.launchpad; +import android.content.ActivityNotFoundException; import android.content.Context; +import android.content.Intent; import android.view.LayoutInflater; import android.view.View; +import android.widget.ListView; import org.chromium.base.supplier.Supplier; +import org.chromium.chrome.browser.browserservices.intents.WebApkExtras.ShortcutItem; import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogProperties; +import org.chromium.ui.modelutil.LayoutViewBuilder; +import org.chromium.ui.modelutil.MVCListAdapter.ListItem; +import org.chromium.ui.modelutil.MVCListAdapter.ModelList; +import org.chromium.ui.modelutil.ModelListAdapter; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +import org.chromium.ui.widget.Toast; +import org.chromium.webapk.lib.client.WebApkNavigationClient; /** * Coordinator for displaying the app management menu. @@ -23,6 +33,12 @@ private final Supplier<ModalDialogManager> mModalDialogManagerSupplier; private PropertyModel mDialogModel; + private ListView mShortcutList; + + public @interface ListItemType { + int SHORTCUT_ITEM = 0; + } + private AppManagementMenuPermissionsCoordinator mPermissionsCoordinator; AppManagementMenuCoordinator( @@ -71,6 +87,49 @@ mPermissionsCoordinator = new AppManagementMenuPermissionsCoordinator( (AppManagementMenuPermissionsView) dialogView.findViewById(R.id.permissions), item); + mShortcutList = dialogView.findViewById(R.id.shortcuts_list_view); + + ModelList listItems = buildShortcutsList(item); + + ModelListAdapter adapter = new ModelListAdapter(listItems); + mShortcutList.setAdapter(adapter); + adapter.registerType(ListItemType.SHORTCUT_ITEM, + new LayoutViewBuilder(R.layout.launchpad_shortcut_item_view), + ShortcutItemViewBinder::bind); + return dialogView; } + + private ModelList buildShortcutsList(LaunchpadItem item) { + ModelList list = new ModelList(); + if (item.shortcutItems == null) return list; + + for (ShortcutItem shortcutItem : item.shortcutItems) { + PropertyModel model = + new PropertyModel.Builder(ShortcutItemProperties.ALL_KEYS) + .with(ShortcutItemProperties.NAME, shortcutItem.name) + .with(ShortcutItemProperties.LAUNCH_URL, shortcutItem.launchUrl) + .with(ShortcutItemProperties.SHORTCUT_ICON, shortcutItem.icon.bitmap()) + .with(ShortcutItemProperties.ON_CLICK, + v + -> onShortcutClicked(item.packageName, shortcutItem.launchUrl)) + .build(); + + list.add(new ListItem(ListItemType.SHORTCUT_ITEM, model)); + } + return list; + } + + private void onShortcutClicked(String packageName, String launchUrl) { + Intent launchIntent = + WebApkNavigationClient.createLaunchWebApkIntent(packageName, launchUrl, false); + try { + mContext.startActivity(launchIntent); + } catch (ActivityNotFoundException e) { + Toast.makeText(mContext, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show(); + } + + mModalDialogManagerSupplier.get().dismissDialog( + mDialogModel, DialogDismissalCause.ACTION_ON_CONTENT); + } }
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinatorTest.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinatorTest.java new file mode 100644 index 0000000..cf5f00b4 --- /dev/null +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuCoordinatorTest.java
@@ -0,0 +1,156 @@ +// 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.chrome.browser.webapps.launchpad; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.mock; + +import android.app.Activity; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.view.View; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.Robolectric; +import org.robolectric.annotation.Config; + +import org.chromium.base.supplier.ObservableSupplierImpl; +import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.JniMocker; +import org.chromium.chrome.browser.browserservices.intents.WebApkExtras.ShortcutItem; +import org.chromium.chrome.browser.browserservices.intents.WebappIcon; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge; +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridgeJni; +import org.chromium.ui.modaldialog.ModalDialogManager; +import org.chromium.ui.modaldialog.ModalDialogProperties; +import org.chromium.ui.modelutil.MVCListAdapter.ListItem; +import org.chromium.ui.modelutil.PropertyModel; + +import java.util.ArrayList; +import java.util.List; + +/** + * Tests for {@link AppManagementMenuCoordinator}. + */ +@RunWith(BaseRobolectricTestRunner.class) +@Config(manifest = Config.NONE) +public class AppManagementMenuCoordinatorTest { + public static final String APP_PACKAGE_NAME = "package.name"; + public static final String APP_SHORT_NAME = "App"; + public static final String APP_NAME = "App Name"; + public static final String APP_URL = "https://example.com/"; + public final Bitmap APP_ICON = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); + public final LaunchpadItem MOCK_ITEM = new LaunchpadItem(APP_PACKAGE_NAME, APP_SHORT_NAME, + APP_NAME, APP_URL, APP_ICON, new ArrayList<ShortcutItem>()); + + public static final String SHORTCUT_NAME_1 = "Shortcut 1"; + public static final String SHORTCUT_URL_1 = "https://example.com/11"; + public static final String SHORTCUT_NAME_2 = "Shortcut 2"; + public static final String SHORTCUT_URL_2 = "https://example.com/22"; + public final Bitmap SHORTCUT_ICON = Bitmap.createBitmap(2, 2, Bitmap.Config.ARGB_8888); + public final ShortcutItem SHORTCUT_ITEM_1 = new ShortcutItem(SHORTCUT_NAME_1, SHORTCUT_NAME_1, + SHORTCUT_URL_1, "iconUrl", "iconHash", new WebappIcon(SHORTCUT_ICON)); + public final ShortcutItem SHORTCUT_ITEM_2 = new ShortcutItem(SHORTCUT_NAME_2, SHORTCUT_NAME_2, + SHORTCUT_URL_2, "iconUrl", "iconHash", new WebappIcon(SHORTCUT_ICON)); + + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Rule + public JniMocker mocker = new JniMocker(); + + @Mock + private Activity mActivity; + + @Mock + private WebsitePreferenceBridge.Natives mWebsitePreferenceBridgeJniMock; + + private AppManagementMenuCoordinator mCoordinator; + private ModalDialogManager mModalDialogManager; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + mocker.mock(WebsitePreferenceBridgeJni.TEST_HOOKS, mWebsitePreferenceBridgeJniMock); + Profile.setLastUsedProfileForTesting(mock(Profile.class)); + + mModalDialogManager = new ModalDialogManager(mock(ModalDialogManager.Presenter.class), 0); + ObservableSupplierImpl<ModalDialogManager> modalDialogManagerSupplier = + new ObservableSupplierImpl<>(); + modalDialogManagerSupplier.set(mModalDialogManager); + + mActivity = Robolectric.buildActivity(Activity.class).setup().get(); + mCoordinator = new AppManagementMenuCoordinator(mActivity, modalDialogManagerSupplier); + } + + @Test + public void testShowDialog() { + mCoordinator.show(MOCK_ITEM); + + PropertyModel dialogModel = mModalDialogManager.getCurrentDialogForTest(); + assertNotNull(dialogModel); + + View dialogView = dialogModel.get(ModalDialogProperties.CUSTOM_VIEW); + + // Assert header view. + assertEquals( + APP_NAME, ((TextView) dialogView.findViewById(R.id.menu_header_title)).getText()); + assertEquals(APP_URL, ((TextView) dialogView.findViewById(R.id.menu_header_url)).getText()); + ImageView icon = (ImageView) dialogView.findViewById(R.id.menu_header_image); + assertEquals(APP_ICON, ((BitmapDrawable) icon.getDrawable()).getBitmap()); + + // Assert permissions view. + assertNotNull(dialogView.findViewById(R.id.notifications_button)); + assertNotNull(dialogView.findViewById(R.id.mic_button)); + assertNotNull(dialogView.findViewById(R.id.camera_button)); + assertNotNull(dialogView.findViewById(R.id.location_button)); + } + + @Test + public void testShowDialogWithShortcuts() { + List<ShortcutItem> shortcuts = new ArrayList<>(); + shortcuts.add(SHORTCUT_ITEM_1); + shortcuts.add(SHORTCUT_ITEM_2); + + LaunchpadItem item = new LaunchpadItem( + APP_PACKAGE_NAME, APP_SHORT_NAME, APP_NAME, APP_URL, APP_ICON, shortcuts); + mCoordinator.show(item); + + PropertyModel dialogModel = mModalDialogManager.getCurrentDialogForTest(); + assertNotNull(dialogModel); + + View dialogView = dialogModel.get(ModalDialogProperties.CUSTOM_VIEW); + ListView shortcutsView = dialogView.findViewById(R.id.shortcuts_list_view); + assertNotNull(shortcutsView); + + assertEquals(2, shortcutsView.getAdapter().getCount()); + + // Assert the shortcuts list model are set correctly. + ListItem listItem = (ListItem) shortcutsView.getAdapter().getItem(0); + assertEquals(SHORTCUT_NAME_1, listItem.model.get(ShortcutItemProperties.NAME)); + assertEquals(SHORTCUT_URL_1, listItem.model.get(ShortcutItemProperties.LAUNCH_URL)); + assertEquals(SHORTCUT_ICON, listItem.model.get(ShortcutItemProperties.SHORTCUT_ICON)); + assertNotNull(listItem.model.get(ShortcutItemProperties.ON_CLICK)); + + ListItem listItem2 = (ListItem) shortcutsView.getAdapter().getItem(1); + assertEquals(SHORTCUT_NAME_2, listItem2.model.get(ShortcutItemProperties.NAME)); + assertEquals(SHORTCUT_URL_2, listItem2.model.get(ShortcutItemProperties.LAUNCH_URL)); + assertEquals(SHORTCUT_ICON, listItem2.model.get(ShortcutItemProperties.SHORTCUT_ICON)); + assertNotNull(listItem2.model.get(ShortcutItemProperties.ON_CLICK)); + } +}
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuHeaderProperties.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuHeaderProperties.java index 69eb2f8..5b45376 100644 --- a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuHeaderProperties.java +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuHeaderProperties.java
@@ -12,6 +12,8 @@ /** Contains all the properties for app management menu header. */ class AppManagementMenuHeaderProperties { + private AppManagementMenuHeaderProperties() {} + public static final WritableObjectPropertyKey<String> TITLE = new WritableObjectPropertyKey<>(); public static final WritableObjectPropertyKey<CharSequence> URL = new WritableObjectPropertyKey<>();
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsCoordinatorTest.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsCoordinatorTest.java index a429b353..0c1839b 100644 --- a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsCoordinatorTest.java +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsCoordinatorTest.java
@@ -50,7 +50,7 @@ private static final String APP_URL = "https://example.com/"; private static final LaunchpadItem MOCK_ITEM = - new LaunchpadItem(APP_PACKAGE_NAME, APP_SHORT_NAME, APP_NAME, APP_URL, null); + new LaunchpadItem(APP_PACKAGE_NAME, APP_SHORT_NAME, APP_NAME, APP_URL, null, null); @Mock Activity mActivity;
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsProperties.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsProperties.java index 06941ec..2bd8b71 100644 --- a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsProperties.java +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/AppManagementMenuPermissionsProperties.java
@@ -12,6 +12,8 @@ * Properties for Launchpad app management menu's app permissions. */ class AppManagementMenuPermissionsProperties { + private AppManagementMenuPermissionsProperties() {} + public static final WritableIntPropertyKey NOTIFICATIONS = new WritableIntPropertyKey(); public static final WritableIntPropertyKey MIC = new WritableIntPropertyKey(); public static final WritableIntPropertyKey CAMERA = new WritableIntPropertyKey();
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java new file mode 100644 index 0000000..7d55ee5 --- /dev/null +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadActivityTest.java
@@ -0,0 +1,100 @@ +// 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.chrome.browser.webapps.launchpad; + +import android.support.test.InstrumentationRegistry; +import android.view.View; + +import androidx.test.filters.MediumTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.Feature; +import org.chromium.chrome.browser.flags.ChromeSwitches; +import org.chromium.chrome.test.ChromeJUnit4ClassRunner; +import org.chromium.chrome.test.ChromeTabbedActivityTestRule; +import org.chromium.chrome.test.util.ActivityTestUtils; +import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.ui.test.util.RenderTestRule; + +import java.io.IOException; + +/** + * Render tests for the LaunchpadActivity. + */ +@RunWith(ChromeJUnit4ClassRunner.class) +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) +public final class LaunchpadActivityTest { + @Rule + public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); + + @Rule + public RenderTestRule mRenderTestRule = + RenderTestRule.Builder.withPublicCorpus().setRevision(1).build(); + + private LaunchpadActivity mLaunchpadActivity; + private LaunchpadCoordinator mLaunchpadCoordinator; + + @Before + public void setUp() { + mActivityTestRule.startMainActivityOnBlankPage(); + LaunchpadUtils.setOverrideItemListForTesting(LaunchpadTestUtils.MOCK_APP_LIST); + } + + @After + public void tearDown() { + if (mLaunchpadActivity != null) { + mLaunchpadActivity.finish(); + } + } + + private void openLaunchpadActivity() { + mLaunchpadActivity = ActivityTestUtils.waitForActivity( + InstrumentationRegistry.getInstrumentation(), LaunchpadActivity.class, () -> { + TestThreadUtils.runOnUiThreadBlocking( + () + -> LaunchpadUtils.showLaunchpadActivity( + mActivityTestRule.getActivity())); + }); + mLaunchpadCoordinator = mLaunchpadActivity.getCoordinatorForTesting(); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testShowLaunchpadActivity() throws IOException { + openLaunchpadActivity(); + mRenderTestRule.render(mLaunchpadCoordinator.getView(), "launchpad_activity"); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testAppManagementMenuWithPermissions() throws IOException { + openLaunchpadActivity(); + LaunchpadTestUtils.setPermissionDefaults(LaunchpadTestUtils.APP_URL_2); + + View dialogView = LaunchpadTestUtils.openAppManagementMenu(mLaunchpadCoordinator, + mLaunchpadActivity.getModalDialogManager(), 1 /* itemIndex */); + + mRenderTestRule.render(dialogView, "launchpad_management_menu_with_permissions"); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testAppManagementMenuWithShortcut() throws IOException { + openLaunchpadActivity(); + View dialogView = LaunchpadTestUtils.openAppManagementMenu(mLaunchpadCoordinator, + mLaunchpadActivity.getModalDialogManager(), 0 /* itemIndex */); + + mRenderTestRule.render(dialogView, "launchpad_management_menu_shortcuts"); + } +}
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadCoordinatorTest.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadCoordinatorTest.java index 5cb8b4a..8bbeac0 100644 --- a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadCoordinatorTest.java +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadCoordinatorTest.java
@@ -45,9 +45,11 @@ private static final String APP_SHORT_NAME_2 = "App 2 with long short name"; private static final String APP_URL_2 = "https://example.com/2"; - private static final List<LaunchpadItem> MOCK_APP_LIST = new ArrayList<>(Arrays.asList( - new LaunchpadItem(APP_PACKAGE_NAME_1, APP_SHORT_NAME_1, APP_NAME_1, APP_URL_1, null), - new LaunchpadItem(APP_PACKAGE_NAME_2, APP_SHORT_NAME_2, APP_NAME_2, APP_URL_2, null))); + private static final List<LaunchpadItem> MOCK_APP_LIST = + new ArrayList<>(Arrays.asList(new LaunchpadItem(APP_PACKAGE_NAME_1, APP_SHORT_NAME_1, + APP_NAME_1, APP_URL_1, null, null), + new LaunchpadItem(APP_PACKAGE_NAME_2, APP_SHORT_NAME_2, APP_NAME_2, APP_URL_2, + null, null))); private Activity mActivity;
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadItem.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadItem.java index 9570513..5d83062 100644 --- a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadItem.java +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadItem.java
@@ -6,6 +6,10 @@ import android.graphics.Bitmap; +import org.chromium.chrome.browser.browserservices.intents.WebApkExtras.ShortcutItem; + +import java.util.List; + /** * A plain old data class that holds webapk info for each launchpad item. */ @@ -15,12 +19,15 @@ public final String name; public final String url; public final Bitmap icon; + public final List<ShortcutItem> shortcutItems; - LaunchpadItem(String packageName, String shortName, String name, String url, Bitmap icon) { + LaunchpadItem(String packageName, String shortName, String name, String url, Bitmap icon, + List<ShortcutItem> shortcutItems) { this.packageName = packageName; this.shortName = shortName; this.name = name; this.url = url; this.icon = icon; + this.shortcutItems = shortcutItems; } }
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadPageTest.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadPageTest.java index 5436b47..3b7ef7c 100644 --- a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadPageTest.java +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadPageTest.java
@@ -15,11 +15,11 @@ import android.app.Activity; import android.app.Instrumentation.ActivityResult; import android.content.Context; -import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.support.test.InstrumentationRegistry; import android.view.View; import android.widget.ImageView; +import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.content.res.AppCompatResources; @@ -37,24 +37,14 @@ import org.chromium.base.test.util.CommandLineFlags; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; -import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.util.browser.Features; -import org.chromium.components.browser_ui.site_settings.PermissionInfo; import org.chromium.components.browser_ui.widget.tile.TileView; -import org.chromium.components.content_settings.ContentSettingValues; -import org.chromium.components.content_settings.ContentSettingsType; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TouchCommon; import org.chromium.ui.modaldialog.ModalDialogManager; -import org.chromium.ui.modaldialog.ModalDialogProperties; -import org.chromium.ui.modelutil.PropertyModel; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; /** * Tests for the Launchpad page. @@ -63,22 +53,6 @@ @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @Features.EnableFeatures({ChromeFeatureList.APP_LAUNCHPAD}) public class LaunchpadPageTest { - private static final String APP_PACKAGE_NAME_1 = "package.name.1"; - private static final String APP_NAME_1 = "App Name 1"; - private static final String APP_SHORT_NAME_1 = "App 1"; - private static final String APP_URL_1 = "https://example.com/1"; - private static final String APP_PACKAGE_NAME_2 = "package.name.2"; - private static final String APP_NAME_2 = "App Name 2"; - private static final String APP_SHORT_NAME_2 = "App 2 with long short name"; - private static final String APP_URL_2 = "https://example.com/2"; - private static final Bitmap TEST_ICON = Bitmap.createBitmap(20, 20, Bitmap.Config.ARGB_8888); - - private static final List<LaunchpadItem> MOCK_APP_LIST = - new ArrayList<>(Arrays.asList(new LaunchpadItem(APP_PACKAGE_NAME_1, APP_SHORT_NAME_1, - APP_NAME_1, APP_URL_1, TEST_ICON), - new LaunchpadItem(APP_PACKAGE_NAME_2, APP_SHORT_NAME_2, APP_NAME_2, APP_URL_2, - TEST_ICON))); - @Rule public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); @@ -89,7 +63,7 @@ @Before public void setUp() { mActivityTestRule.startMainActivityOnBlankPage(); - LaunchpadUtils.setOverrideItemListForTesting(MOCK_APP_LIST); + LaunchpadUtils.setOverrideItemListForTesting(LaunchpadTestUtils.MOCK_APP_LIST); } private void openLaunchpadPage() { @@ -110,16 +84,18 @@ TileView app1 = (TileView) mItemContainer.getChildAt(0); TextView title1 = (TextView) app1.findViewById(R.id.tile_view_title); ImageView icon1 = (ImageView) app1.findViewById(R.id.tile_view_icon); - Assert.assertEquals(APP_SHORT_NAME_1, title1.getText()); + Assert.assertEquals(LaunchpadTestUtils.APP_SHORT_NAME_1, title1.getText()); Assert.assertEquals(1, title1.getLineCount()); - Assert.assertEquals(TEST_ICON, ((BitmapDrawable) icon1.getDrawable()).getBitmap()); + Assert.assertEquals( + LaunchpadTestUtils.TEST_ICON, ((BitmapDrawable) icon1.getDrawable()).getBitmap()); TileView app2 = (TileView) mItemContainer.getChildAt(1); TextView title2 = (TextView) app2.findViewById(R.id.tile_view_title); ImageView icon2 = (ImageView) app2.findViewById(R.id.tile_view_icon); - Assert.assertEquals(APP_SHORT_NAME_2, title2.getText()); + Assert.assertEquals(LaunchpadTestUtils.APP_SHORT_NAME_2, title2.getText()); Assert.assertEquals(1, title2.getLineCount()); - Assert.assertEquals(TEST_ICON, ((BitmapDrawable) icon2.getDrawable()).getBitmap()); + Assert.assertEquals( + LaunchpadTestUtils.TEST_ICON, ((BitmapDrawable) icon2.getDrawable()).getBitmap()); } @Test @@ -128,86 +104,112 @@ openLaunchpadPage(); Intents.init(); - intending(allOf(hasPackage(APP_PACKAGE_NAME_1))) + intending(allOf(hasPackage(LaunchpadTestUtils.APP_PACKAGE_NAME_1))) .respondWith(new ActivityResult(Activity.RESULT_OK, null)); View item = mItemContainer.getChildAt(0); TestThreadUtils.runOnUiThreadBlocking(() -> TouchCommon.singleClickView(item)); - intended(allOf(hasPackage(APP_PACKAGE_NAME_1), hasData(APP_URL_1)), times(1)); + intended(allOf(hasPackage(LaunchpadTestUtils.APP_PACKAGE_NAME_1), + hasData(LaunchpadTestUtils.APP_URL_1)), + times(1)); Intents.release(); } @Test @MediumTest - public void testShowAppManagementMenu() { + public void testManagementMenuHeaderProperties() { openLaunchpadPage(); - ModalDialogManager modalDialogManager = - mActivityTestRule.getActivity().getModalDialogManager(); + View dialogView = LaunchpadTestUtils.openAppManagementMenu(mLaunchpadCoordinator, + mActivityTestRule.getActivity().getModalDialogManager(), 1 /* itemIndex */); - View item = mItemContainer.getChildAt(1); - TouchCommon.longPressView(item); - - PropertyModel dialogModel = modalDialogManager.getCurrentDialogForTest(); - Assert.assertNotNull(dialogModel); - - View dialogView = dialogModel.get(ModalDialogProperties.CUSTOM_VIEW); - Assert.assertEquals( - APP_NAME_2, ((TextView) dialogView.findViewById(R.id.menu_header_title)).getText()); - Assert.assertEquals( - APP_URL_2, ((TextView) dialogView.findViewById(R.id.menu_header_url)).getText()); + Assert.assertEquals(LaunchpadTestUtils.APP_NAME_2, + ((TextView) dialogView.findViewById(R.id.menu_header_title)).getText()); + Assert.assertEquals(LaunchpadTestUtils.APP_URL_2, + ((TextView) dialogView.findViewById(R.id.menu_header_url)).getText()); ImageView icon = (ImageView) dialogView.findViewById(R.id.menu_header_image); - Assert.assertEquals(TEST_ICON, ((BitmapDrawable) icon.getDrawable()).getBitmap()); + Assert.assertEquals( + LaunchpadTestUtils.TEST_ICON, ((BitmapDrawable) icon.getDrawable()).getBitmap()); } @Test @MediumTest - public void testAppPermission() { - TestThreadUtils.runOnUiThreadBlocking(() -> { - // Set permission for Notifications to Allow, Mic to Ask, Camera to Block, and Location - // to Allow. - Profile profile = Profile.getLastUsedRegularProfile(); - PermissionInfo notifications = new PermissionInfo(ContentSettingsType.NOTIFICATIONS, - APP_URL_1, null /* embedder */, false /* isEmbargoed */); - notifications.setContentSetting(profile, ContentSettingValues.ALLOW); - PermissionInfo mic = new PermissionInfo(ContentSettingsType.MEDIASTREAM_MIC, APP_URL_1, - null /* embedder */, false /* isEmbargoed */); - mic.setContentSetting(profile, ContentSettingValues.ASK); - PermissionInfo camera = new PermissionInfo(ContentSettingsType.MEDIASTREAM_CAMERA, - APP_URL_1, null /* embedder */, false /* isEmbargoed */); - camera.setContentSetting(profile, ContentSettingValues.BLOCK); - PermissionInfo location = new PermissionInfo(ContentSettingsType.GEOLOCATION, APP_URL_1, - null /* embedder */, false /* isEmbargoed */); - location.setContentSetting(profile, ContentSettingValues.ALLOW); - }); - + public void testManagementMenuAppPermissions() { + LaunchpadTestUtils.setPermissionDefaults(LaunchpadTestUtils.APP_URL_2); openLaunchpadPage(); - ModalDialogManager modalDialogManager = - mActivityTestRule.getActivity().getModalDialogManager(); - - View item = mItemContainer.getChildAt(0); - TouchCommon.longPressView(item); - PropertyModel dialogModel = modalDialogManager.getCurrentDialogForTest(); - View dialogView = dialogModel.get(ModalDialogProperties.CUSTOM_VIEW); + View dialogView = LaunchpadTestUtils.openAppManagementMenu(mLaunchpadCoordinator, + mActivityTestRule.getActivity().getModalDialogManager(), 1 /* itemIndex */); Context context = InstrumentationRegistry.getTargetContext(); ImageView notificationsIcon = (ImageView) dialogView.findViewById(R.id.notifications_button); Assert.assertEquals( - AppCompatResources.getColorStateList(context, R.color.default_icon_color), + AppCompatResources.getColorStateList(context, R.color.default_icon_color_disabled), notificationsIcon.getImageTintList()); ImageView micIcon = (ImageView) dialogView.findViewById(R.id.mic_button); Assert.assertEquals( - AppCompatResources.getColorStateList(context, R.color.default_icon_color_disabled), + AppCompatResources.getColorStateList(context, R.color.default_icon_color), micIcon.getImageTintList()); ImageView cameraIcon = (ImageView) dialogView.findViewById(R.id.camera_button); Assert.assertEquals( - AppCompatResources.getColorStateList(context, R.color.default_icon_color_disabled), + AppCompatResources.getColorStateList(context, R.color.default_icon_color), cameraIcon.getImageTintList()); ImageView locationIcon = (ImageView) dialogView.findViewById(R.id.location_button); Assert.assertEquals( - AppCompatResources.getColorStateList(context, R.color.default_icon_color), + AppCompatResources.getColorStateList(context, R.color.default_icon_color_disabled), locationIcon.getImageTintList()); } + + @Test + @MediumTest + public void testManagementMenuAppShortcutsProperties() { + openLaunchpadPage(); + View dialogView = LaunchpadTestUtils.openAppManagementMenu(mLaunchpadCoordinator, + mActivityTestRule.getActivity().getModalDialogManager(), 0 /* itemIndex */); + + ListView listView = dialogView.findViewById(R.id.shortcuts_list_view); + + // Assert icon and name in shortcut item view is set correctly. + Assert.assertEquals(2, listView.getChildCount()); + + View shortcut1 = listView.getChildAt(0); + Assert.assertEquals(LaunchpadTestUtils.SHORTCUT_NAME_1, + ((TextView) shortcut1.findViewById(R.id.shortcut_name)).getText()); + ImageView icon = (ImageView) shortcut1.findViewById(R.id.shortcut_icon); + Assert.assertEquals( + LaunchpadTestUtils.TEST_ICON, ((BitmapDrawable) icon.getDrawable()).getBitmap()); + + View shortcut2 = listView.getChildAt(1); + Assert.assertEquals(LaunchpadTestUtils.SHORTCUT_NAME_2, + ((TextView) shortcut2.findViewById(R.id.shortcut_name)).getText()); + icon = (ImageView) shortcut2.findViewById(R.id.shortcut_icon); + Assert.assertEquals( + LaunchpadTestUtils.TEST_ICON, ((BitmapDrawable) icon.getDrawable()).getBitmap()); + } + + @Test + @MediumTest + public void testLaunchAppShortcuts() { + openLaunchpadPage(); + ModalDialogManager modalDialogManager = + mActivityTestRule.getActivity().getModalDialogManager(); + View dialogView = LaunchpadTestUtils.openAppManagementMenu( + mLaunchpadCoordinator, modalDialogManager, 0 /* itemIndex */); + + ListView listView = dialogView.findViewById(R.id.shortcuts_list_view); + View shortcut = listView.getChildAt(0); + + Intents.init(); + intending(allOf(hasPackage(LaunchpadTestUtils.APP_PACKAGE_NAME_1))) + .respondWith(new ActivityResult(Activity.RESULT_OK, null)); + TestThreadUtils.runOnUiThreadBlocking(() -> TouchCommon.singleClickView(shortcut)); + intended(allOf(hasPackage(LaunchpadTestUtils.APP_PACKAGE_NAME_1), + hasData(LaunchpadTestUtils.SHORTCUT_URL_1)), + times(1)); + Intents.release(); + + // Assert dialog is dismissed. + Assert.assertNull(modalDialogManager.getCurrentDialogForTest()); + } }
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadTestUtils.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadTestUtils.java new file mode 100644 index 0000000..3956917 --- /dev/null +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/LaunchpadTestUtils.java
@@ -0,0 +1,99 @@ +// 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.chrome.browser.webapps.launchpad; + +import static org.junit.Assert.assertNotNull; + +import android.graphics.Bitmap; +import android.view.View; + +import androidx.recyclerview.widget.RecyclerView; + +import org.chromium.chrome.browser.browserservices.intents.WebApkExtras.ShortcutItem; +import org.chromium.chrome.browser.browserservices.intents.WebappIcon; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.components.browser_ui.site_settings.PermissionInfo; +import org.chromium.components.content_settings.ContentSettingValues; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.content_public.browser.test.util.TouchCommon; +import org.chromium.ui.modaldialog.ModalDialogManager; +import org.chromium.ui.modaldialog.ModalDialogProperties; +import org.chromium.ui.modelutil.PropertyModel; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Utility class for Launchpad instrumentation tests. + */ +public class LaunchpadTestUtils { + public static final String APP_PACKAGE_NAME_1 = "package.name.1"; + public static final String APP_NAME_1 = "App Name 1"; + public static final String APP_SHORT_NAME_1 = "App 1"; + public static final String APP_URL_1 = "https://example1.com/"; + public static final String APP_PACKAGE_NAME_2 = "package.name.2"; + public static final String APP_NAME_2 = "App Name 2"; + public static final String APP_SHORT_NAME_2 = "App 2 with long short name"; + public static final String APP_URL_2 = "https://example2.com/"; + public static final Bitmap TEST_ICON = Bitmap.createBitmap(20, 20, Bitmap.Config.ARGB_8888); + + public static final String SHORTCUT_NAME_1 = "Test Shortcut 1"; + public static final String SHORTCUT_URL_1 = "https://example1.com/11"; + public static final String SHORTCUT_NAME_2 = "Test Shortcut 2"; + public static final String SHORTCUT_URL_2 = "https://example1.com/22"; + + public static final List<ShortcutItem> MOCK_SHORTCUTS = new ArrayList<>( + Arrays.asList(new ShortcutItem(SHORTCUT_NAME_1, SHORTCUT_NAME_1, SHORTCUT_URL_1, + "iconUrl", "iconHash", new WebappIcon(TEST_ICON)), + new ShortcutItem(SHORTCUT_NAME_2, SHORTCUT_NAME_2, SHORTCUT_URL_2, "iconUrl", + "iconHash", new WebappIcon(TEST_ICON)))); + + // A mock app list, 1st item includes a list of ShortcutItems, 2nd item has no shortcuts. + public static final List<LaunchpadItem> MOCK_APP_LIST = + new ArrayList<>(Arrays.asList(new LaunchpadItem(APP_PACKAGE_NAME_1, APP_SHORT_NAME_1, + APP_NAME_1, APP_URL_1, TEST_ICON, MOCK_SHORTCUTS), + new LaunchpadItem(APP_PACKAGE_NAME_2, APP_SHORT_NAME_2, APP_NAME_2, APP_URL_2, + TEST_ICON, new ArrayList<ShortcutItem>()))); + + private LaunchpadTestUtils() {} + + /** + * Set permissions to run the test. Notifications set to Block, Mic set to Allow, + * Camera set to Allow, Location set to ASK. + */ + public static void setPermissionDefaults(String url) { + TestThreadUtils.runOnUiThreadBlocking(() -> { + Profile profile = Profile.getLastUsedRegularProfile(); + PermissionInfo notifications = new PermissionInfo(ContentSettingsType.NOTIFICATIONS, + url, null /* embedder */, false /* isEmbargoed */); + notifications.setContentSetting(profile, ContentSettingValues.BLOCK); + PermissionInfo mic = new PermissionInfo(ContentSettingsType.MEDIASTREAM_MIC, url, + null /* embedder */, false /* isEmbargoed */); + mic.setContentSetting(profile, ContentSettingValues.ALLOW); + PermissionInfo camera = new PermissionInfo(ContentSettingsType.MEDIASTREAM_CAMERA, url, + null /* embedder */, false /* isEmbargoed */); + camera.setContentSetting(profile, ContentSettingValues.ALLOW); + PermissionInfo location = new PermissionInfo(ContentSettingsType.GEOLOCATION, url, + null /* embedder */, false /* isEmbargoed */); + location.setContentSetting(profile, ContentSettingValues.ASK); + }); + } + + /** + * Helper function for opening the Management Menu for the LaunchpadItem at {@link itemIndex} + * and return the dialog view. + */ + public static View openAppManagementMenu( + LaunchpadCoordinator coordinator, ModalDialogManager dialogManager, int itemIndex) { + View item = ((RecyclerView) coordinator.getView().findViewById(R.id.launchpad_recycler)) + .getChildAt(itemIndex); + TouchCommon.longPressView(item); + PropertyModel dialogModel = dialogManager.getCurrentDialogForTest(); + assertNotNull(dialogModel); + return dialogModel.get(ModalDialogProperties.CUSTOM_VIEW); + } +}
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemProperties.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemProperties.java new file mode 100644 index 0000000..c1e50d82 --- /dev/null +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemProperties.java
@@ -0,0 +1,26 @@ +// 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.chrome.browser.webapps.launchpad; + +import android.graphics.Bitmap; +import android.view.View; + +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey; + +class ShortcutItemProperties { + private ShortcutItemProperties() {} + + public static final WritableObjectPropertyKey<String> NAME = new WritableObjectPropertyKey<>(); + public static final WritableObjectPropertyKey<CharSequence> LAUNCH_URL = + new WritableObjectPropertyKey<>(); + public static final WritableObjectPropertyKey<Bitmap> SHORTCUT_ICON = + new WritableObjectPropertyKey<>(); + + public static final WritableObjectPropertyKey<View.OnClickListener> ON_CLICK = + new WritableObjectPropertyKey<>(); + + public static final PropertyKey[] ALL_KEYS = {NAME, LAUNCH_URL, SHORTCUT_ICON, ON_CLICK}; +}
diff --git a/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemViewBinder.java b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemViewBinder.java new file mode 100644 index 0000000..a6df820 --- /dev/null +++ b/chrome/browser/android/webapps/launchpad/java/src/org/chromium/chrome/browser/webapps/launchpad/ShortcutItemViewBinder.java
@@ -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. +package org.chromium.chrome.browser.webapps.launchpad; + +import android.graphics.Bitmap; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel; + +/** + * Class responsible for binding the model and the ShortcutItemView. + */ +class ShortcutItemViewBinder { + static void bind(PropertyModel model, View view, PropertyKey propertyKey) { + if (propertyKey == ShortcutItemProperties.NAME) { + TextView titleText = view.findViewById(R.id.shortcut_name); + titleText.setText(model.get(ShortcutItemProperties.NAME)); + } else if (propertyKey == ShortcutItemProperties.SHORTCUT_ICON) { + Bitmap bitmap = model.get(ShortcutItemProperties.SHORTCUT_ICON); + ImageView imageView = view.findViewById(R.id.shortcut_icon); + imageView.setImageBitmap(bitmap); + } else if (propertyKey == ShortcutItemProperties.ON_CLICK) { + view.setOnClickListener(model.get(ShortcutItemProperties.ON_CLICK)); + } + } +}
diff --git a/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_api.cc b/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_api.cc index f62d585..62dc426 100644 --- a/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_api.cc +++ b/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_api.cc
@@ -97,8 +97,8 @@ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); scoped_refptr<storage::FileSystemContext> file_system_context = - BrowserContext::GetStoragePartition( - browser_context(), render_frame_host()->GetSiteInstance()) + browser_context() + ->GetStoragePartition(render_frame_host()->GetSiteInstance()) ->GetFileSystemContext(); storage::FileSystemURL file_system_url( file_system_context->CrackURL(GURL(url))); @@ -162,8 +162,8 @@ storage::FileSystemContext* SyncFileSystemRequestFileSystemFunction::GetFileSystemContext() { DCHECK(render_frame_host()); - return BrowserContext::GetStoragePartition( - browser_context(), render_frame_host()->GetSiteInstance()) + return browser_context() + ->GetStoragePartition(render_frame_host()->GetSiteInstance()) ->GetFileSystemContext(); } @@ -199,8 +199,8 @@ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); scoped_refptr<storage::FileSystemContext> file_system_context = - BrowserContext::GetStoragePartition( - browser_context(), render_frame_host()->GetSiteInstance()) + browser_context() + ->GetStoragePartition(render_frame_host()->GetSiteInstance()) ->GetFileSystemContext(); storage::FileSystemURL file_system_url( file_system_context->CrackURL(GURL(url))); @@ -242,8 +242,8 @@ EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &file_entry_urls)); scoped_refptr<storage::FileSystemContext> file_system_context = - BrowserContext::GetStoragePartition( - browser_context(), render_frame_host()->GetSiteInstance()) + browser_context() + ->GetStoragePartition(render_frame_host()->GetSiteInstance()) ->GetFileSystemContext(); // Map each file path->SyncFileStatus in the callback map. @@ -322,15 +322,15 @@ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); scoped_refptr<storage::FileSystemContext> file_system_context = - BrowserContext::GetStoragePartition( - browser_context(), render_frame_host()->GetSiteInstance()) + browser_context() + ->GetStoragePartition(render_frame_host()->GetSiteInstance()) ->GetFileSystemContext(); storage::FileSystemURL file_system_url( file_system_context->CrackURL(GURL(url))); scoped_refptr<storage::QuotaManager> quota_manager = - BrowserContext::GetStoragePartition( - browser_context(), render_frame_host()->GetSiteInstance()) + browser_context() + ->GetStoragePartition(render_frame_host()->GetSiteInstance()) ->GetQuotaManager(); content::GetIOThreadTaskRunner({})->PostTask(
diff --git a/chrome/browser/ash/accessibility/dictation.cc b/chrome/browser/ash/accessibility/dictation.cc index 37c59da9..9f529f0 100644 --- a/chrome/browser/ash/accessibility/dictation.cc +++ b/chrome/browser/ash/accessibility/dictation.cc
@@ -109,7 +109,7 @@ } else { speech_recognizer_ = std::make_unique<NetworkSpeechRecognizer>( weak_ptr_factory_.GetWeakPtr(), - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcessIOThread(), profile_->GetPrefs()->GetString(language::prefs::kAcceptLanguages), language);
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc index 04e7f8c..f982a61c 100644 --- a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc
@@ -425,9 +425,9 @@ // pinned apps in user preference will be removed. EnableChromeVox(); sm_.Call([controller, title]() { - controller->CreateAppShortcutLauncherItem( - ShelfID("FakeApp"), controller->shelf_model()->item_count(), - base::ASCIIToUTF16(title)); + controller->CreateAppShortcutItem(ShelfID("FakeApp"), + controller->shelf_model()->item_count(), + base::ASCIIToUTF16(title)); }); // Focus on the shelf. @@ -471,8 +471,8 @@ for (int i = 0; i < insert_app_num; i++) { std::string app_title = title + base::NumberToString(i); std::string app_id = id + base::NumberToString(i); - controller->CreateAppShortcutLauncherItem(ShelfID(app_id), base_index + i, - base::ASCIIToUTF16(app_title)); + controller->CreateAppShortcutItem(ShelfID(app_id), base_index + i, + base::ASCIIToUTF16(app_title)); } // Enable the function of speaking text under mouse.
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service.cc b/chrome/browser/ash/arc/auth/arc_auth_service.cc index 6bf5077..0af97e24 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service.cc
@@ -237,9 +237,8 @@ : profile_(Profile::FromBrowserContext(browser_context)), identity_manager_(IdentityManagerFactory::GetForProfile(profile_)), arc_bridge_service_(arc_bridge_service), - url_loader_factory_( - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetURLLoaderFactoryForBrowserProcess()) { + url_loader_factory_(profile_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()) { arc_bridge_service_->auth()->SetHost(this); arc_bridge_service_->auth()->AddObserver(this);
diff --git a/chrome/browser/ash/arc/fileapi/arc_file_system_bridge.cc b/chrome/browser/ash/arc/fileapi/arc_file_system_bridge.cc index 3d71841..f13f00a8 100644 --- a/chrome/browser/ash/arc/fileapi/arc_file_system_bridge.cc +++ b/chrome/browser/ash/arc/fileapi/arc_file_system_bridge.cc
@@ -72,8 +72,7 @@ content::BrowserContext* context, const GURL& url) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - content::StoragePartition* storage = - content::BrowserContext::GetStoragePartitionForUrl(context, url); + content::StoragePartition* storage = context->GetStoragePartitionForUrl(url); return storage->GetFileSystemContext(); }
diff --git a/chrome/browser/ash/child_accounts/parent_access_code/parent_access_service.h b/chrome/browser/ash/child_accounts/parent_access_code/parent_access_service.h index 93b7c53d..cd467f5 100644 --- a/chrome/browser/ash/child_accounts/parent_access_code/parent_access_service.h +++ b/chrome/browser/ash/child_accounts/parent_access_code/parent_access_service.h
@@ -11,8 +11,9 @@ #include "base/macros.h" #include "base/no_destructor.h" +#include "base/observer_list.h" +#include "base/observer_list_types.h" #include "chrome/browser/ash/child_accounts/parent_access_code/config_source.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "components/account_id/account_id.h" class PrefRegistrySimple;
diff --git a/chrome/browser/ash/login/existing_user_controller.cc b/chrome/browser/ash/login/existing_user_controller.cc index 20974eb..2a9473a8 100644 --- a/chrome/browser/ash/login/existing_user_controller.cc +++ b/chrome/browser/ash/login/existing_user_controller.cc
@@ -197,8 +197,8 @@ } network::mojom::NetworkContext* default_network_context = - content::BrowserContext::GetDefaultStoragePartition( - ProfileHelper::GetSigninProfile()) + ProfileHelper::GetSigninProfile() + ->GetDefaultStoragePartition() ->GetNetworkContext(); default_network_context->SaveHttpAuthCacheProxyEntries(base::BindOnce( &TransferHttpAuthCacheToSystemNetworkContext, completion_callback));
diff --git a/chrome/browser/ash/login/lock/screen_locker.cc b/chrome/browser/ash/login/lock/screen_locker.cc index 7c9bd557..62a309ed 100644 --- a/chrome/browser/ash/login/lock/screen_locker.cc +++ b/chrome/browser/ash/login/lock/screen_locker.cc
@@ -46,7 +46,7 @@ #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/ash/session_controller_client_impl.h" #include "chrome/common/chrome_switches.h" #include "chrome/grit/browser_resources.h" @@ -211,7 +211,7 @@ delegate_ = views_screen_locker_.get(); // Create and display lock screen. - CHECK(LoginScreenClient::HasInstance()); + CHECK(LoginScreenClientImpl::HasInstance()); ash::LoginScreen::Get()->ShowLockScreen(); views_screen_locker_->Init(); @@ -804,7 +804,7 @@ return; } - LoginScreenClient::Get()->auth_recorder()->RecordAuthMethod( + LoginScreenClientImpl::Get()->auth_recorder()->RecordAuthMethod( LoginAuthRecorder::AuthMethod::kFingerprint); if (scan_result != device::mojom::ScanResult::SUCCESS) {
diff --git a/chrome/browser/ash/login/lock/screen_locker_unittest.cc b/chrome/browser/ash/login/lock/screen_locker_unittest.cc index 4c4c56c..0a8800e6 100644 --- a/chrome/browser/ash/login/lock/screen_locker_unittest.cc +++ b/chrome/browser/ash/login/lock/screen_locker_unittest.cc
@@ -24,7 +24,7 @@ #include "chrome/browser/chromeos/input_method/mock_input_method_manager_impl.h" #include "chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h" #include "chrome/browser/ui/ash/assistant/assistant_client_impl.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/ash/session_controller_client_impl.h" #include "chrome/browser/ui/ash/test_login_screen.h" #include "chrome/browser/ui/ash/test_session_controller.h" @@ -163,10 +163,10 @@ // ScreenLocker dependencies: // * AccessibilityManager dependencies: FakeAccessibilityController fake_accessibility_controller_; - // * LoginScreenClient dependencies: + // * LoginScreenClientImpl dependencies: session_manager::SessionManager session_manager_; TestLoginScreen test_login_screen_; - LoginScreenClient login_screen_client_; + LoginScreenClientImpl login_screen_client_; // * SessionControllerClientImpl dependencies: FakeChromeUserManager* fake_user_manager_{new FakeChromeUserManager()}; user_manager::ScopedUserManager scoped_user_manager_{
diff --git a/chrome/browser/ash/login/lock/views_screen_locker.cc b/chrome/browser/ash/login/lock/views_screen_locker.cc index 79bfe86..a0019005 100644 --- a/chrome/browser/ash/login/lock/views_screen_locker.cc +++ b/chrome/browser/ash/login/lock/views_screen_locker.cc
@@ -45,7 +45,7 @@ ViewsScreenLocker::ViewsScreenLocker(ScreenLocker* screen_locker) : screen_locker_(screen_locker), system_info_updater_(std::make_unique<MojoSystemInfoDispatcher>()) { - LoginScreenClient::Get()->SetDelegate(this); + LoginScreenClientImpl::Get()->SetDelegate(this); user_board_view_mojo_ = std::make_unique<UserBoardViewMojo>(); user_selection_screen_ = std::make_unique<ChromeUserSelectionScreen>(DisplayedScreen::LOCK_SCREEN); @@ -54,7 +54,7 @@ ViewsScreenLocker::~ViewsScreenLocker() { lock_screen_apps::StateController::Get()->SetFocusCyclerDelegate(nullptr); - LoginScreenClient::Get()->SetDelegate(nullptr); + LoginScreenClientImpl::Get()->SetDelegate(nullptr); } void ViewsScreenLocker::Init() {
diff --git a/chrome/browser/ash/login/lock/views_screen_locker.h b/chrome/browser/ash/login/lock/views_screen_locker.h index 3b50e699..b91f0199 100644 --- a/chrome/browser/ash/login/lock/views_screen_locker.h +++ b/chrome/browser/ash/login/lock/views_screen_locker.h
@@ -10,7 +10,7 @@ #include "base/time/time.h" #include "chrome/browser/ash/lock_screen_apps/focus_cycler_delegate.h" #include "chrome/browser/ash/login/lock/screen_locker.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chromeos/dbus/power/power_manager_client.h" namespace chromeos { @@ -19,11 +19,11 @@ class UserSelectionScreen; class MojoSystemInfoDispatcher; -// ViewsScreenLocker acts like LoginScreenClient::Delegate which handles method -// calls coming from ash into chrome. +// ViewsScreenLocker acts like LoginScreenClientImpl::Delegate which handles +// method calls coming from ash into chrome. // It is also a ScreenLocker::Delegate which handles calls from chrome into // ash (views-based lockscreen). -class ViewsScreenLocker : public LoginScreenClient::Delegate, +class ViewsScreenLocker : public LoginScreenClientImpl::Delegate, public ScreenLocker::Delegate, public PowerManagerClient::Observer, public lock_screen_apps::FocusCyclerDelegate { @@ -39,7 +39,7 @@ void ClearErrors() override; void OnAshLockAnimationFinished() override; - // LoginScreenClient::Delegate + // LoginScreenClientImpl::Delegate void HandleAuthenticateUserWithPasswordOrPin( const AccountId& account_id, const std::string& password,
diff --git a/chrome/browser/ash/login/login_auth_recorder.h b/chrome/browser/ash/login/login_auth_recorder.h index 7d230b6..74d33b14e 100644 --- a/chrome/browser/ash/login/login_auth_recorder.h +++ b/chrome/browser/ash/login/login_auth_recorder.h
@@ -14,7 +14,7 @@ // A metrics recorder that records login authentication related metrics. // This keeps track of the last authentication method we used and records // switching between different authentication methods. -// This is tied to LoginScreenClient lifetime. +// This is tied to LoginScreenClientImpl lifetime. class LoginAuthRecorder : public session_manager::SessionManagerObserver { public: // Authentication method to unlock the screen. This enum is used to back an
diff --git a/chrome/browser/ash/login/login_auth_recorder_browsertest.cc b/chrome/browser/ash/login/login_auth_recorder_browsertest.cc index ce0f3285..0b151ab 100644 --- a/chrome/browser/ash/login/login_auth_recorder_browsertest.cc +++ b/chrome/browser/ash/login/login_auth_recorder_browsertest.cc
@@ -6,7 +6,7 @@ #include "ash/public/cpp/test/shell_test_api.h" #include "base/test/metrics/histogram_tester.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/test/base/in_process_browser_test.h" #include "components/session_manager/core/session_manager.h" #include "content/public/test/browser_test.h" @@ -41,7 +41,7 @@ } LoginAuthRecorder* metrics_recorder() { - return LoginScreenClient::Get()->auth_recorder(); + return LoginScreenClientImpl::Get()->auth_recorder(); } void SetAuthMethod(LoginAuthRecorder::AuthMethod auth_method) {
diff --git a/chrome/browser/ash/login/login_screen_policy_browsertest.cc b/chrome/browser/ash/login/login_screen_policy_browsertest.cc index 15523723..5c98b10 100644 --- a/chrome/browser/ash/login/login_screen_policy_browsertest.cc +++ b/chrome/browser/ash/login/login_screen_policy_browsertest.cc
@@ -25,7 +25,6 @@ #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/lifetime/application_lifetime.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/grit/generated_resources.h" #include "chrome/test/base/ui_test_utils.h" #include "chromeos/settings/cros_settings_names.h"
diff --git a/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc b/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc index 8554f5e1..76b38fe0 100644 --- a/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc +++ b/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc
@@ -27,7 +27,6 @@ #include "chrome/browser/chromeos/input_method/input_method_persistence.h" #include "chrome/browser/chromeos/language_preferences.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/browser/ui/ash/login_screen_shown_observer.h" #include "chrome/browser/ui/webui/chromeos/login/user_creation_screen_handler.h" #include "chrome/common/pref_names.h"
diff --git a/chrome/browser/ash/login/profile_auth_data_unittest.cc b/chrome/browser/ash/login/profile_auth_data_unittest.cc index fa0968b..9a3b412 100644 --- a/chrome/browser/ash/login/profile_auth_data_unittest.cc +++ b/chrome/browser/ash/login/profile_auth_data_unittest.cc
@@ -70,8 +70,8 @@ auto network_context = std::make_unique<network::NetworkContext>( network_service, network_context_remote.InitWithNewPipeAndPassReceiver(), std::move(params)); - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->SetNetworkContextForTesting(std::move(network_context_remote)); + browser_context->GetDefaultStoragePartition()->SetNetworkContextForTesting( + std::move(network_context_remote)); return network_context; } @@ -143,10 +143,8 @@ bool transfer_auth_cookies_on_first_login, bool transfer_saml_auth_cookies_on_subsequent_login) { base::RunLoop run_loop; - ProfileAuthData::Transfer(content::BrowserContext::GetDefaultStoragePartition( - &login_browser_context_), - content::BrowserContext::GetDefaultStoragePartition( - &user_browser_context_), + ProfileAuthData::Transfer(login_browser_context_.GetDefaultStoragePartition(), + user_browser_context_.GetDefaultStoragePartition(), transfer_auth_cookies_on_first_login, transfer_saml_auth_cookies_on_subsequent_login, run_loop.QuitClosure()); @@ -265,7 +263,7 @@ network::mojom::CookieManager* ProfileAuthDataTest::GetCookies( content::BrowserContext* browser_context) { - return content::BrowserContext::GetDefaultStoragePartition(browser_context) + return browser_context->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); }
diff --git a/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc b/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc index b8197988..996313f 100644 --- a/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc +++ b/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc
@@ -196,8 +196,7 @@ } ProfileAuthData::Transfer( - signin_partition, - content::BrowserContext::GetDefaultStoragePartition(primary_profile_), + signin_partition, primary_profile_->GetDefaultStoragePartition(), false /*transfer_auth_cookies_on_first_login*/, transfer_saml_auth_cookies_on_subsequent_login, base::BindOnce(&InSessionPasswordSyncManager::OnCookiesTransfered,
diff --git a/chrome/browser/ash/login/saml/saml_browsertest.cc b/chrome/browser/ash/login/saml/saml_browsertest.cc index 6d5f924..e5d75eb 100644 --- a/chrome/browser/ash/login/saml/saml_browsertest.cc +++ b/chrome/browser/ash/login/saml/saml_browsertest.cc
@@ -1127,7 +1127,7 @@ user_manager::UserManager::Get()->GetActiveUser()); ASSERT_TRUE(profile); base::RunLoop run_loop; - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->GetAllCookies(base::BindLambdaForTesting( [&](const std::vector<net::CanonicalCookie>& cookies) {
diff --git a/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher.cc b/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher.cc index 6c6e054..869b443 100644 --- a/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher.cc +++ b/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher.cc
@@ -55,8 +55,8 @@ display_config.InitWithNewPipeAndPassReceiver()); return std::make_unique<RecommendAppsFetcherImpl>( delegate, std::move(display_config), - content::BrowserContext::GetDefaultStoragePartition( - ProfileManager::GetActiveUserProfile()) + ProfileManager::GetActiveUserProfile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get()); }
diff --git a/chrome/browser/ash/login/screens/user_selection_screen.cc b/chrome/browser/ash/login/screens/user_selection_screen.cc index c06e4bb..02e222ae 100644 --- a/chrome/browser/ash/login/screens/user_selection_screen.cc +++ b/chrome/browser/ash/login/screens/user_selection_screen.cc
@@ -41,7 +41,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" #include "chrome/common/pref_names.h" #include "chrome/grit/generated_resources.h" @@ -963,8 +963,8 @@ user_info.can_remove = CanRemoveUser(user); // Send a request to get keyboard layouts for default locale. - if (is_public_account && LoginScreenClient::HasInstance()) { - LoginScreenClient::Get()->RequestPublicSessionKeyboardLayouts( + if (is_public_account && LoginScreenClientImpl::HasInstance()) { + LoginScreenClientImpl::Get()->RequestPublicSessionKeyboardLayouts( account_id, user_info.public_account_info->default_locale); }
diff --git a/chrome/browser/ash/login/session/user_session_manager.cc b/chrome/browser/ash/login/session/user_session_manager.cc index 259e46a..cd68d13 100644 --- a/chrome/browser/ash/login/session/user_session_manager.cc +++ b/chrome/browser/ash/login/session/user_session_manager.cc
@@ -1492,8 +1492,7 @@ // sign in using GAIA (webview) and webview didn't yet initialize. if (signin_partition) { ProfileAuthData::Transfer( - signin_partition, - content::BrowserContext::GetDefaultStoragePartition(profile), + signin_partition, profile->GetDefaultStoragePartition(), transfer_auth_cookies_on_first_login, transfer_saml_auth_cookies_on_subsequent_login, base::BindOnce(
diff --git a/chrome/browser/ash/login/signin/oauth2_browsertest.cc b/chrome/browser/ash/login/signin/oauth2_browsertest.cc index 61f2992..838f1089 100644 --- a/chrome/browser/ash/login/signin/oauth2_browsertest.cc +++ b/chrome/browser/ash/login/signin/oauth2_browsertest.cc
@@ -478,7 +478,7 @@ void ReadCookies(Profile* profile) { base::RunLoop run_loop; - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->GetAllCookies(base::BindOnce(&CookieReader::OnGotAllCookies, base::Unretained(this),
diff --git a/chrome/browser/ash/login/signin_partition_manager.cc b/chrome/browser/ash/login/signin_partition_manager.cc index cfea901..bd89674 100644 --- a/chrome/browser/ash/login/signin_partition_manager.cc +++ b/chrome/browser/ash/login/signin_partition_manager.cc
@@ -94,8 +94,8 @@ auto storage_partition_config = content::StoragePartitionConfig::Create( browser_context_, storage_partition_domain_, current_storage_partition_name_, true /*in_memory */); - current_storage_partition_ = content::BrowserContext::GetStoragePartition( - browser_context_, storage_partition_config, true); + current_storage_partition_ = + browser_context_->GetStoragePartition(storage_partition_config, true); if (on_create_new_storage_partition_) { on_create_new_storage_partition_.Run(current_storage_partition_); }
diff --git a/chrome/browser/ash/login/test/user_adding_screen_utils.cc b/chrome/browser/ash/login/test/user_adding_screen_utils.cc index d29ce09..41597a0 100644 --- a/chrome/browser/ash/login/test/user_adding_screen_utils.cc +++ b/chrome/browser/ash/login/test/user_adding_screen_utils.cc
@@ -6,7 +6,7 @@ #include "base/run_loop.h" #include "chrome/browser/ash/login/ui/user_adding_screen.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/ash/login_screen_shown_observer.h" namespace chromeos { @@ -18,10 +18,10 @@ class LoginScreenWaiter : public LoginScreenShownObserver { public: LoginScreenWaiter() { - LoginScreenClient::Get()->AddLoginScreenShownObserver(this); + LoginScreenClientImpl::Get()->AddLoginScreenShownObserver(this); } ~LoginScreenWaiter() override { - LoginScreenClient::Get()->RemoveLoginScreenShownObserver(this); + LoginScreenClientImpl::Get()->RemoveLoginScreenShownObserver(this); } LoginScreenWaiter(const LoginScreenWaiter&) = delete; LoginScreenWaiter& operator=(const LoginScreenWaiter&) = delete;
diff --git a/chrome/browser/ash/login/ui/kiosk_app_menu_controller.cc b/chrome/browser/ash/login/ui/kiosk_app_menu_controller.cc index 2e966699..85cf2c9 100644 --- a/chrome/browser/ash/login/ui/kiosk_app_menu_controller.cc +++ b/chrome/browser/ash/login/ui/kiosk_app_menu_controller.cc
@@ -17,7 +17,7 @@ #include "chrome/browser/ash/app_mode/kiosk_app_types.h" #include "chrome/browser/ash/app_mode/web_app/web_kiosk_app_manager.h" #include "chrome/browser/ash/login/ui/login_display_host.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "extensions/grit/extensions_browser_resources.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/image/image_skia.h" @@ -46,7 +46,7 @@ } void KioskAppMenuController::SendKioskApps() { - if (!LoginScreenClient::HasInstance()) + if (!LoginScreenClientImpl::HasInstance()) return; std::vector<ash::KioskAppMenuEntry> output;
diff --git a/chrome/browser/ash/login/ui/login_display_host_mojo.cc b/chrome/browser/ash/login/ui/login_display_host_mojo.cc index e4167fd..1fea220 100644 --- a/chrome/browser/ash/login/ui/login_display_host_mojo.cc +++ b/chrome/browser/ash/login/ui/login_display_host_mojo.cc
@@ -31,7 +31,7 @@ #include "chrome/browser/ash/login/wizard_controller.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/ash/system_tray_client.h" #include "chrome/browser/ui/ash/wallpaper_controller_client_impl.h" #include "chrome/browser/ui/webui/chromeos/login/gaia_password_changed_screen_handler.h" @@ -96,7 +96,7 @@ ->pin_dialog_manager() ->RemovePinDialogHost(&security_token_pin_dialog_host_ash_impl_); } - LoginScreenClient::Get()->SetDelegate(nullptr); + LoginScreenClientImpl::Get()->SetDelegate(nullptr); if (dialog_) { dialog_->GetOobeUI()->signin_screen_handler()->SetDelegate(nullptr); StopObservingOobeUI(); @@ -235,10 +235,10 @@ } void LoginDisplayHostMojo::OnStartSignInScreen() { - // This function may be called early in startup flow, before LoginScreenClient - // has been initialized. Wait until LoginScreenClient is initialized as it is - // a common dependency. - if (!LoginScreenClient::HasInstance()) { + // This function may be called early in startup flow, before + // LoginScreenClientImpl has been initialized. Wait until + // LoginScreenClientImpl is initialized as it is a common dependency. + if (!LoginScreenClientImpl::HasInstance()) { // TODO(jdufault): Add a timeout here / make sure we do not post infinitely. base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&LoginDisplayHostMojo::OnStartSignInScreen,
diff --git a/chrome/browser/ash/login/ui/login_display_host_mojo.h b/chrome/browser/ash/login/ui/login_display_host_mojo.h index 9ee829e..fbcfad827d 100644 --- a/chrome/browser/ash/login/ui/login_display_host_mojo.h +++ b/chrome/browser/ash/login/ui/login_display_host_mojo.h
@@ -20,7 +20,7 @@ #include "chrome/browser/ash/login/security_token_pin_dialog_host_ash_impl.h" #include "chrome/browser/ash/login/ui/login_display_host_common.h" #include "chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "chromeos/login/auth/auth_status_consumer.h" #include "chromeos/login/auth/challenge_response_key.h" @@ -43,7 +43,7 @@ // A LoginDisplayHost instance that sends requests to the views-based signin // screen. class LoginDisplayHostMojo : public LoginDisplayHostCommon, - public LoginScreenClient::Delegate, + public LoginScreenClientImpl::Delegate, public AuthStatusConsumer, public OobeUI::Observer, public views::ViewObserver { @@ -97,7 +97,7 @@ void AddObserver(LoginDisplayHost::Observer* observer) override; void RemoveObserver(LoginDisplayHost::Observer* observer) override; - // LoginScreenClient::Delegate: + // LoginScreenClientImpl::Delegate: void HandleAuthenticateUserWithPasswordOrPin( const AccountId& account_id, const std::string& password,
diff --git a/chrome/browser/ash/login/ui/login_display_mojo.cc b/chrome/browser/ash/login/ui/login_display_mojo.cc index 271ff01..00bc89c 100644 --- a/chrome/browser/ash/login/ui/login_display_mojo.cc +++ b/chrome/browser/ash/login/ui/login_display_mojo.cc
@@ -18,7 +18,7 @@ #include "chrome/browser/ash/login/ui/login_display_host_mojo.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/webui/chromeos/login/enable_adb_sideloading_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h" @@ -64,7 +64,7 @@ bool show_users, bool show_new_user) { host_->SetUserCount(filtered_users.size()); - auto* client = LoginScreenClient::Get(); + auto* client = LoginScreenClientImpl::Get(); // ExistingUserController::DeviceSettingsChanged and others may initialize the // login screen multiple times. Views-login only supports initialization once.
diff --git a/chrome/browser/ash/login/ui/login_screen_extension_ui/web_dialog_view.cc b/chrome/browser/ash/login/ui/login_screen_extension_ui/web_dialog_view.cc index dd7ce85..4f9747b 100644 --- a/chrome/browser/ash/login/ui/login_screen_extension_ui/web_dialog_view.cc +++ b/chrome/browser/ash/login/ui/login_screen_extension_ui/web_dialog_view.cc
@@ -6,7 +6,7 @@ #include "ash/public/cpp/login_screen.h" #include "chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "content/public/browser/browser_context.h" #include "ui/views/metadata/metadata_impl_macros.h" @@ -23,14 +23,14 @@ delegate_(delegate) { views::WidgetDelegate::SetShowTitle(!delegate_ || delegate_->ShouldCenterDialogTitleText()); - if (LoginScreenClient::HasInstance()) { - LoginScreenClient::Get()->AddSystemTrayObserver(this); + if (LoginScreenClientImpl::HasInstance()) { + LoginScreenClientImpl::Get()->AddSystemTrayObserver(this); } } WebDialogView::~WebDialogView() { - if (LoginScreenClient::HasInstance()) { - LoginScreenClient::Get()->RemoveSystemTrayObserver(this); + if (LoginScreenClientImpl::HasInstance()) { + LoginScreenClientImpl::Get()->RemoveSystemTrayObserver(this); } }
diff --git a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc index 02ec066d..0ed03b55 100644 --- a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc +++ b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc
@@ -309,13 +309,12 @@ } void OobeUIDialogDelegate::Show() { - if (LoginScreenClient::Get()) { - scoped_system_tray_observer_ = std::make_unique< - base::ScopedObservation<LoginScreenClient, ash::SystemTrayObserver, - &LoginScreenClient::AddSystemTrayObserver, - &LoginScreenClient::RemoveSystemTrayObserver>>( - this); - scoped_system_tray_observer_->Observe(LoginScreenClient::Get()); + if (LoginScreenClientImpl::Get()) { + scoped_system_tray_observer_ = std::make_unique<base::ScopedObservation< + LoginScreenClientImpl, ash::SystemTrayObserver, + &LoginScreenClientImpl::AddSystemTrayObserver, + &LoginScreenClientImpl::RemoveSystemTrayObserver>>(this); + scoped_system_tray_observer_->Observe(LoginScreenClientImpl::Get()); } widget_->Show(); if (state_ == ash::OobeDialogState::HIDDEN) {
diff --git a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h index 0d98693..c64cae77 100644 --- a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h +++ b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h
@@ -15,7 +15,7 @@ #include "base/scoped_observation.h" #include "chrome/browser/ash/login/screens/error_screen.h" #include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/chrome_web_modal_dialog_manager_delegate.h" #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "components/web_modal/web_contents_modal_dialog_host.h" @@ -154,10 +154,10 @@ base::ScopedObservation<OobeUI, OobeUI::Observer> oobe_ui_observer_{this}; std::unique_ptr< - base::ScopedObservation<LoginScreenClient, + base::ScopedObservation<LoginScreenClientImpl, ash::SystemTrayObserver, - &LoginScreenClient::AddSystemTrayObserver, - &LoginScreenClient::RemoveSystemTrayObserver>> + &LoginScreenClientImpl::AddSystemTrayObserver, + &LoginScreenClientImpl::RemoveSystemTrayObserver>> scoped_system_tray_observer_; std::map<ui::Accelerator, ash::LoginAcceleratorAction> accel_map_;
diff --git a/chrome/browser/ash/login/ui/user_adding_screen.cc b/chrome/browser/ash/login/ui/user_adding_screen.cc index c64a32d2..7928004 100644 --- a/chrome/browser/ash/login/ui/user_adding_screen.cc +++ b/chrome/browser/ash/login/ui/user_adding_screen.cc
@@ -14,7 +14,7 @@ #include "chrome/browser/ash/login/ui/login_display_host_mojo.h" #include "chrome/browser/ash/login/ui/login_display_host_webui.h" #include "chrome/browser/ash/login/ui/user_adding_screen_input_methods_controller.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/ash/wallpaper_controller_client_impl.h" #include "components/session_manager/core/session_manager.h" #include "components/user_manager/user_manager.h" @@ -42,16 +42,16 @@ class LoadTimeReporter : public LoginScreenShownObserver { public: LoadTimeReporter() : start_time_(base::TimeTicks::Now()) { - LoginScreenClient::Get()->AddLoginScreenShownObserver(this); + LoginScreenClientImpl::Get()->AddLoginScreenShownObserver(this); } LoadTimeReporter(const LoadTimeReporter&) = delete; LoadTimeReporter& operator=(const LoadTimeReporter&) = delete; ~LoadTimeReporter() override { - // In tests, LoginScreenClient's instance may be destroyed before + // In tests, LoginScreenClientImpl's instance may be destroyed before // LoadTimeReporterMojo's destructor is called. - if (LoginScreenClient::HasInstance()) - LoginScreenClient::Get()->RemoveLoginScreenShownObserver(this); + if (LoginScreenClientImpl::HasInstance()) + LoginScreenClientImpl::Get()->RemoveLoginScreenShownObserver(this); } // LoginScreenShownObserver: @@ -59,7 +59,7 @@ const base::TimeDelta load_time = base::TimeTicks::Now() - start_time_; UmaHistogramTimes("ChromeOS.UserAddingScreen.LoadTimeViewsBased", load_time); - LoginScreenClient::Get()->RemoveLoginScreenShownObserver(this); + LoginScreenClientImpl::Get()->RemoveLoginScreenShownObserver(this); } private:
diff --git a/chrome/browser/ash/login/ui/user_adding_screen_browsertest.cc b/chrome/browser/ash/login/ui/user_adding_screen_browsertest.cc index adfb6404..1e210c3 100644 --- a/chrome/browser/ash/login/ui/user_adding_screen_browsertest.cc +++ b/chrome/browser/ash/login/ui/user_adding_screen_browsertest.cc
@@ -24,7 +24,6 @@ #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/in_process_browser_test.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/ash/login/ui/webui_login_view.cc b/chrome/browser/ash/login/ui/webui_login_view.cc index 817db54..950e6ac 100644 --- a/chrome/browser/ash/login/ui/webui_login_view.cc +++ b/chrome/browser/ash/login/ui/webui_login_view.cc
@@ -30,7 +30,7 @@ #include "chrome/browser/renderer_preferences_util.h" #include "chrome/browser/sessions/session_tab_helper_factory.h" #include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/ash/system_tray_client.h" #include "chrome/browser/ui/autofill/chrome_autofill_client.h" #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" @@ -122,8 +122,8 @@ AddAccelerator(i->first); } - if (LoginScreenClient::HasInstance()) { - LoginScreenClient::Get()->AddSystemTrayObserver(this); + if (LoginScreenClientImpl::HasInstance()) { + LoginScreenClientImpl::Get()->AddSystemTrayObserver(this); observing_system_tray_focus_ = true; } } @@ -133,8 +133,8 @@ observer.OnHostDestroying(); // TODO(crbug.com/1188526) - Improve the observation of the system tray - if (observing_system_tray_focus_ && LoginScreenClient::HasInstance()) - LoginScreenClient::Get()->RemoveSystemTrayObserver(this); + if (observing_system_tray_focus_ && LoginScreenClientImpl::HasInstance()) + LoginScreenClientImpl::Get()->RemoveSystemTrayObserver(this); ChromeKeyboardControllerClient::Get()->RemoveObserver(this); // Clear any delegates we have set on the WebView. @@ -318,11 +318,11 @@ break; } case chrome::NOTIFICATION_APP_TERMINATING: { - // In some tests, WebUILoginView remains after LoginScreenClient gets + // In some tests, WebUILoginView remains after LoginScreenClientImpl gets // deleted on shutdown. It should unregister itself before the deletion // happens. if (observing_system_tray_focus_) { - LoginScreenClient::Get()->RemoveSystemTrayObserver(this); + LoginScreenClientImpl::Get()->RemoveSystemTrayObserver(this); observing_system_tray_focus_ = false; } break; @@ -421,8 +421,8 @@ } void WebUILoginView::OnLoginPromptVisible() { - if (!observing_system_tray_focus_ && LoginScreenClient::HasInstance()) { - LoginScreenClient::Get()->AddSystemTrayObserver(this); + if (!observing_system_tray_focus_ && LoginScreenClientImpl::HasInstance()) { + LoginScreenClientImpl::Get()->AddSystemTrayObserver(this); observing_system_tray_focus_ = true; } // If we're hidden than will generate this signal once we're shown.
diff --git a/chrome/browser/ash/login/user_board_view_mojo.cc b/chrome/browser/ash/login/user_board_view_mojo.cc index af218204..f2834f1 100644 --- a/chrome/browser/ash/login/user_board_view_mojo.cc +++ b/chrome/browser/ash/login/user_board_view_mojo.cc
@@ -10,7 +10,7 @@ #include "ash/public/cpp/login_screen_model.h" #include "ash/public/cpp/login_types.h" #include "chrome/browser/ash/login/lock_screen_utils.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" namespace chromeos { @@ -86,8 +86,8 @@ default_locale, multiple_recommended_locales); // Send a request to get keyboard layouts for `default_locale`. - LoginScreenClient::Get()->RequestPublicSessionKeyboardLayouts(account_id, - default_locale); + LoginScreenClientImpl::Get()->RequestPublicSessionKeyboardLayouts( + account_id, default_locale); } void UserBoardViewMojo::SetPublicSessionShowFullManagementDisclosure(
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc index 6a34229a..e66bd7f 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc
@@ -719,8 +719,9 @@ } network::mojom::URLLoaderFactory* UserImageManagerImpl::GetURLLoaderFactory() { - return content::BrowserContext::GetDefaultStoragePartition( - ProfileHelper::Get()->GetProfileByUserUnsafe(GetUser())) + return ProfileHelper::Get() + ->GetProfileByUserUnsafe(GetUser()) + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); }
diff --git a/chrome/browser/ash/login/webview_login_browsertest.cc b/chrome/browser/ash/login/webview_login_browsertest.cc index 0605be5..5c3a88f0 100644 --- a/chrome/browser/ash/login/webview_login_browsertest.cc +++ b/chrome/browser/ash/login/webview_login_browsertest.cc
@@ -313,8 +313,7 @@ bool* out_web_view_found, content::WebContents* guest_contents) { content::StoragePartition* guest_storage_partition = - content::BrowserContext::GetStoragePartition( - browser_context, guest_contents->GetSiteInstance()); + browser_context->GetStoragePartition(guest_contents->GetSiteInstance()); if (guest_storage_partition == expected_storage_partition) *out_web_view_found = true;
diff --git a/chrome/browser/ash/login/wizard_controller.cc b/chrome/browser/ash/login/wizard_controller.cc index 6714d0d..bb6d6b2 100644 --- a/chrome/browser/ash/login/wizard_controller.cc +++ b/chrome/browser/ash/login/wizard_controller.cc
@@ -115,7 +115,6 @@ #include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/browser/ui/webui/chromeos/login/active_directory_login_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/active_directory_password_change_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.h"
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_drive_image_download_service.cc b/chrome/browser/ash/plugin_vm/plugin_vm_drive_image_download_service.cc index 5e541f0..31ae4ab7 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_drive_image_download_service.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_drive_image_download_service.cc
@@ -125,7 +125,7 @@ IdentityManagerFactory::GetForProfile(profile); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_files_unittest.cc b/chrome/browser/ash/plugin_vm/plugin_vm_files_unittest.cc index f8d698dac..c18d639 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_files_unittest.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_files_unittest.cc
@@ -177,13 +177,13 @@ ASSERT_FALSE(cicerone_response_callback.is_null()); ash::ShelfID shelf_id(kPluginVmShelfAppId); - auto launcher_item_controller = + auto shelf_item_controller = std::make_unique<AppWindowShelfItemController>(shelf_id); MockAppWindowBase mock_window(shelf_id, nullptr); - launcher_item_controller->AddWindow(&mock_window); - mock_window.SetController(launcher_item_controller.get()); + shelf_item_controller->AddWindow(&mock_window); + mock_window.SetController(shelf_item_controller.get()); shelf_model.SetShelfItemDelegate(ash::ShelfID(kPluginVmShelfAppId), - std::move(launcher_item_controller)); + std::move(shelf_item_controller)); vm_tools::cicerone::LaunchContainerApplicationResponse response; response.set_success(true); EXPECT_CALL(mock_window, Activate());
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc b/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc index 21ac325..880b37e4 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc
@@ -43,7 +43,7 @@ int32_t event_flags, int64_t display_id) override {} void Close() override { - ChromeShelfController::instance()->CloseLauncherItem( + ChromeShelfController::instance()->CloseItem( ash::ShelfID(kPluginVmShelfAppId)); } }; @@ -186,16 +186,15 @@ ash::ShelfID shelf_id(kPluginVmShelfAppId); std::unique_ptr<ash::ShelfItemDelegate> delegate = std::make_unique<FakeShelfItemDelegate>(shelf_id); - ChromeShelfController* laucher_controller = ChromeShelfController::instance(); + ChromeShelfController* shelf_controller = ChromeShelfController::instance(); // Similar logic to AppServiceAppWindowShelfController, for handling pins // and spinners. - if (laucher_controller->GetItem(shelf_id)) { - laucher_controller->shelf_model()->SetShelfItemDelegate( - shelf_id, std::move(delegate)); - laucher_controller->SetItemStatus(shelf_id, ash::STATUS_RUNNING); + if (shelf_controller->GetItem(shelf_id)) { + shelf_controller->shelf_model()->SetShelfItemDelegate(shelf_id, + std::move(delegate)); + shelf_controller->SetItemStatus(shelf_id, ash::STATUS_RUNNING); } else { - laucher_controller->CreateAppLauncherItem(std::move(delegate), - ash::STATUS_RUNNING); + shelf_controller->CreateAppItem(std::move(delegate), ash::STATUS_RUNNING); } }
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc index a87fd21a..0ff25fd 100644 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -206,7 +206,7 @@ scoped_refptr<network::SharedURLLoaderFactory> ChromeAutocompleteProviderClient::GetURLLoaderFactory() { - return content::BrowserContext::GetDefaultStoragePartition(profile_) + return profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); } @@ -443,7 +443,7 @@ content::StoragePartition* partition = storage_partition_; if (!partition) - partition = content::BrowserContext::GetDefaultStoragePartition(profile_); + partition = profile_->GetDefaultStoragePartition(); if (!partition) return;
diff --git a/chrome/browser/autocomplete/document_suggestions_service_factory.cc b/chrome/browser/autocomplete/document_suggestions_service_factory.cc index 7caa02f..be19b43 100644 --- a/chrome/browser/autocomplete/document_suggestions_service_factory.cc +++ b/chrome/browser/autocomplete/document_suggestions_service_factory.cc
@@ -32,9 +32,8 @@ signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(profile); return new DocumentSuggestionsService( - identity_manager, - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess()); + identity_manager, profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()); } DocumentSuggestionsServiceFactory::DocumentSuggestionsServiceFactory()
diff --git a/chrome/browser/autocomplete/remote_suggestions_service_factory.cc b/chrome/browser/autocomplete/remote_suggestions_service_factory.cc index 54bc2d0..d9fa615 100644 --- a/chrome/browser/autocomplete/remote_suggestions_service_factory.cc +++ b/chrome/browser/autocomplete/remote_suggestions_service_factory.cc
@@ -28,7 +28,7 @@ content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); return new RemoteSuggestionsService( - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc b/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc index 1eac6951..e29b6408 100644 --- a/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc +++ b/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc
@@ -50,7 +50,7 @@ personal_data, autocomplete_history_manager, "en-US", - AutofillHandler::DISABLE_AUTOFILL_DOWNLOAD_MANAGER, + AutofillManager::DISABLE_AUTOFILL_DOWNLOAD_MANAGER, std::move(cc_access_manager)) {} ~TestBrowserAutofillManager() override = default;
diff --git a/chrome/browser/autofill/strike_database_factory.cc b/chrome/browser/autofill/strike_database_factory.cc index 7d1c6e5..0ccc46e 100644 --- a/chrome/browser/autofill/strike_database_factory.cc +++ b/chrome/browser/autofill/strike_database_factory.cc
@@ -37,8 +37,7 @@ Profile* profile = Profile::FromBrowserContext(context); leveldb_proto::ProtoDatabaseProvider* db_provider = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetProtoDatabaseProvider(); + profile->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); // Note: This instance becomes owned by an object that never gets destroyed, // effectively leaking it until browser close. Only one is created per
diff --git a/chrome/browser/background_sync/background_sync_delegate_impl.cc b/chrome/browser/background_sync/background_sync_delegate_impl.cc index 3e9cbbd1..51ff1db 100644 --- a/chrome/browser/background_sync/background_sync_delegate_impl.cc +++ b/chrome/browser/background_sync/background_sync_delegate_impl.cc
@@ -159,8 +159,8 @@ suspended_periodic_sync_origins_.erase(iter); - auto* storage_partition = content::BrowserContext::GetStoragePartitionForUrl( - profile_, url, /* can_create= */ false); + auto* storage_partition = + profile_->GetStoragePartitionForUrl(url, /* can_create= */ false); if (!storage_partition) return;
diff --git a/chrome/browser/bitmap_fetcher/bitmap_fetcher_browsertest.cc b/chrome/browser/bitmap_fetcher/bitmap_fetcher_browsertest.cc index 55f9a1f3..e8106ab 100644 --- a/chrome/browser/bitmap_fetcher/bitmap_fetcher_browsertest.cc +++ b/chrome/browser/bitmap_fetcher/bitmap_fetcher_browsertest.cc
@@ -153,10 +153,11 @@ std::string(), net::ReferrerPolicy::REDUCE_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, network::mojom::CredentialsMode::kInclude); - fetcher.Start( - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + fetcher.Start(browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); // Blocks until test delegate is notified via a callback. delegate.Wait(); @@ -200,10 +201,11 @@ std::string(), net::ReferrerPolicy::REDUCE_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, network::mojom::CredentialsMode::kInclude); - fetcher.Start( - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + fetcher.Start(browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); // Blocks until test delegate is notified via a callback. delegate.Wait(); @@ -220,10 +222,11 @@ std::string(), net::ReferrerPolicy::REDUCE_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, network::mojom::CredentialsMode::kInclude); - fetcher.Start( - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + fetcher.Start(browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); // Blocks until test delegate is notified via a callback. delegate.Wait(); @@ -240,10 +243,11 @@ std::string(), net::ReferrerPolicy::REDUCE_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, network::mojom::CredentialsMode::kInclude); - fetcher.Start( - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + fetcher.Start(browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); delegate.Wait(); EXPECT_FALSE(delegate.success()); @@ -263,10 +267,11 @@ std::string(), net::ReferrerPolicy::REDUCE_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, network::mojom::CredentialsMode::kInclude); - fetcher.Start( - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + fetcher.Start(browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); delegate.Wait(); // Ensure image is marked as succeeded.
diff --git a/chrome/browser/bitmap_fetcher/bitmap_fetcher_service.cc b/chrome/browser/bitmap_fetcher/bitmap_fetcher_service.cc index 07424d4..56dc8de 100644 --- a/chrome/browser/bitmap_fetcher/bitmap_fetcher_service.cc +++ b/chrome/browser/bitmap_fetcher/bitmap_fetcher_service.cc
@@ -237,10 +237,9 @@ std::string(), net::ReferrerPolicy::REDUCE_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, network::mojom::CredentialsMode::kInclude); - new_fetcher->Start( - content::BrowserContext::GetDefaultStoragePartition(context_) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + new_fetcher->Start(context_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); return new_fetcher; }
diff --git a/chrome/browser/browser_switcher/browser_switcher_service.cc b/chrome/browser/browser_switcher/browser_switcher_service.cc index 81cbea9..92511d3 100644 --- a/chrome/browser/browser_switcher/browser_switcher_service.cc +++ b/chrome/browser/browser_switcher/browser_switcher_service.cc
@@ -101,9 +101,8 @@ : service_(service), all_done_callback_(std::move(all_done_callback)) { file_url_factory_.Bind( content::CreateFileURLLoaderFactory(base::FilePath(), nullptr)); - other_url_factory_ = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + other_url_factory_ = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); sources_ = service_->GetRulesetSources();
diff --git a/chrome/browser/browsing_data/access_context_audit_browsertest.cc b/chrome/browser/browsing_data/access_context_audit_browsertest.cc index 2f87597..3887338 100644 --- a/chrome/browser/browsing_data/access_context_audit_browsertest.cc +++ b/chrome/browser/browsing_data/access_context_audit_browsertest.cc
@@ -209,8 +209,8 @@ std::vector<net::CanonicalCookie> GetAllCookies() { base::RunLoop run_loop; std::vector<net::CanonicalCookie> cookies_out; - content::BrowserContext::GetDefaultStoragePartition( - chrome_test_utils::GetProfile(this)) + chrome_test_utils::GetProfile(this) + ->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->GetAllCookies(base::BindLambdaForTesting( [&](const std::vector<net::CanonicalCookie>& cookies) {
diff --git a/chrome/browser/browsing_data/access_context_audit_service_factory.cc b/chrome/browser/browsing_data/access_context_audit_service_factory.cc index c4ee38f4..12a1aa3 100644 --- a/chrome/browser/browsing_data/access_context_audit_service_factory.cc +++ b/chrome/browser/browsing_data/access_context_audit_service_factory.cc
@@ -51,11 +51,11 @@ new AccessContextAuditService(profile)); if (!context_audit_service->Init( context->GetPath(), - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(), HistoryServiceFactory::GetForProfile( profile, ServiceAccessType::EXPLICIT_ACCESS), - content::BrowserContext::GetDefaultStoragePartition(context))) { + context->GetDefaultStoragePartition())) { return nullptr; }
diff --git a/chrome/browser/browsing_data/browsing_data_history_observer_service.cc b/chrome/browser/browsing_data/browsing_data_history_observer_service.cc index c5a68e6..3386c10 100644 --- a/chrome/browser/browsing_data/browsing_data_history_observer_service.cc +++ b/chrome/browser/browsing_data/browsing_data_history_observer_service.cc
@@ -171,9 +171,8 @@ TemplateURLServiceFactory::GetForProfile(profile_); content::StoragePartition* storage_partition = - storage_partition_for_testing_ - ? storage_partition_for_testing_ - : content::BrowserContext::GetDefaultStoragePartition(profile_); + storage_partition_for_testing_ ? storage_partition_for_testing_ + : profile_->GetDefaultStoragePartition(); if (deletion_info.time_range().IsValid()) { if (keywords_model) {
diff --git a/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc index 0b6ad98..f6bacd4d 100644 --- a/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc +++ b/chrome/browser/browsing_data/browsing_data_media_license_helper_unittest.cc
@@ -89,8 +89,7 @@ now_ = base::Time::Now(); profile_ = std::make_unique<TestingProfile>(); filesystem_context_ = - BrowserContext::GetDefaultStoragePartition(profile_.get()) - ->GetFileSystemContext(); + profile_->GetDefaultStoragePartition()->GetFileSystemContext(); helper_ = BrowsingDataMediaLicenseHelper::Create(filesystem_context_); base::RunLoop().RunUntilIdle(); }
diff --git a/chrome/browser/browsing_data/browsing_data_quota_helper_impl.cc b/chrome/browser/browsing_data/browsing_data_quota_helper_impl.cc index cf39112..c154cb80c 100644 --- a/chrome/browser/browsing_data/browsing_data_quota_helper_impl.cc +++ b/chrome/browser/browsing_data/browsing_data_quota_helper_impl.cc
@@ -30,7 +30,7 @@ // static BrowsingDataQuotaHelper* BrowsingDataQuotaHelper::Create(Profile* profile) { return new BrowsingDataQuotaHelperImpl( - BrowserContext::GetDefaultStoragePartition(profile)->GetQuotaManager()); + profile->GetDefaultStoragePartition()->GetQuotaManager()); } void BrowsingDataQuotaHelperImpl::StartFetching(FetchResultCallback callback) {
diff --git a/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc b/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc index c7a370c..0e1de1b 100644 --- a/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc +++ b/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc
@@ -288,7 +288,7 @@ loop.Quit(); }); network::mojom::CookieManager* cookie_manager = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); cookie_manager->SetCanonicalCookie(*cookie, google_url, net::CookieOptions::MakeAllInclusive(), @@ -401,8 +401,7 @@ base::RunLoop run_loop; int count = -1; content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); scoped_refptr<BrowsingDataMediaLicenseHelper> media_license_helper = BrowsingDataMediaLicenseHelper::Create( partition->GetFileSystemContext()); @@ -437,8 +436,9 @@ } network::mojom::NetworkContext* network_context() const { - return content::BrowserContext::GetDefaultStoragePartition( - GetBrowser()->profile()) + return GetBrowser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext(); } @@ -460,7 +460,7 @@ std::unique_ptr<CookiesTreeModel> GetCookiesTreeModel() { Profile* profile = GetBrowser()->profile(); content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile); + profile->GetDefaultStoragePartition(); content::ServiceWorkerContext* service_worker_context = storage_partition->GetServiceWorkerContext(); storage::FileSystemContext* file_system_context =
diff --git a/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc b/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc index 0c64d54..1a82466a 100644 --- a/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc +++ b/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc
@@ -163,7 +163,8 @@ network::mojom::NetworkContext* BrowsingDataRemoverBrowserTestBase::network_context() const { - return content::BrowserContext::GetDefaultStoragePartition( - GetBrowser()->profile()) + return GetBrowser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext(); }
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc index 90a9bb9..c7b4aa2 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -289,8 +289,7 @@ network::mojom::NetworkContext::ClearDomainReliabilityCallback callback) { network::mojom::NetworkContext* network_context = - BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetNetworkContext(); + browser_context->GetDefaultStoragePartition()->GetNetworkContext(); network_context->ClearDomainReliability( filter_builder->BuildNetworkServiceFilter(), mode, std::move(callback)); @@ -489,11 +488,9 @@ // Need to clear the host cache and accumulated speculative data, as it also // reveals some history. We have no mechanism to track when these items were // created, so we'll not honor the time range. - BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext() - ->ClearHostCache( - filter_builder->BuildNetworkServiceFilter(), - CreateTaskCompletionClosureForMojo(TracingDataType::kHostCache)); + profile_->GetDefaultStoragePartition()->GetNetworkContext()->ClearHostCache( + filter_builder->BuildNetworkServiceFilter(), + CreateTaskCompletionClosureForMojo(TracingDataType::kHostCache)); // The NoStatePrefetchManager keeps history of pages scanned for prefetch, // so clear that. It also may have a scanned page. If so, the page could be @@ -829,7 +826,7 @@ CreateTaskCompletionClosure(TracingDataType::kPasswords)); } - BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetNetworkContext() ->ClearHttpAuthCache( delete_begin_.is_null() ? base::Time::Min() : delete_begin_, @@ -1177,8 +1174,7 @@ #if BUILDFLAG(ENABLE_REPORTING) if (remove_mask & constants::DATA_TYPE_HISTORY) { network::mojom::NetworkContext* network_context = - BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + profile_->GetDefaultStoragePartition()->GetNetworkContext(); network_context->ClearReportingCacheReports( filter_builder->BuildNetworkServiceFilter(), CreateTaskCompletionClosureForMojo(TracingDataType::kReportingCache));
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc index da1b5b2..61b6ba3 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -1086,8 +1086,8 @@ network::NetworkService::GetNetworkServiceForTesting(), network_context_remote.InitWithNewPipeAndPassReceiver(), std::move(network_context_params)); - content::BrowserContext::GetDefaultStoragePartition(profile_.get()) - ->SetNetworkContextForTesting(std::move(network_context_remote)); + profile_->GetDefaultStoragePartition()->SetNetworkContextForTesting( + std::move(network_context_remote)); ProtocolHandlerRegistryFactory::GetInstance()->SetTestingFactory( profile_.get(), base::BindRepeating(&BuildProtocolHandlerRegistry));
diff --git a/chrome/browser/browsing_data/cookies_tree_model.cc b/chrome/browser/browsing_data/cookies_tree_model.cc index bcba833..4ee49f100 100644 --- a/chrome/browser/browsing_data/cookies_tree_model.cc +++ b/chrome/browser/browsing_data/cookies_tree_model.cc
@@ -1935,8 +1935,7 @@ // static std::unique_ptr<CookiesTreeModel> CookiesTreeModel::CreateForProfile( Profile* profile) { - auto* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile); + auto* storage_partition = profile->GetDefaultStoragePartition(); auto* file_system_context = storage_partition->GetFileSystemContext(); auto* native_io_context = storage_partition->GetNativeIOContext();
diff --git a/chrome/browser/browsing_data/counters/cache_counter.cc b/chrome/browser/browsing_data/counters/cache_counter.cc index 214c0aa..0aeb630 100644 --- a/chrome/browser/browsing_data/counters/cache_counter.cc +++ b/chrome/browser/browsing_data/counters/cache_counter.cc
@@ -42,8 +42,8 @@ is_upper_limit_ = false; pending_sources_ = 1; browsing_data::ConditionalCacheCountingHelper::Count( - content::BrowserContext::GetDefaultStoragePartition(profile_), - GetPeriodStart(), base::Time::Max(), + profile_->GetDefaultStoragePartition(), GetPeriodStart(), + base::Time::Max(), base::BindOnce(&CacheCounter::OnCacheSizeCalculated, weak_ptr_factory_.GetWeakPtr())); #if BUILDFLAG(ENABLE_OFFLINE_PAGES)
diff --git a/chrome/browser/browsing_data/counters/cache_counter_browsertest.cc b/chrome/browser/browsing_data/counters/cache_counter_browsertest.cc index 71dc97d..5fba93d 100644 --- a/chrome/browser/browsing_data/counters/cache_counter_browsertest.cc +++ b/chrome/browser/browsing_data/counters/cache_counter_browsertest.cc
@@ -82,8 +82,9 @@ network::SimpleURLLoader::Create(std::move(request), TRAFFIC_ANNOTATION_FOR_TESTS); simple_loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie( - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), simple_loader_helper.GetCallback()); @@ -138,7 +139,9 @@ // Clear the |profile| to ensure that there was no data added from other // processes unrelated to this test. base::RunLoop wait_until_empty; - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->ClearHttpCache(base::Time(), base::Time::Max(), nullptr, wait_until_empty.QuitClosure()); @@ -203,7 +206,9 @@ base::BindRepeating(&CacheCounterTest::CountingCallback, base::Unretained(this))); - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->ClearHttpCache( base::Time(), base::Time::Max(), nullptr,
diff --git a/chrome/browser/browsing_data/counters/conditional_cache_counting_helper_browsertest.cc b/chrome/browser/browsing_data/counters/conditional_cache_counting_helper_browsertest.cc index aef4fa2..1d6126d 100644 --- a/chrome/browser/browsing_data/counters/conditional_cache_counting_helper_browsertest.cc +++ b/chrome/browser/browsing_data/counters/conditional_cache_counting_helper_browsertest.cc
@@ -61,9 +61,8 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); last_size_ = -1; ConditionalCacheCountingHelper::Count( - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()), - begin_time, end_time, + browser()->profile()->GetDefaultStoragePartition(), begin_time, + end_time, base::BindOnce( &ConditionalCacheCountingHelperBrowserTest::CountCallback, base::Unretained(this))); @@ -101,8 +100,9 @@ network::SimpleURLLoader::Create(std::move(request), TRAFFIC_ANNOTATION_FOR_TESTS); simple_loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie( - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), simple_loader_helper.GetCallback());
diff --git a/chrome/browser/browsing_data/counters/site_data_counting_helper.cc b/chrome/browser/browsing_data/counters/site_data_counting_helper.cc index 8cbaa67d..dfdb341 100644 --- a/chrome/browser/browsing_data/counters/site_data_counting_helper.cc +++ b/chrome/browser/browsing_data/counters/site_data_counting_helper.cc
@@ -46,8 +46,7 @@ SiteDataCountingHelper::~SiteDataCountingHelper() {} void SiteDataCountingHelper::CountAndDestroySelfWhenFinished() { - content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(profile_); + content::StoragePartition* partition = profile_->GetDefaultStoragePartition(); scoped_refptr<storage::SpecialStoragePolicy> special_storage_policy( profile_->GetSpecialStoragePolicy()); @@ -100,8 +99,7 @@ #if BUILDFLAG(ENABLE_LIBRARY_CDMS) // Count origins with media licenses. storage::FileSystemContext* file_system_context = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetFileSystemContext(); + profile_->GetDefaultStoragePartition()->GetFileSystemContext(); media_license_helper_ = BrowsingDataMediaLicenseHelper::Create(file_system_context); if (media_license_helper_) {
diff --git a/chrome/browser/browsing_data/counters/site_data_counting_helper_unittest.cc b/chrome/browser/browsing_data/counters/site_data_counting_helper_unittest.cc index a8f206c..adfc7ce 100644 --- a/chrome/browser/browsing_data/counters/site_data_counting_helper_unittest.cc +++ b/chrome/browser/browsing_data/counters/site_data_counting_helper_unittest.cc
@@ -32,7 +32,7 @@ // Let the storage system finish setting up, to avoid test flakiness caused // by the quota storage system shutting down at test end, while still being // set up. TODO(crbug.com/1182630) Remove when crbug.com/1182630 is fixed. - content::BrowserContext::GetDefaultStoragePartition(profile()); + profile()->GetDefaultStoragePartition(); task_environment_.RunUntilIdle(); } @@ -44,7 +44,7 @@ void CreateCookies(base::Time creation_time, const std::vector<std::string>& urls) { content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(profile()); + profile()->GetDefaultStoragePartition(); network::mojom::CookieManager* cookie_manager = partition->GetCookieManagerForBrowserProcess();
diff --git a/chrome/browser/browsing_data/third_party_data_remover_browsertest.cc b/chrome/browser/browsing_data/third_party_data_remover_browsertest.cc index 7cc45e1..f79123c0 100644 --- a/chrome/browser/browsing_data/third_party_data_remover_browsertest.cc +++ b/chrome/browser/browsing_data/third_party_data_remover_browsertest.cc
@@ -68,8 +68,9 @@ } network::mojom::CookieManager* CookieManager() { - return content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + return browser() + ->profile() + ->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); }
diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc index c62b173..c0a1e82 100644 --- a/chrome/browser/captive_portal/captive_portal_browsertest.cc +++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc
@@ -877,7 +877,9 @@ void CreateLoader(content::URLLoaderInterceptor::RequestParams job) { CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() ->CreateLoaderAndStart(std::move(job.receiver), job.request_id, job.options, std::move(job.url_request),
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 8735ce0..9011780 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2596,15 +2596,11 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); // Check if cookies are allowed. - bool allow = embedder_support::AllowSharedWorker( - worker_url, site_for_cookies, top_frame_origin, + return embedder_support::AllowSharedWorker( + worker_url, site_for_cookies, top_frame_origin, name, storage_key, + render_process_id, render_frame_id, CookieSettingsFactory::GetForProfile(Profile::FromBrowserContext(context)) .get()); - - content_settings::PageSpecificContentSettings::SharedWorkerAccessed( - render_process_id, render_frame_id, worker_url, name, storage_key, - !allow); - return allow; } bool ChromeContentBrowserClient::DoesSchemeAllowCrossOriginSharedWorker( @@ -2630,10 +2626,13 @@ content::BrowserContext* browser_context, const std::vector<content::GlobalFrameRoutingId>& render_frames, base::OnceCallback<void(bool)> callback) { + // An empty list is passed for render_frames here since we manually notify + // PageSpecificContentSettings that the file system was accessed below. bool allow = embedder_support::AllowWorkerFileSystem( - url, CookieSettingsFactory::GetForProfile( - Profile::FromBrowserContext(browser_context)) - .get()); + url, {}, + CookieSettingsFactory::GetForProfile( + Profile::FromBrowserContext(browser_context)) + .get()); #if BUILDFLAG(ENABLE_EXTENSIONS) GuestPermissionRequestHelper(url, render_frames, std::move(callback), allow); #else @@ -2695,36 +2694,22 @@ const GURL& url, content::BrowserContext* browser_context, const std::vector<content::GlobalFrameRoutingId>& render_frames) { - bool allow = embedder_support::AllowWorkerIndexedDB( - url, CookieSettingsFactory::GetForProfile( - Profile::FromBrowserContext(browser_context)) - .get()); - - // Record access to IndexedDB for potential display in UI. - for (const auto& it : render_frames) { - content_settings::PageSpecificContentSettings::IndexedDBAccessed( - it.child_id, it.frame_routing_id, url, !allow); - } - - return allow; + return embedder_support::AllowWorkerIndexedDB( + url, render_frames, + CookieSettingsFactory::GetForProfile( + Profile::FromBrowserContext(browser_context)) + .get()); } bool ChromeContentBrowserClient::AllowWorkerCacheStorage( const GURL& url, content::BrowserContext* browser_context, const std::vector<content::GlobalFrameRoutingId>& render_frames) { - bool allow = embedder_support::AllowWorkerCacheStorage( - url, CookieSettingsFactory::GetForProfile( - Profile::FromBrowserContext(browser_context)) - .get()); - - // Record access to CacheStorage for potential display in UI. - for (const auto& it : render_frames) { - content_settings::PageSpecificContentSettings::CacheStorageAccessed( - it.child_id, it.frame_routing_id, url, !allow); - } - - return allow; + return embedder_support::AllowWorkerCacheStorage( + url, render_frames, + CookieSettingsFactory::GetForProfile( + Profile::FromBrowserContext(browser_context)) + .get()); } bool ChromeContentBrowserClient::AllowWorkerWebLocks( @@ -3058,8 +3043,7 @@ may_show_cert_selection = false; content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - profile, web_contents->GetSiteInstance()); + profile->GetStoragePartition(web_contents->GetSiteInstance()); chromeos::login::SigninPartitionManager* signin_partition_manager = chromeos::login::SigninPartitionManager::Factory::GetForBrowserContext( profile);
diff --git a/chrome/browser/chrome_navigation_browsertest.cc b/chrome/browser/chrome_navigation_browsertest.cc index 63c1c15..07054570 100644 --- a/chrome/browser/chrome_navigation_browsertest.cc +++ b/chrome/browser/chrome_navigation_browsertest.cc
@@ -749,7 +749,9 @@ extension_loader.LoadExtension(ext_dir.UnpackedPath()); ASSERT_TRUE(extension); ASSERT_TRUE(ready_listener.WaitUntilSatisfied()); - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); // 2. Open a popup containing a cross-site subframe. @@ -885,7 +887,9 @@ extension_loader.LoadExtension(ext_dir.UnpackedPath()); ASSERT_TRUE(extension); ASSERT_TRUE(ready_listener.WaitUntilSatisfied()); - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); // 2. Open a popup containing a cross-site subframe.
diff --git a/chrome/browser/chrome_service_worker_browsertest.cc b/chrome/browser/chrome_service_worker_browsertest.cc index d98e028..715d64cd 100644 --- a/chrome/browser/chrome_service_worker_browsertest.cc +++ b/chrome/browser/chrome_service_worker_browsertest.cc
@@ -127,8 +127,9 @@ } content::ServiceWorkerContext* GetServiceWorkerContext() { - return content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + return browser() + ->profile() + ->GetDefaultStoragePartition() ->GetServiceWorkerContext(); }
diff --git a/chrome/browser/chromeos/android_sms/android_sms_app_setup_controller_impl.cc b/chrome/browser/chromeos/android_sms/android_sms_app_setup_controller_impl.cc index 69258d0..9074320 100644 --- a/chrome/browser/chromeos/android_sms/android_sms_app_setup_controller_impl.cc +++ b/chrome/browser/chromeos/android_sms/android_sms_app_setup_controller_impl.cc
@@ -63,7 +63,7 @@ AndroidSmsAppSetupControllerImpl::PwaDelegate::GetCookieManager( const GURL& app_url, Profile* profile) { - return content::BrowserContext::GetStoragePartitionForUrl(profile, app_url) + return profile->GetStoragePartitionForUrl(app_url) ->GetCookieManagerForBrowserProcess(); }
diff --git a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc index 37525ef..b2e2fb0 100644 --- a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc +++ b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc
@@ -112,8 +112,7 @@ network::mojom::CookieManager* AndroidSmsPairingStateTrackerImpl::GetCookieManager() { - return content::BrowserContext::GetStoragePartitionForUrl(profile_, - GetPairingUrl()) + return profile_->GetStoragePartitionForUrl(GetPairingUrl()) ->GetCookieManagerForBrowserProcess(); }
diff --git a/chrome/browser/chromeos/android_sms/connection_manager.cc b/chrome/browser/chromeos/android_sms/connection_manager.cc index 75c24a0..c88df09 100644 --- a/chrome/browser/chromeos/android_sms/connection_manager.cc +++ b/chrome/browser/chromeos/android_sms/connection_manager.cc
@@ -26,8 +26,7 @@ content::ServiceWorkerContext* ConnectionManager::ServiceWorkerProvider::Get( const GURL& url, Profile* profile) { - return content::BrowserContext::GetStoragePartitionForUrl(profile, url) - ->GetServiceWorkerContext(); + return profile->GetStoragePartitionForUrl(url)->GetServiceWorkerContext(); } ConnectionManager::ConnectionManager(
diff --git a/chrome/browser/chromeos/dbus/proxy_resolution_service_provider.cc b/chrome/browser/chromeos/dbus/proxy_resolution_service_provider.cc index 4ca1538..d89d17d 100644 --- a/chrome/browser/chromeos/dbus/proxy_resolution_service_provider.cc +++ b/chrome/browser/chromeos/dbus/proxy_resolution_service_provider.cc
@@ -247,8 +247,7 @@ if (!primary_profile) return nullptr; - auto* storage_partition = - primary_profile->GetDefaultStoragePartition(primary_profile); + auto* storage_partition = primary_profile->GetDefaultStoragePartition(); if (!storage_partition) return nullptr;
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc index 7504468..ed08c7aa 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
@@ -861,7 +861,8 @@ scopes.emplace_back("https://www.googleapis.com/auth/drive.readonly"); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(browser_context()) + browser_context() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); auth_service_ = std::make_unique<google_apis::AuthService>( identity_manager, account_id, url_loader_factory, scopes);
diff --git a/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler.cc b/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler.cc index 73d896d..cc0a8f41 100644 --- a/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler.cc +++ b/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler.cc
@@ -15,7 +15,6 @@ #include "chrome/browser/ash/login/ui/login_screen_extension_ui/window.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "chromeos/tpm/install_attributes.h" #include "components/session_manager/core/session_manager.h" #include "content/public/browser/browser_thread.h"
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc index 0e6272e..71ef7ce 100644 --- a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc +++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
@@ -825,7 +825,8 @@ WRAPPED_INSTANTIATE_TEST_SUITE_P( FolderShortcuts, /* folder_shortcuts.js */ FilesAppBrowserTest, - ::testing::Values(TestCase("traverseFolderShortcuts"), + ::testing::Values(/* crbug.com/1204065: traverseFolderShortcuts flaky + TestCase("traverseFolderShortcuts"), */ TestCase("addRemoveFolderShortcuts"))); WRAPPED_INSTANTIATE_TEST_SUITE_P(
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc index a494084f..2b9a48e7 100644 --- a/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc +++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc
@@ -596,7 +596,7 @@ EXCLUSIVE_LOCK_FUNCTION(GetLockForBlockingDefaultFileTaskRunner()) { GetLockForBlockingDefaultFileTaskRunner().Acquire(); - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetFileSystemContext() ->default_file_task_runner() ->PostTask(FROM_HERE, base::BindOnce([] {
diff --git a/chrome/browser/chromeos/file_manager/file_manager_jstest_base.cc b/chrome/browser/chromeos/file_manager/file_manager_jstest_base.cc index aadb226..d10c133 100644 --- a/chrome/browser/chromeos/file_manager/file_manager_jstest_base.cc +++ b/chrome/browser/chromeos/file_manager/file_manager_jstest_base.cc
@@ -74,6 +74,24 @@ base::FilePath gen_file_path = gen_root_.Append(base::FilePath::FromUTF8Unsafe(path)); + // File manager sets up the embedded test server with a specific base path, + // and the server assumes all paths are relative to this path without + // checking for absolute URLs. Hence, absolute URLS are transformed to + // requests for <some_base_path>/chrome://resources/<path_to_resource>. + // Strip off the assumed base path and replace chrome://resources with + // ui/webui/resources in this case. + const char kResourcesUrl[] = "chrome://resources"; + size_t url_pos = path.find(kResourcesUrl); + if (url_pos != std::string::npos) { + std::string new_path = + "ui/webui/resources" + + path.substr(url_pos + base::size(kResourcesUrl) - 1); + src_file_path = + source_root_.Append(base::FilePath::FromUTF8Unsafe(new_path)); + gen_file_path = + gen_root_.Append(base::FilePath::FromUTF8Unsafe(new_path)); + } + // Do some basic validation of the file extension. CHECK(src_file_path.Extension() == ".html" || src_file_path.Extension() == ".js" ||
diff --git a/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc b/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc index 4ad1f01..10cdd3f 100644 --- a/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc +++ b/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc
@@ -138,8 +138,7 @@ // Obtain the file system context. content::StoragePartition* const partition = - content::BrowserContext::GetStoragePartitionForUrl( - profile, GURL("http://example.com")); + profile->GetStoragePartitionForUrl(GURL("http://example.com")); ASSERT_TRUE(partition); storage::FileSystemContext* const context = partition->GetFileSystemContext(); ASSERT_TRUE(context);
diff --git a/chrome/browser/chromeos/fileapi/external_file_resolver.cc b/chrome/browser/chromeos/fileapi/external_file_resolver.cc index cc86eee..8b9296c1 100644 --- a/chrome/browser/chromeos/fileapi/external_file_resolver.cc +++ b/chrome/browser/chromeos/fileapi/external_file_resolver.cc
@@ -61,7 +61,7 @@ } Profile* const profile = reinterpret_cast<Profile*>(profile_id); content::StoragePartition* const storage = - content::BrowserContext::GetStoragePartitionForUrl(profile, url); + profile->GetStoragePartitionForUrl(url); DCHECK(storage); scoped_refptr<storage::FileSystemContext> context =
diff --git a/chrome/browser/chromeos/input_method/input_method_persistence.cc b/chrome/browser/chromeos/input_method/input_method_persistence.cc index 2b4e5840..f1ab9e1 100644 --- a/chrome/browser/chromeos/input_method/input_method_persistence.cc +++ b/chrome/browser/chromeos/input_method/input_method_persistence.cc
@@ -14,7 +14,7 @@ #include "chrome/browser/chromeos/language_preferences.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/common/pref_names.h" #include "components/account_id/account_id.h" #include "components/prefs/pref_service.h" @@ -112,7 +112,7 @@ return; case InputMethodManager::UIStyle::kLock: // We are either in unit test, or screen should be locked. - DCHECK(!LoginScreenClient::HasInstance() || + DCHECK(!LoginScreenClientImpl::HasInstance() || ScreenLocker::default_screen_locker()); return; case InputMethodManager::UIStyle::kSecondaryLogin:
diff --git a/chrome/browser/chromeos/nearby/nearby_connections_dependencies_provider.cc b/chrome/browser/chromeos/nearby/nearby_connections_dependencies_provider.cc index c0ed8915..14636e5 100644 --- a/chrome/browser/chromeos/nearby/nearby_connections_dependencies_provider.cc +++ b/chrome/browser/chromeos/nearby/nearby_connections_dependencies_provider.cc
@@ -56,8 +56,7 @@ void CreateMdnsResponder(mojo::PendingReceiver<network::mojom::MdnsResponder> responder_receiver) override { - auto* partition = - content::BrowserContext::GetDefaultStoragePartition(profile_); + auto* partition = profile_->GetDefaultStoragePartition(); if (!partition) { LOG(ERROR) << "MdnsResponderFactory::" << __func__ << ": GetDefaultStoragePartition(profile) failed."; @@ -145,8 +144,7 @@ location::nearby::connections::mojom::WebRtcDependenciesPtr NearbyConnectionsDependenciesProvider::GetWebRtcDependencies() { auto* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + profile_->GetDefaultStoragePartition()->GetNetworkContext(); MojoPipe<network::mojom::P2PTrustedSocketManagerClient> socket_manager_client; MojoPipe<network::mojom::P2PTrustedSocketManager> trusted_socket_manager;
diff --git a/chrome/browser/chromeos/net/network_diagnostics/dns_latency_routine.cc b/chrome/browser/chromeos/net/network_diagnostics/dns_latency_routine.cc index ea81100..d720d6b 100644 --- a/chrome/browser/chromeos/net/network_diagnostics/dns_latency_routine.cc +++ b/chrome/browser/chromeos/net/network_diagnostics/dns_latency_routine.cc
@@ -85,8 +85,7 @@ : tick_clock_(base::DefaultTickClock::GetInstance()) { profile_ = GetUserProfile(); network_context_ = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + profile_->GetDefaultStoragePartition()->GetNetworkContext(); DCHECK(network_context_); set_verdict(mojom::RoutineVerdict::kNotRun); }
diff --git a/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine.cc b/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine.cc index d457678..b29c3451 100644 --- a/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine.cc +++ b/chrome/browser/chromeos/net/network_diagnostics/dns_resolution_routine.cc
@@ -44,8 +44,7 @@ profile_ = GetUserProfile(); DCHECK(profile_); network_context_ = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + profile_->GetDefaultStoragePartition()->GetNetworkContext(); DCHECK(network_context_); set_verdict(mojom::RoutineVerdict::kNotRun); }
diff --git a/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine.cc b/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine.cc index 05ff406b..cc9823c8 100644 --- a/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine.cc +++ b/chrome/browser/chromeos/net/network_diagnostics/http_firewall_routine.cc
@@ -128,8 +128,7 @@ profile_ = GetUserProfile(); network_context_ = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + profile_->GetDefaultStoragePartition()->GetNetworkContext(); DCHECK(network_context_); }
diff --git a/chrome/browser/chromeos/net/network_diagnostics/http_request_manager.cc b/chrome/browser/chromeos/net/network_diagnostics/http_request_manager.cc index c23f6dd..cbf5e90 100644 --- a/chrome/browser/chromeos/net/network_diagnostics/http_request_manager.cc +++ b/chrome/browser/chromeos/net/network_diagnostics/http_request_manager.cc
@@ -53,9 +53,8 @@ if (!profile) { return; } - shared_url_loader_factory_ = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + shared_url_loader_factory_ = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); } HttpRequestManager::~HttpRequestManager() = default;
diff --git a/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine.cc b/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine.cc index 46d48645..e9e33c1 100644 --- a/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine.cc +++ b/chrome/browser/chromeos/net/network_diagnostics/https_firewall_routine.cc
@@ -146,8 +146,7 @@ Profile* profile = util::GetUserProfile(); DCHECK(profile); - return content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + return profile->GetDefaultStoragePartition()->GetNetworkContext(); } std::unique_ptr<TlsProber> HttpsFirewallRoutine::CreateAndExecuteTlsProber(
diff --git a/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine.cc b/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine.cc index 7579a7f..12a6dd72 100644 --- a/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine.cc +++ b/chrome/browser/chromeos/net/network_diagnostics/https_latency_routine.cc
@@ -53,8 +53,7 @@ network::mojom::NetworkContext* GetNetworkContext() { Profile* profile = util::GetUserProfile(); - return content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + return profile->GetDefaultStoragePartition()->GetNetworkContext(); } std::unique_ptr<HttpRequestManager> GetHttpRequestManager() {
diff --git a/chrome/browser/chromeos/net/network_diagnostics/video_conferencing_routine.cc b/chrome/browser/chromeos/net/network_diagnostics/video_conferencing_routine.cc index 145ef34..d772e11e 100644 --- a/chrome/browser/chromeos/net/network_diagnostics/video_conferencing_routine.cc +++ b/chrome/browser/chromeos/net/network_diagnostics/video_conferencing_routine.cc
@@ -117,8 +117,7 @@ Profile* profile = util::GetUserProfile(); DCHECK(profile); - return content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + return profile->GetDefaultStoragePartition()->GetNetworkContext(); } std::unique_ptr<UdpProber> VideoConferencingRoutine::CreateAndExecuteUdpProber(
diff --git a/chrome/browser/chromeos/net/system_proxy_manager.cc b/chrome/browser/chromeos/net/system_proxy_manager.cc index 4d8e3e9..1a2f95a 100644 --- a/chrome/browser/chromeos/net/system_proxy_manager.cc +++ b/chrome/browser/chromeos/net/system_proxy_manager.cc
@@ -637,7 +637,7 @@ SendEmptyCredentials(protection_space); return; } - content::BrowserContext::GetDefaultStoragePartition(primary_profile_) + primary_profile_->GetDefaultStoragePartition() ->GetNetworkContext() ->LookupProxyAuthCredentials( proxy_server, protection_space.scheme(),
diff --git a/chrome/browser/chromeos/net/system_proxy_manager_browsertest.cc b/chrome/browser/chromeos/net/system_proxy_manager_browsertest.cc index 40f96af..200b8da5 100644 --- a/chrome/browser/chromeos/net/system_proxy_manager_browsertest.cc +++ b/chrome/browser/chromeos/net/system_proxy_manager_browsertest.cc
@@ -699,9 +699,7 @@ const std::string& expected_username, const std::string& expected_password) { network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) - ->GetNetworkContext(); + browser()->profile()->GetDefaultStoragePartition()->GetNetworkContext(); std::string username; std::string password; base::RunLoop loop;
diff --git a/chrome/browser/chromeos/net/system_proxy_manager_unittest.cc b/chrome/browser/chromeos/net/system_proxy_manager_unittest.cc index 593c4bc7a8..6a24506 100644 --- a/chrome/browser/chromeos/net/system_proxy_manager_unittest.cc +++ b/chrome/browser/chromeos/net/system_proxy_manager_unittest.cc
@@ -68,8 +68,8 @@ auto network_context = std::make_unique<network::NetworkContext>( network_service, network_context_remote.InitWithNewPipeAndPassReceiver(), std::move(params)); - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->SetNetworkContextForTesting(std::move(network_context_remote)); + browser_context->GetDefaultStoragePartition()->SetNetworkContextForTesting( + std::move(network_context_remote)); return network_context; }
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.cc b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.cc index 97c622b..a2e6f8a 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.cc
@@ -69,8 +69,9 @@ return nullptr; DlpRulesManagerImpl* manager = new DlpRulesManagerImpl(local_state); - BuildReportingQueue(profile, - manager->reporting_manager_->GetReportQueueSetter()); + if (manager->reporting_manager_) + BuildReportingQueue(profile, + manager->reporting_manager_->GetReportQueueSetter()); return manager; }
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc index 3eb31e6..ce89c73 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc
@@ -171,6 +171,7 @@ // static void DlpRulesManagerImpl::RegisterPrefs(PrefRegistrySimple* registry) { + registry->RegisterBooleanPref(policy_prefs::kDlpReportingEnabled, false); registry->RegisterListPref(policy_prefs::kDlpRulesList); } @@ -246,7 +247,8 @@ } bool DlpRulesManagerImpl::IsReportingEnabled() const { - return true; + return g_browser_process->local_state()->GetBoolean( + policy_prefs::kDlpReportingEnabled); } DlpReportingManager* DlpRulesManagerImpl::GetReportingManager() const {
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc index 73a31dd..c6bfc7f 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_browsertest.cc
@@ -62,4 +62,34 @@ GURL(kUrlStr1), DlpRulesManager::Restriction::kScreenshot)); } +IN_PROC_BROWSER_TEST_F(DlpRulesPolicyTest, ReportingEnabled) { + base::DictionaryValue policy; + policy.SetBoolKey(key::kDataLeakPreventionReportingEnabled, true); + user_policy_helper()->SetPolicy(policy, + /*recommended=*/base::DictionaryValue()); + + SkipToLoginScreen(); + LogIn(kAccountId, kAccountPassword, kEmptyServices); + + DlpRulesManager* rules_manager = + DlpRulesManagerFactory::GetForPrimaryProfile(); + EXPECT_TRUE(rules_manager->IsReportingEnabled()); + EXPECT_NE(rules_manager->GetReportingManager(), nullptr); +} + +IN_PROC_BROWSER_TEST_F(DlpRulesPolicyTest, ReportingDisabled) { + base::DictionaryValue policy; + policy.SetBoolKey(key::kDataLeakPreventionReportingEnabled, false); + user_policy_helper()->SetPolicy(policy, + /*recommended=*/base::DictionaryValue()); + + SkipToLoginScreen(); + LogIn(kAccountId, kAccountPassword, kEmptyServices); + + DlpRulesManager* rules_manager = + DlpRulesManagerFactory::GetForPrimaryProfile(); + EXPECT_FALSE(rules_manager->IsReportingEnabled()); + EXPECT_EQ(rules_manager->GetReportingManager(), nullptr); +} + } // namespace policy
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc index 64170e0..7df20651 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc
@@ -60,14 +60,14 @@ return rules; } -} // namespace - class MockDlpRulesManager : public DlpRulesManagerImpl { public: explicit MockDlpRulesManager(PrefService* local_state) : DlpRulesManagerImpl(local_state) {} }; +} // namespace + class DlpRulesManagerImplTest : public testing::Test { protected: DlpRulesManagerImplTest()
diff --git a/chrome/browser/chromeos/policy/policy_cert_service.cc b/chrome/browser/chromeos/policy/policy_cert_service.cc index 5ebc8307..70f38c8 100644 --- a/chrome/browser/chromeos/policy/policy_cert_service.cc +++ b/chrome/browser/chromeos/policy/policy_cert_service.cc
@@ -120,7 +120,7 @@ // corresponds to |partition_path|. base::FilePath default_storage_partition_path = - content::BrowserContext::GetDefaultStoragePartition(profile_)->GetPath(); + profile_->GetDefaultStoragePartition()->GetPath(); // Among the extension IDs that have policy-provided certificates, attempt to // find the extension ID which corresponds to |partition_path|. // This is done by iterating the extension IDs because there's no trivial
diff --git a/chrome/browser/chromeos/policy/policy_certs_browsertest.cc b/chrome/browser/chromeos/policy/policy_certs_browsertest.cc index c851a63..4822e43 100644 --- a/chrome/browser/chromeos/policy/policy_certs_browsertest.cc +++ b/chrome/browser/chromeos/policy/policy_certs_browsertest.cc
@@ -424,8 +424,7 @@ Profile* profile, const scoped_refptr<net::X509Certificate>& certificate) { return VerifyTestServerCertInStoragePartition( - content::BrowserContext::GetDefaultStoragePartition(profile), - certificate); + profile->GetDefaultStoragePartition(), certificate); } // Returns true if |cert_handle| refers to a certificate that has a subject @@ -1000,7 +999,7 @@ chromeos::OobeScreenWaiter(chromeos::OobeBaseTest::GetFirstSigninScreen()) .Wait(); content::StoragePartition* signin_profile_default_partition = - content::BrowserContext::GetDefaultStoragePartition(signin_profile_); + signin_profile_->GetDefaultStoragePartition(); // Active in the StoragePartition of the extension for which the certificate // has been specified in policy.
diff --git a/chrome/browser/chromeos/policy/signin_profile_extensions_policy_browsertest.cc b/chrome/browser/chromeos/policy/signin_profile_extensions_policy_browsertest.cc index 4a77f46..12b69b2c 100644 --- a/chrome/browser/chromeos/policy/signin_profile_extensions_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/signin_profile_extensions_policy_browsertest.cc
@@ -331,7 +331,7 @@ extensions::util::GetStoragePartitionForExtensionId( kWhitelistedExtensionId, profile, /*can_create=*/false); content::StoragePartition* default_storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile); + profile->GetDefaultStoragePartition(); ASSERT_TRUE(storage_partition_for_app); ASSERT_TRUE(storage_partition_for_extension);
diff --git a/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc b/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc index b5cbd19..1dbbcb6 100644 --- a/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc +++ b/chrome/browser/chromeos/printing/history/print_job_history_service_factory.cc
@@ -53,8 +53,7 @@ } leveldb_proto::ProtoDatabaseProvider* database_provider = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetProtoDatabaseProvider(); + profile->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); auto print_job_database = std::make_unique<PrintJobDatabaseImpl>( database_provider, profile->GetPath());
diff --git a/chrome/browser/chromeos/smb_client/smb_service.cc b/chrome/browser/chromeos/smb_client/smb_service.cc index c8489576..a82cf503 100644 --- a/chrome/browser/chromeos/smb_client/smb_service.cc +++ b/chrome/browser/chromeos/smb_client/smb_service.cc
@@ -78,8 +78,7 @@ std::unique_ptr<NetBiosClientInterface> GetNetBiosClient(Profile* profile) { auto* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + profile->GetDefaultStoragePartition()->GetNetworkContext(); return std::make_unique<NetBiosClient>(network_context); }
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java index 6b98acc..f7f2157 100644 --- a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java
@@ -55,7 +55,7 @@ mEnqueueMessageTimer.postDelayed(() -> { if (messageContext.isValid()) { mMessageDispatcher.enqueueMessage( - model, messageContext.getWebContents(), MessageScopeType.NAVIGATION); + model, messageContext.getWebContents(), MessageScopeType.NAVIGATION, false); mMetrics.recordMetricsForMessageShown(); messageEnqueuedCallback.onResult(messageContext); } else {
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java index 1a1752b0..d04529d4 100644 --- a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java
@@ -95,7 +95,7 @@ verify(mMockHandler, times(1)).postDelayed(any(Runnable.class), eq(2000L)); verify(mMockMessageDispatcher, times(1)) .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), - eq(MessageScopeType.NAVIGATION)); + eq(MessageScopeType.NAVIGATION), eq(false)); verify(mMockMetrics, times(1)).recordMetricsForMessagePrepared(); verify(mMockMetrics, times(1)).recordMetricsForMessageShown(); } @@ -124,7 +124,7 @@ verify(mMockMessageDispatcher, never()) .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), - eq(MessageScopeType.NAVIGATION)); + eq(MessageScopeType.NAVIGATION), eq(false)); } @Test @@ -175,7 +175,7 @@ Assert.assertNull(scheduler.getScheduledMessageContext()); verify(mMockMessageDispatcher, times(1)) .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), - eq(MessageScopeType.NAVIGATION)); + eq(MessageScopeType.NAVIGATION), eq(false)); } @Test @@ -199,7 +199,7 @@ Assert.assertNull(scheduler.getScheduledMessageContext()); verify(mMockMessageDispatcher, never()) .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), - eq(MessageScopeType.NAVIGATION)); + eq(MessageScopeType.NAVIGATION), eq(false)); } @Test @@ -213,4 +213,4 @@ private MerchantTrustMessageScheduler getSchedulerUnderTest() { return new MerchantTrustMessageScheduler(mMockMessageDispatcher, mMockMetrics); } -} \ No newline at end of file +}
diff --git a/chrome/browser/content_index/content_index_provider_impl.cc b/chrome/browser/content_index/content_index_provider_impl.cc index 497d694..dc9173e 100644 --- a/chrome/browser/content_index/content_index_provider_impl.cc +++ b/chrome/browser/content_index/content_index_provider_impl.cc
@@ -170,8 +170,8 @@ const ContentId& id) { auto components = GetEntryKeyComponents(id.id); - auto* storage_partition = content::BrowserContext::GetStoragePartitionForUrl( - profile_, components.origin.GetURL(), /* can_create= */ false); + auto* storage_partition = profile_->GetStoragePartitionForUrl( + components.origin.GetURL(), /* can_create= */ false); if (!storage_partition || !storage_partition->GetContentIndexContext()) return; @@ -212,8 +212,8 @@ void ContentIndexProviderImpl::RemoveItem(const ContentId& id) { auto components = GetEntryKeyComponents(id.id); - auto* storage_partition = content::BrowserContext::GetStoragePartitionForUrl( - profile_, components.origin.GetURL(), /* can_create= */ false); + auto* storage_partition = profile_->GetStoragePartitionForUrl( + components.origin.GetURL(), /* can_create= */ false); if (!storage_partition || !storage_partition->GetContentIndexContext()) return; @@ -242,8 +242,8 @@ SingleItemCallback callback) { auto components = GetEntryKeyComponents(id.id); - auto* storage_partition = content::BrowserContext::GetStoragePartitionForUrl( - profile_, components.origin.GetURL(), /* can_create= */ false); + auto* storage_partition = profile_->GetStoragePartitionForUrl( + components.origin.GetURL(), /* can_create= */ false); if (!storage_partition || !storage_partition->GetContentIndexContext()) { base::ThreadTaskRunnerHandle::Get()->PostTask( @@ -269,14 +269,12 @@ void ContentIndexProviderImpl::GetAllItems(MultipleItemCallback callback) { // Get the number of Storage Paritions. std::vector<content::StoragePartition*> storage_paritions; - content::BrowserContext::ForEachStoragePartition( - profile_, - base::BindRepeating( - [](std::vector<content::StoragePartition*>* storage_paritions, - content::StoragePartition* storage_partition) { - storage_paritions->push_back(storage_partition); - }, - &storage_paritions)); + profile_->ForEachStoragePartition(base::BindRepeating( + [](std::vector<content::StoragePartition*>* storage_paritions, + content::StoragePartition* storage_partition) { + storage_paritions->push_back(storage_partition); + }, + &storage_paritions)); DCHECK(!storage_paritions.empty()); auto item_list = std::make_unique<OfflineItemList>(); @@ -332,8 +330,8 @@ VisualsCallback callback) { auto components = GetEntryKeyComponents(id.id); - auto* storage_partition = content::BrowserContext::GetStoragePartitionForUrl( - profile_, components.origin.GetURL(), /* can_create= */ false); + auto* storage_partition = profile_->GetStoragePartitionForUrl( + components.origin.GetURL(), /* can_create= */ false); if (!storage_partition || !storage_partition->GetContentIndexContext()) { base::ThreadTaskRunnerHandle::Get()->PostTask(
diff --git a/chrome/browser/content_settings/content_settings_browsertest.cc b/chrome/browser/content_settings/content_settings_browsertest.cc index b52e2f42..0df4108 100644 --- a/chrome/browser/content_settings/content_settings_browsertest.cc +++ b/chrome/browser/content_settings/content_settings_browsertest.cc
@@ -278,8 +278,7 @@ } auto* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser->profile()) - ->GetNetworkContext(); + browser->profile()->GetDefaultStoragePartition()->GetNetworkContext(); content::LoadBasicRequest(network_context, url); {
diff --git a/chrome/browser/data_reduction_proxy/data_reduction_proxy_browsertest.cc b/chrome/browser/data_reduction_proxy/data_reduction_proxy_browsertest.cc index 78066df..bb5b1cb 100644 --- a/chrome/browser/data_reduction_proxy/data_reduction_proxy_browsertest.cc +++ b/chrome/browser/data_reduction_proxy/data_reduction_proxy_browsertest.cc
@@ -337,8 +337,7 @@ auto simple_loader = network::SimpleURLLoader::Create( std::move(resource_request), TRAFFIC_ANNOTATION_FOR_TESTS); - auto* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()); + auto* storage_partition = browser()->profile()->GetDefaultStoragePartition(); auto url_loader_factory = storage_partition->GetURLLoaderFactoryForBrowserProcess(); @@ -354,6 +353,4 @@ loop.Run(); } - - } // namespace data_reduction_proxy
diff --git a/chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.cc b/chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.cc index f121b80b..7b9bf80 100644 --- a/chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.cc +++ b/chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.cc
@@ -241,7 +241,7 @@ PrefService* profile_prefs = profile->GetPrefs(); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); std::unique_ptr<data_reduction_proxy::DataReductionProxyService> service = std::make_unique<data_reduction_proxy::DataReductionProxyService>(
diff --git a/chrome/browser/devtools/device/port_forwarding_controller.cc b/chrome/browser/devtools/device/port_forwarding_controller.cc index bfdf6cef..582822f 100644 --- a/chrome/browser/devtools/device/port_forwarding_controller.cc +++ b/chrome/browser/devtools/device/port_forwarding_controller.cc
@@ -162,11 +162,9 @@ net::HostPortPair host_port_pair(host, port); // Use a transient NetworkIsolationKey, as there's no need to share cached // DNS results from this request with anything else. - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext() - ->ResolveHost(host_port_pair, - net::NetworkIsolationKey::CreateTransient(), nullptr, - receiver_.BindNewPipeAndPassRemote()); + profile->GetDefaultStoragePartition()->GetNetworkContext()->ResolveHost( + host_port_pair, net::NetworkIsolationKey::CreateTransient(), nullptr, + receiver_.BindNewPipeAndPassRemote()); receiver_.set_disconnect_handler( base::BindOnce(&PortForwardingHostResolver::OnComplete, base::Unretained(this), net::ERR_NAME_NOT_RESOLVED,
diff --git a/chrome/browser/devtools/devtools_browsertest.cc b/chrome/browser/devtools/devtools_browsertest.cc index e3e72a4be..9936263 100644 --- a/chrome/browser/devtools/devtools_browsertest.cc +++ b/chrome/browser/devtools/devtools_browsertest.cc
@@ -2324,7 +2324,7 @@ bool include_subdomains = false; mojo::ScopedAllowSyncCallForTesting allow_sync_call; content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); base::RunLoop run_loop; partition->GetNetworkContext()->AddHSTS( https_url.host(), expiry, include_subdomains, run_loop.QuitClosure());
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc index a4cd899a..c4309e06 100644 --- a/chrome/browser/devtools/devtools_ui_bindings.cc +++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -956,8 +956,8 @@ return; } } else { - auto* partition = content::BrowserContext::GetStoragePartitionForUrl( - web_contents_->GetBrowserContext(), gurl); + auto* partition = + web_contents_->GetBrowserContext()->GetStoragePartitionForUrl(gurl); url_loader_factory = partition->GetURLLoaderFactoryForBrowserProcess(); }
diff --git a/chrome/browser/dom_distiller/dom_distiller_service_factory.cc b/chrome/browser/dom_distiller/dom_distiller_service_factory.cc index cc2e49d..896d727a 100644 --- a/chrome/browser/dom_distiller/dom_distiller_service_factory.cc +++ b/chrome/browser/dom_distiller/dom_distiller_service_factory.cc
@@ -71,7 +71,7 @@ new DistillerPageWebContentsFactory(context)); std::unique_ptr<DistillerURLFetcherFactory> distiller_url_fetcher_factory( new DistillerURLFetcherFactory( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess())); dom_distiller::proto::DomDistillerOptions options;
diff --git a/chrome/browser/domain_reliability/browsertest.cc b/chrome/browser/domain_reliability/browsertest.cc index 420ef3b..ca0860f7 100644 --- a/chrome/browser/domain_reliability/browsertest.cc +++ b/chrome/browser/domain_reliability/browsertest.cc
@@ -59,8 +59,9 @@ } network::mojom::NetworkContext* GetNetworkContext() { - return content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + return browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext(); } @@ -216,8 +217,7 @@ resource_request->url = hung_url; auto simple_loader = network::SimpleURLLoader::Create( std::move(resource_request), TRAFFIC_ANNOTATION_FOR_TESTS); - auto* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()); + auto* storage_partition = browser()->profile()->GetDefaultStoragePartition(); simple_loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie( storage_partition->GetURLLoaderFactoryForBrowserProcess().get(), base::BindOnce([](std::unique_ptr<std::string> body) {}));
diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc index a5f6d7f..0002d52b 100644 --- a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc +++ b/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc
@@ -45,18 +45,17 @@ int64_t timeout_ms, const std::string& post_data, const net::NetworkTrafficAnnotationTag& annotation_tag) - : EndpointFetcher( - oauth_consumer_name, - url, - http_method, - content_type, - scopes, - timeout_ms, - post_data, - annotation_tag, - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(), - IdentityManagerFactory::GetForProfile(profile)) {} + : EndpointFetcher(oauth_consumer_name, + url, + http_method, + content_type, + scopes, + timeout_ms, + post_data, + annotation_tag, + profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), + IdentityManagerFactory::GetForProfile(profile)) {} EndpointFetcher::EndpointFetcher( Profile* const profile, @@ -75,9 +74,8 @@ post_data_(post_data), headers_(headers), annotation_tag_(annotation_tag), - url_loader_factory_( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess()), + url_loader_factory_(profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()), identity_manager_(nullptr), sanitize_response_(true) {} @@ -92,9 +90,8 @@ timeout_ms_(0), post_data_(std::string()), annotation_tag_(annotation_tag), - url_loader_factory_( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess()), + url_loader_factory_(profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()), identity_manager_(nullptr), sanitize_response_(false) {}
diff --git a/chrome/browser/enterprise/connectors/file_system/rename_handler.cc b/chrome/browser/enterprise/connectors/file_system/rename_handler.cc index 8db11dae..fdabf80 100644 --- a/chrome/browser/enterprise/connectors/file_system/rename_handler.cc +++ b/chrome/browser/enterprise/connectors/file_system/rename_handler.cc
@@ -203,8 +203,7 @@ scoped_refptr<network::SharedURLLoaderFactory> FileSystemRenameHandler::GetURLLoaderFactory(content::BrowserContext* context) { content::StoragePartition* partition = - content::BrowserContext::GetStoragePartitionForUrl(context, - settings_.home); + context->GetStoragePartitionForUrl(settings_.home); return partition->GetURLLoaderFactoryForBrowserProcess(); }
diff --git a/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc b/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc index b6e3ea1..385c6dfe 100644 --- a/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc +++ b/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc
@@ -168,8 +168,8 @@ } content::StoragePartition* partition = - content::BrowserContext::GetStoragePartitionForUrl( - web_view_->GetBrowserContext(), GURL(kFileSystemBoxEndpointApi)); + web_view_->GetBrowserContext()->GetStoragePartitionForUrl( + GURL(kFileSystemBoxEndpointApi)); auto url_loader = partition->GetURLLoaderFactoryForBrowserProcess(); auto callback = base::BindOnce(&FileSystemSigninDialogDelegate::OnGotOAuthTokens,
diff --git a/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc b/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc index 0da9152..4f95795e 100644 --- a/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc +++ b/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc
@@ -40,12 +40,19 @@ const char kProfileId[] = "profile_id"; const char kProfileName[] = "profile_name"; +const char16_t kProfileName16[] = u"profile_name"; +const char16_t kPluginName16[] = u"plugin_name"; +const char16_t kPluginVersion16[] = u"plugin_version"; +const char16_t kPluginDescription16[] = u"plugin_description"; +const char kPluginFolderPath[] = "plugin_folder_path"; +const char kPluginFileName[] = "plugin_file_name"; + +#if !BUILDFLAG(IS_CHROMEOS_ASH) const char kPluginName[] = "plugin_name"; const char kPluginVersion[] = "plugin_version"; const char kPluginDescription[] = "plugin_description"; -const char kPluginFolderPath[] = "plugin_folder_path"; -const char kPluginFileName[] = "plugin_file_name"; +#endif } // namespace @@ -75,7 +82,7 @@ ProfileAttributesInitParams params; params.profile_path = profile_manager()->profiles_dir().AppendASCII(kProfileId); - params.profile_name = base::ASCIIToUTF16(kProfileName); + params.profile_name = kProfileName16; profile_manager_.profile_attributes_storage()->AddProfile( std::move(params)); } @@ -92,9 +99,9 @@ void InitializePlugin() { content::WebPluginInfo info; - info.name = base::ASCIIToUTF16(kPluginName); - info.version = base::ASCIIToUTF16(kPluginVersion); - info.desc = base::ASCIIToUTF16(kPluginDescription); + info.name = kPluginName16; + info.version = kPluginVersion16; + info.desc = kPluginDescription16; info.path = base::FilePath() .AppendASCII(kPluginFolderPath) .AppendASCII(kPluginFileName);
diff --git a/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc b/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc index 161f93c..80c547dc 100644 --- a/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc +++ b/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc
@@ -36,6 +36,7 @@ constexpr char kProfile[] = "Profile"; constexpr char kIdleProfile[] = "IdleProfile"; +constexpr char16_t kIdleProfile16[] = u"IdleProfile"; constexpr char kExtensionId[] = "abcdefghijklmnopabcdefghijklmnop"; constexpr char kExtensionId2[] = "abcdefghijklmnopabcdefghijklmnpo"; constexpr int kFakeTime = 123456; @@ -155,7 +156,7 @@ profile_manager()->profiles_dir().AppendASCII(kIdleProfile); ProfileAttributesInitParams params; params.profile_path = profile_path; - params.profile_name = base::ASCIIToUTF16(kIdleProfile); + params.profile_name = kIdleProfile16; profile_manager()->profile_attributes_storage()->AddProfile( std::move(params)); std::unique_ptr<em::ChromeUserProfileInfo> response =
diff --git a/chrome/browser/enterprise/reporting/report_generator_unittest.cc b/chrome/browser/enterprise/reporting/report_generator_unittest.cc index 5650bfc..102f17e5 100644 --- a/chrome/browser/enterprise/reporting/report_generator_unittest.cc +++ b/chrome/browser/enterprise/reporting/report_generator_unittest.cc
@@ -44,9 +44,9 @@ constexpr char kProfile[] = "Profile"; -const char kPluginName[] = "plugin"; -const char kPluginVersion[] = "1.0"; -const char kPluginDescription[] = "This is a plugin."; +const char16_t kPluginName16[] = u"plugin"; +const char16_t kPluginVersion16[] = u"1.0"; +const char16_t kPluginDescription16[] = u"This is a plugin."; const char kPluginFileName[] = "file_name"; #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -56,6 +56,10 @@ const char kArcAppName2[] = "app_name2"; const char kArcPackageName2[] = "package_name2"; const char kArcActivityName2[] = "activity_name2"; +#else +const char kPluginName[] = "plugin"; +const char kPluginVersion[] = "1.0"; +const char kPluginDescription[] = "This is a plugin."; #endif #if !BUILDFLAG(IS_CHROMEOS_ASH) @@ -196,9 +200,9 @@ void CreatePlugin() { content::WebPluginInfo info; - info.name = base::ASCIIToUTF16(kPluginName); - info.version = base::ASCIIToUTF16(kPluginVersion); - info.desc = base::ASCIIToUTF16(kPluginDescription); + info.name = kPluginName16; + info.version = kPluginVersion16; + info.desc = kPluginDescription16; info.path = base::FilePath().AppendASCII("path").AppendASCII(kPluginFileName); content::PluginService* plugin_service =
diff --git a/chrome/browser/error_reporting/chrome_js_error_report_processor.cc b/chrome/browser/error_reporting/chrome_js_error_report_processor.cc index 8644f0a0..4b67a02 100644 --- a/chrome/browser/error_reporting/chrome_js_error_report_processor.cc +++ b/chrome/browser/error_reporting/chrome_js_error_report_processor.cc
@@ -325,9 +325,8 @@ #if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_CHROMEOS_LACROS) // loader_factory must be created on UI thread. Get it now while we still // know the browser_context pointer is valid. - loader_factory = - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetURLLoaderFactoryForBrowserProcess(); + loader_factory = browser_context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); #endif // Get browser uptime before swapping threads to reduce lag time between the
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc b/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc index a8da011..489ce3b 100644 --- a/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc +++ b/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc
@@ -69,7 +69,7 @@ std::move(loop_quit).Run(); }); network::mojom::CookieManager* cookie_manager = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); cookie_manager->SetCanonicalCookie( *cookie, google_url, net::CookieOptions::MakeAllInclusive(),
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc b/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc index 5cc032c..167c942d 100644 --- a/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc +++ b/chrome/browser/extensions/api/browsing_data/browsing_data_unittest.cc
@@ -66,7 +66,7 @@ // TODO(crbug.com/1182630): This can be removed once crbug.com/1182630 is // fixed. Make sure quota manager for storage partition is finished // initializing. - content::BrowserContext::GetDefaultStoragePartition(profile()); + profile()->GetDefaultStoragePartition(); task_environment()->RunUntilIdle(); }
diff --git a/chrome/browser/extensions/api/cookies/cookies_api.cc b/chrome/browser/extensions/api/cookies/cookies_api.cc index f8fd400..06bd480 100644 --- a/chrome/browser/extensions/api/cookies/cookies_api.cc +++ b/chrome/browser/extensions/api/cookies/cookies_api.cc
@@ -82,7 +82,7 @@ *store_id = cookies_helpers::GetStoreIdFromProfile(store_profile); } - return content::BrowserContext::GetDefaultStoragePartition(store_profile) + return store_profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); } @@ -191,7 +191,7 @@ mojo::Receiver<network::mojom::CookieChangeListener>* receiver, Profile* profile) { network::mojom::CookieManager* cookie_manager = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); if (!cookie_manager) return;
diff --git a/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc b/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc index 0dbdcee..1cdaca8 100644 --- a/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc +++ b/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc
@@ -77,10 +77,10 @@ network::mojom::URLLoaderFactory* loader_factory = nullptr; if (!icon_url.is_empty()) { - loader_factory = - content::BrowserContext::GetDefaultStoragePartition(browser_context()) - ->GetURLLoaderFactoryForBrowserProcess() - .get(); + loader_factory = browser_context() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get(); } auto helper = base::MakeRefCounted<WebstoreInstallHelper>(
diff --git a/chrome/browser/extensions/api/declarative/declarative_apitest.cc b/chrome/browser/extensions/api/declarative/declarative_apitest.cc index c86f0bc..822cd85 100644 --- a/chrome/browser/extensions/api/declarative/declarative_apitest.cc +++ b/chrome/browser/extensions/api/declarative/declarative_apitest.cc
@@ -193,8 +193,7 @@ IN_PROC_BROWSER_TEST_F(DeclarativeApiTest, PersistRules) { // Wait for declarative rules to be set up from PRE test. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); ui_test_utils::NavigateToURL(browser(), GURL(kArbitraryUrl)); EXPECT_EQ(kTestTitle, GetTitle()); } @@ -216,8 +215,7 @@ ext_dir.Pack(), 1 /*+1 installed extension*/, browser()); ASSERT_TRUE(extension); // Wait for declarative rules to be set up. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); std::string extension_id(extension->id()); ASSERT_TRUE(ready.WaitUntilSatisfied()); ui_test_utils::NavigateToURL(browser(), GURL(kArbitraryUrl)); @@ -286,8 +284,7 @@ ext_dir.Pack(), 1 /*+1 installed extension*/, browser()); ASSERT_TRUE(extension); // Wait for declarative rules to be set up. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); std::string extension_id(extension->id()); ASSERT_TRUE(ready.WaitUntilSatisfied()); ui_test_utils::NavigateToURL(browser(), GURL(kArbitraryUrl)); @@ -299,8 +296,7 @@ // 2. Uninstall the extension. Rules are gone and preferences should be empty. UninstallExtension(extension_id); // Wait for declarative rules to be removed. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); ui_test_utils::NavigateToURL(browser(), GURL(kArbitraryUrl)); EXPECT_NE(kTestTitle, GetTitle()); EXPECT_EQ(0u, NumberOfRegisteredRules(extension_id));
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc index 58f8860..676bdd6 100644 --- a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc +++ b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
@@ -364,8 +364,7 @@ const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); ASSERT_TRUE(extension); // Wait for declarative rules to be set up. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); const ExtensionAction* action = ExtensionActionManager::Get(browser()->profile()) ->GetExtensionAction(*extension); @@ -477,8 +476,7 @@ loader.LoadExtension(ext_dir_.UnpackedPath()); ASSERT_TRUE(extension); // Wait for declarative rules to be set up. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); ExtensionAction* action = ExtensionActionManager::Get(browser()->profile()) ->GetExtensionAction(*extension); @@ -793,8 +791,7 @@ UnloadExtension(extension_id); // Wait for declarative rules to be removed. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); NavigateInRenderer(tab, GURL("http://test/")); EXPECT_TRUE(WaitForPageActionVisibilityChangeTo(0)); EXPECT_EQ(0u, extension_action_test_util::GetVisiblePageActionCount(tab));
diff --git a/chrome/browser/extensions/api/declarative_content/set_icon_apitest.cc b/chrome/browser/extensions/api/declarative_content/set_icon_apitest.cc index efea0c4..23de89b 100644 --- a/chrome/browser/extensions/api/declarative_content/set_icon_apitest.cc +++ b/chrome/browser/extensions/api/declarative_content/set_icon_apitest.cc
@@ -77,8 +77,7 @@ const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); ASSERT_TRUE(extension); // Wait for declarative rules to be set up. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); const ExtensionAction* action = ExtensionActionManager::Get(browser()->profile()) ->GetExtensionAction(*extension);
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc index b8cdb94a..10df1ece 100644 --- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc +++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -1403,8 +1403,8 @@ EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &filesystem_path)); EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &directory_url_str)); - context_ = content::BrowserContext::GetStoragePartition( - browser_context(), render_frame_host()->GetSiteInstance()) + context_ = browser_context() + ->GetStoragePartition(render_frame_host()->GetSiteInstance()) ->GetFileSystemContext(); // Directory url is non empty only for syncfilesystem.
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc b/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc index c91bddb..63e0c03 100644 --- a/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc +++ b/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc
@@ -155,7 +155,7 @@ { base::RunLoop run_loop; content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile()); + profile()->GetDefaultStoragePartition(); content::ServiceWorkerContext* context = storage_partition->GetServiceWorkerContext(); content::StopServiceWorkerForScope(context, extension->url(),
diff --git a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc index 2d2fd31b..132e989 100644 --- a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc +++ b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
@@ -129,8 +129,7 @@ EXPECT_FALSE(device_permissions->FindHidDeviceEntry(*device7_)); EXPECT_EQ(4U, device_permissions->entries().size()); - EXPECT_EQ(base::ASCIIToUTF16( - "Test Product from Test Manufacturer (serial number ABCDE)"), + EXPECT_EQ(u"Test Product from Test Manufacturer (serial number ABCDE)", device0_entry->GetPermissionMessageString()); EXPECT_EQ(u"Test Product from Test Manufacturer", device1_entry->GetPermissionMessageString()); @@ -328,8 +327,7 @@ EXPECT_FALSE(device_permissions->FindHidDeviceEntry(*device6_)); EXPECT_FALSE(device_permissions->FindHidDeviceEntry(*device7_)); - EXPECT_EQ(base::ASCIIToUTF16( - "Test Product from Test Manufacturer (serial number ABCDE)"), + EXPECT_EQ(u"Test Product from Test Manufacturer (serial number ABCDE)", device0_entry->GetPermissionMessageString()); EXPECT_EQ(u"Test HID Device (serial number abcde)", device4_entry->GetPermissionMessageString()); @@ -345,8 +343,7 @@ DevicePermissionsManager::GetPermissionMessage( 0x0000, 0x0001, empty, empty, empty, false)); - EXPECT_EQ(base::ASCIIToUTF16( - "Unknown product 0001 from vendor 0000 (serial number A)"), + EXPECT_EQ(u"Unknown product 0001 from vendor 0000 (serial number A)", DevicePermissionsManager::GetPermissionMessage( 0x0000, 0x0001, empty, empty, u"A", false)); @@ -354,8 +351,7 @@ DevicePermissionsManager::GetPermissionMessage( 0x18D1, 0x0001, empty, empty, empty, false)); - EXPECT_EQ(base::ASCIIToUTF16( - "Unknown product 0001 from Google Inc. (serial number A)"), + EXPECT_EQ(u"Unknown product 0001 from Google Inc. (serial number A)", DevicePermissionsManager::GetPermissionMessage( 0x18D1, 0x0001, empty, empty, serial_number, false));
diff --git a/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc b/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc index 97f5e36..f104c2d 100644 --- a/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc +++ b/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
@@ -2671,7 +2671,9 @@ // Setup a file in the filesystem which we can download. ASSERT_TRUE(HTML5FileWriter::CreateFileForTesting( - BrowserContext::GetDefaultStoragePartition(current_browser()->profile()) + current_browser() + ->profile() + ->GetDefaultStoragePartition() ->GetFileSystemContext(), storage::FileSystemURL::CreateForTest(GURL(download_url)), kPayloadData, strlen(kPayloadData)));
diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc index dbd35eff..7f76a77 100644 --- a/chrome/browser/extensions/api/identity/identity_apitest.cc +++ b/chrome/browser/extensions/api/identity/identity_apitest.cc
@@ -3362,9 +3362,9 @@ public: network::mojom::CookieManager* GetCookieManager() { Profile* profile = browser()->profile(); - return content::BrowserContext::GetStoragePartition( - profile, - WebAuthFlow::GetWebViewPartitionConfig(GetParam(), profile)) + return profile + ->GetStoragePartition( + WebAuthFlow::GetWebViewPartitionConfig(GetParam(), profile)) ->GetCookieManagerForBrowserProcess(); }
diff --git a/chrome/browser/extensions/api/identity/identity_clear_all_cached_auth_tokens_function.cc b/chrome/browser/extensions/api/identity/identity_clear_all_cached_auth_tokens_function.cc index a4deb13..aea096f 100644 --- a/chrome/browser/extensions/api/identity/identity_clear_all_cached_auth_tokens_function.cc +++ b/chrome/browser/extensions/api/identity/identity_clear_all_cached_auth_tokens_function.cc
@@ -40,8 +40,9 @@ id_api->token_cache()->EraseAllTokensForExtension(extension()->id()); for (WebAuthFlow::Partition partition : kPartitionsToClean) { - content::BrowserContext::GetStoragePartition( - profile, WebAuthFlow::GetWebViewPartitionConfig(partition, profile)) + profile + ->GetStoragePartition( + WebAuthFlow::GetWebViewPartitionConfig(partition, profile)) ->GetCookieManagerForBrowserProcess() ->DeleteCookies( network::mojom::CookieDeletionFilter::New(),
diff --git a/chrome/browser/extensions/api/identity/web_auth_flow.cc b/chrome/browser/extensions/api/identity/web_auth_flow.cc index d017f92..4a4d36e 100644 --- a/chrome/browser/extensions/api/identity/web_auth_flow.cc +++ b/chrome/browser/extensions/api/identity/web_auth_flow.cc
@@ -138,8 +138,8 @@ } content::StoragePartition* WebAuthFlow::GetGuestPartition() { - return content::BrowserContext::GetStoragePartition( - profile_, GetWebViewPartitionConfig(partition_, profile_)); + return profile_->GetStoragePartition( + GetWebViewPartitionConfig(partition_, profile_)); } const std::string& WebAuthFlow::GetAppWindowKey() const {
diff --git a/chrome/browser/extensions/api/image_writer_private/operation_manager.cc b/chrome/browser/extensions/api/image_writer_private/operation_manager.cc index f5daeff..8049e96 100644 --- a/chrome/browser/extensions/api/image_writer_private/operation_manager.cc +++ b/chrome/browser/extensions/api/image_writer_private/operation_manager.cc
@@ -76,7 +76,7 @@ mojo::PendingRemote<network::mojom::URLLoaderFactory> url_loader_factory_remote; - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() ->Clone(url_loader_factory_remote.InitWithNewPipeAndPassReceiver());
diff --git a/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc b/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc index 62f48189..e532fe17 100644 --- a/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc +++ b/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc
@@ -118,7 +118,7 @@ const std::string& hash) { mojo::PendingRemote<network::mojom::URLLoaderFactory> url_loader_factory_remote; - content::BrowserContext::GetDefaultStoragePartition(&test_profile_) + test_profile_.GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() ->Clone(url_loader_factory_remote.InitWithNewPipeAndPassReceiver());
diff --git a/chrome/browser/extensions/api/notifications/notifications_apitest.cc b/chrome/browser/extensions/api/notifications/notifications_apitest.cc index 8f68c02a..872eeda 100644 --- a/chrome/browser/extensions/api/notifications/notifications_apitest.cc +++ b/chrome/browser/extensions/api/notifications/notifications_apitest.cc
@@ -301,21 +301,21 @@ const extensions::Extension* extension = GetSingleLoadedExtension(); ASSERT_TRUE(extension) << message_; - const char kNewTitle[] = "Changed!"; - const char kNewMessage[] = "Too late! The show ended yesterday"; + const char16_t kNewTitle[] = u"Changed!"; + const char16_t kNewMessage[] = u"Too late! The show ended yesterday"; int kNewPriority = 2; - const char kButtonTitle[] = "NewButton"; + const char16_t kButtonTitle[] = u"NewButton"; message_center::Notification* notification = GetNotificationForExtension(extension); ASSERT_TRUE(notification); - EXPECT_EQ(base::ASCIIToUTF16(kNewTitle), notification->title()); - EXPECT_EQ(base::ASCIIToUTF16(kNewMessage), notification->message()); + EXPECT_EQ(kNewTitle, notification->title()); + EXPECT_EQ(kNewMessage, notification->message()); EXPECT_EQ(kNewPriority, notification->priority()); EXPECT_TRUE(notification->silent()); EXPECT_EQ(1u, notification->buttons().size()); - EXPECT_EQ(base::ASCIIToUTF16(kButtonTitle), notification->buttons()[0].title); + EXPECT_EQ(kButtonTitle, notification->buttons()[0].title); } IN_PROC_BROWSER_TEST_F(NotificationsApiTest, TestGetPermissionLevel) {
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc index 86b26a1..f2f9767 100644 --- a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc +++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
@@ -61,13 +61,13 @@ constexpr char kTestEmail[] = "user@gmail.com"; -constexpr char kUsername1[] = "alice"; -constexpr char kUsername2[] = "bob"; +constexpr char16_t kUsername1[] = u"alice"; +constexpr char16_t kUsername2[] = u"bob"; -constexpr char kPassword1[] = "s3cre3t"; -constexpr char kPassword2[] = "f00b4r"; -constexpr char kWeakPassword1[] = "123456"; -constexpr char kWeakPassword2[] = "111111"; +constexpr char16_t kPassword1[] = u"s3cre3t"; +constexpr char16_t kPassword2[] = u"f00b4r"; +constexpr char16_t kWeakPassword1[] = u"123456"; +constexpr char16_t kWeakPassword2[] = u"111111"; using api::passwords_private::CompromisedInfo; using api::passwords_private::InsecureCredential; @@ -136,24 +136,24 @@ password_manager::InsecureCredential MakeInsecureCredential( base::StringPiece signon_realm, - base::StringPiece username, + base::StringPiece16 username, base::TimeDelta time_since_creation = base::TimeDelta(), InsecureType compromise_type = InsecureType::kLeaked) { return password_manager::InsecureCredential( - std::string(signon_realm), base::ASCIIToUTF16(username), + std::string(signon_realm), std::u16string(username), base::Time::Now() - time_since_creation, compromise_type, IsMuted(false)); } PasswordForm MakeSavedPassword(base::StringPiece signon_realm, - base::StringPiece username, - base::StringPiece password = kPassword1, - base::StringPiece username_element = "") { + base::StringPiece16 username, + base::StringPiece16 password = kPassword1, + base::StringPiece16 username_element = u"") { PasswordForm form; form.signon_realm = std::string(signon_realm); form.url = GURL(signon_realm); - form.username_value = base::ASCIIToUTF16(username); - form.password_value = base::ASCIIToUTF16(password); - form.username_element = base::ASCIIToUTF16(username_element); + form.username_value = std::u16string(username); + form.password_value = std::u16string(password); + form.username_element = std::u16string(username_element); return form; } @@ -163,16 +163,16 @@ PasswordForm MakeSavedAndroidPassword( base::StringPiece package_name, - base::StringPiece username, + base::StringPiece16 username, base::StringPiece app_display_name = "", base::StringPiece affiliated_web_realm = "", - base::StringPiece password = kPassword1) { + base::StringPiece16 password = kPassword1) { PasswordForm form; form.signon_realm = MakeAndroidRealm(package_name); - form.username_value = base::ASCIIToUTF16(username); + form.username_value = std::u16string(username); form.app_display_name = std::string(app_display_name); form.affiliated_web_realm = std::string(affiliated_web_realm); - form.password_value = base::ASCIIToUTF16(password); + form.password_value = std::u16string(password); return form; } @@ -181,16 +181,17 @@ const std::string& formatted_origin, const std::string& detailed_origin, const base::Optional<std::string>& change_password_url, - const std::string& username) { + const std::u16string& username) { auto change_password_url_field_matcher = change_password_url.has_value() ? Field(&InsecureCredential::change_password_url, Pointee(change_password_url.value())) : Field(&InsecureCredential::change_password_url, IsNull()); - return AllOf(Field(&InsecureCredential::formatted_origin, formatted_origin), - Field(&InsecureCredential::detailed_origin, detailed_origin), - change_password_url_field_matcher, - Field(&InsecureCredential::username, username)); + return AllOf( + Field(&InsecureCredential::formatted_origin, formatted_origin), + Field(&InsecureCredential::detailed_origin, detailed_origin), + change_password_url_field_matcher, + Field(&InsecureCredential::username, base::UTF16ToASCII(username))); } // Creates matcher for a given compromised info. @@ -211,7 +212,7 @@ const std::string& formatted_origin, const std::string& detailed_origin, const base::Optional<std::string>& change_password_url, - const std::string& username, + const std::u16string& username, base::TimeDelta elapsed_time_since_compromise, const std::string& elapsed_time_since_compromise_str, api::passwords_private::CompromiseType compromise_type) { @@ -595,11 +596,11 @@ InsecureCredential credential = std::move(delegate().GetCompromisedCredentials().at(0)); - EXPECT_EQ(kUsername1, credential.username); + EXPECT_EQ(base::UTF16ToASCII(kUsername1), credential.username); // Purposefully set a wrong username and verify that trying to get a // plaintext password fails. - credential.signon_realm = kUsername2; + credential.signon_realm = base::UTF16ToASCII(kUsername2); EXPECT_EQ(base::nullopt, delegate().GetPlaintextInsecurePassword(std::move(credential))); } @@ -615,7 +616,7 @@ std::move(delegate().GetCompromisedCredentials().at(0)); EXPECT_EQ(0, credential.id); EXPECT_EQ(kExampleCom, credential.signon_realm); - EXPECT_EQ(kUsername1, credential.username); + EXPECT_EQ(base::UTF16ToASCII(kUsername1), credential.username); EXPECT_EQ(nullptr, credential.password); base::Optional<InsecureCredential> opt_credential = @@ -623,8 +624,8 @@ ASSERT_TRUE(opt_credential.has_value()); EXPECT_EQ(0, opt_credential->id); EXPECT_EQ(kExampleCom, opt_credential->signon_realm); - EXPECT_EQ(kUsername1, opt_credential->username); - EXPECT_EQ(kPassword1, *opt_credential->password); + EXPECT_EQ(base::UTF16ToASCII(kUsername1), opt_credential->username); + EXPECT_EQ(base::UTF16ToASCII(kPassword1), *opt_credential->password); } // Test that changing a insecure password fails if the ids don't match. @@ -670,14 +671,15 @@ std::move(delegate().GetCompromisedCredentials().at(0)); EXPECT_EQ(0, credential.id); EXPECT_EQ(kExampleCom, credential.signon_realm); - EXPECT_EQ(kUsername1, credential.username); - EXPECT_EQ(base::UTF8ToUTF16(kPassword1), + EXPECT_EQ(base::UTF16ToASCII(kUsername1), credential.username); + EXPECT_EQ(kPassword1, store().stored_passwords().at(kExampleCom).at(0).password_value); - EXPECT_TRUE(delegate().ChangeInsecureCredential(credential, kPassword2)); + EXPECT_TRUE(delegate().ChangeInsecureCredential( + credential, base::UTF16ToASCII(kPassword2))); RunUntilIdle(); - EXPECT_EQ(base::UTF8ToUTF16(kPassword2), + EXPECT_EQ(kPassword2, store().stored_passwords().at(kExampleCom).at(0).password_value); } @@ -685,7 +687,7 @@ TEST_F(PasswordCheckDelegateTest, ChangeInsecureCredentialRemovesDupes) { store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1)); store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1, - "different_element")); + u"different_element")); store().AddInsecureCredential( MakeInsecureCredential(kExampleCom, kUsername1)); RunUntilIdle(); @@ -694,14 +696,13 @@ InsecureCredential credential = std::move(delegate().GetCompromisedCredentials().at(0)); - EXPECT_TRUE(delegate().ChangeInsecureCredential(credential, kPassword2)); + EXPECT_TRUE(delegate().ChangeInsecureCredential( + credential, base::UTF16ToASCII(kPassword2))); RunUntilIdle(); EXPECT_EQ(1u, store().stored_passwords().at(kExampleCom).size()); - EXPECT_EQ( - kPassword2, - base::UTF16ToUTF8( - store().stored_passwords().at(kExampleCom).at(0).password_value)); + EXPECT_EQ(kPassword2, + store().stored_passwords().at(kExampleCom).at(0).password_value); } // Test that removing a insecure password fails if the ids don't match. @@ -762,9 +763,7 @@ store().RemoveLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1)); RunUntilIdle(); static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential( - LeakCheckCredential(base::ASCIIToUTF16(kUsername1), - base::ASCIIToUTF16(kPassword1)), - IsLeaked(true)); + LeakCheckCredential(kUsername1, kPassword1), IsLeaked(true)); RunUntilIdle(); EXPECT_THAT(store().insecure_credentials(), IsEmpty()); @@ -777,9 +776,7 @@ RunUntilIdle(); static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential( - LeakCheckCredential(base::ASCIIToUTF16(kUsername1), - base::ASCIIToUTF16(kPassword1)), - IsLeaked(false)); + LeakCheckCredential(kUsername1, kPassword1), IsLeaked(false)); RunUntilIdle(); EXPECT_THAT(store().insecure_credentials(), IsEmpty()); @@ -794,22 +791,21 @@ delegate().StartPasswordCheck(); static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential( - LeakCheckCredential(base::ASCIIToUTF16(kUsername1), - base::ASCIIToUTF16(kPassword1)), - IsLeaked(true)); + LeakCheckCredential(kUsername1, kPassword1), IsLeaked(true)); RunUntilIdle(); EXPECT_THAT(store().insecure_credentials(), ElementsAre(password_manager::InsecureCredential( - kExampleCom, base::ASCIIToUTF16(kUsername1), - base::Time::Now(), InsecureType::kLeaked, IsMuted(false)))); + kExampleCom, kUsername1, base::Time::Now(), + InsecureType::kLeaked, IsMuted(false)))); } // Test that a found leak creates a compromised credential in the password // store for each combination of the same canonicalized username and password. TEST_F(PasswordCheckDelegateTest, OnLeakFoundCreatesMultipleCredential) { - const std::string kUsername2Upper = base::ToUpperASCII(kUsername2); - const std::string kUsername2Email = base::StrCat({kUsername2, "@email.com"}); + const std::u16string kUsername2Upper = base::ToUpperASCII(kUsername2); + const std::u16string kUsername2Email = + base::StrCat({kUsername2, u"@email.com"}); store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1)); store().AddLogin(MakeSavedPassword(kExampleOrg, kUsername1, kPassword1)); @@ -820,30 +816,25 @@ identity_test_env().MakeAccountAvailable(kTestEmail); delegate().StartPasswordCheck(); static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential( - LeakCheckCredential(base::ASCIIToUTF16(kUsername1), - base::ASCIIToUTF16(kPassword1)), - IsLeaked(true)); + LeakCheckCredential(kUsername1, kPassword1), IsLeaked(true)); static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential( - LeakCheckCredential(base::ASCIIToUTF16(kUsername2Email), - base::ASCIIToUTF16(kPassword2)), - IsLeaked(true)); + LeakCheckCredential(kUsername2Email, kPassword2), IsLeaked(true)); RunUntilIdle(); EXPECT_THAT( store().insecure_credentials(), - UnorderedElementsAre( - password_manager::InsecureCredential( - kExampleCom, base::ASCIIToUTF16(kUsername1), base::Time::Now(), - InsecureType::kLeaked, IsMuted(false)), - password_manager::InsecureCredential( - kExampleOrg, base::ASCIIToUTF16(kUsername1), base::Time::Now(), - InsecureType::kLeaked, IsMuted(false)), - password_manager::InsecureCredential( - kExampleCom, base::ASCIIToUTF16(kUsername2Upper), - base::Time::Now(), InsecureType::kLeaked, IsMuted(false)), - password_manager::InsecureCredential( - kExampleOrg, base::ASCIIToUTF16(kUsername2Email), - base::Time::Now(), InsecureType::kLeaked, IsMuted(false)))); + UnorderedElementsAre(password_manager::InsecureCredential( + kExampleCom, kUsername1, base::Time::Now(), + InsecureType::kLeaked, IsMuted(false)), + password_manager::InsecureCredential( + kExampleOrg, kUsername1, base::Time::Now(), + InsecureType::kLeaked, IsMuted(false)), + password_manager::InsecureCredential( + kExampleCom, kUsername2Upper, base::Time::Now(), + InsecureType::kLeaked, IsMuted(false)), + password_manager::InsecureCredential( + kExampleOrg, kUsername2Email, base::Time::Now(), + InsecureType::kLeaked, IsMuted(false)))); } // Verifies that the case where the user has no saved passwords is reported @@ -1045,9 +1036,7 @@ EXPECT_EQ(4, *status->remaining_in_queue); static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential( - LeakCheckCredential(base::ASCIIToUTF16(kUsername1), - base::ASCIIToUTF16(kPassword1)), - IsLeaked(false)); + LeakCheckCredential(kUsername1, kPassword1), IsLeaked(false)); status = PasswordCheckStatus::FromValue( event_iter->second->event_args->GetList().front()); @@ -1057,9 +1046,7 @@ EXPECT_EQ(2, *status->remaining_in_queue); static_cast<BulkLeakCheckDelegateInterface*>(service())->OnFinishedCredential( - LeakCheckCredential(base::ASCIIToUTF16(kUsername2), - base::ASCIIToUTF16(kPassword2)), - IsLeaked(false)); + LeakCheckCredential(kUsername2, kPassword2), IsLeaked(false)); status = PasswordCheckStatus::FromValue( event_iter->second->event_args->GetList().front());
diff --git a/chrome/browser/extensions/api/socket/udp_socket_unittest.cc b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc index 48b848c..4fd93c7 100644 --- a/chrome/browser/extensions/api/socket/udp_socket_unittest.cc +++ b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
@@ -37,8 +37,7 @@ std::unique_ptr<UDPSocket> CreateSocket() { network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->GetNetworkContext(); + profile()->GetDefaultStoragePartition()->GetNetworkContext(); mojo::PendingRemote<network::mojom::UDPSocket> socket; mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote; mojo::PendingReceiver<network::mojom::UDPSocketListener> listener_receiver =
diff --git a/chrome/browser/extensions/api/tabs/tabs_test.cc b/chrome/browser/extensions/api/tabs/tabs_test.cc index fb329f4..4e912ae 100644 --- a/chrome/browser/extensions/api/tabs/tabs_test.cc +++ b/chrome/browser/extensions/api/tabs/tabs_test.cc
@@ -1899,8 +1899,8 @@ // Change the default zoom level and verify GetDefaultZoom returns the // correct value. content::StoragePartition* partition = - content::BrowserContext::GetStoragePartition( - web_contents->GetBrowserContext(), web_contents->GetSiteInstance()); + web_contents->GetBrowserContext()->GetStoragePartition( + web_contents->GetSiteInstance()); ChromeZoomLevelPrefs* zoom_prefs = static_cast<ChromeZoomLevelPrefs*>(partition->GetZoomLevelDelegate()); @@ -1924,8 +1924,8 @@ double new_default_zoom_level = default_zoom_level + 0.42; content::StoragePartition* partition = - content::BrowserContext::GetStoragePartition( - web_contents->GetBrowserContext(), web_contents->GetSiteInstance()); + web_contents->GetBrowserContext()->GetStoragePartition( + web_contents->GetSiteInstance()); ChromeZoomLevelPrefs* zoom_prefs = static_cast<ChromeZoomLevelPrefs*>(partition->GetZoomLevelDelegate());
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc index 92b48a13..2d4ce8b 100644 --- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc +++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -328,7 +328,8 @@ params->automatically_assign_isolation_info = true; params->is_corb_enabled = false; mojo::PendingRemote<network::mojom::URLLoaderFactory> loader_factory; - content::BrowserContext::GetDefaultStoragePartition(profile()) + profile() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateURLLoaderFactory( loader_factory.InitWithNewPipeAndPassReceiver(), std::move(params)); @@ -1316,10 +1317,10 @@ request->resource_type = static_cast<int>(blink::mojom::ResourceType::kSubResource); - auto* url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get(); + auto* url_loader_factory = profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get(); content::SimpleURLLoaderTestHelper loader_helper; auto loader = network::SimpleURLLoader::Create( std::move(request), TRAFFIC_ANNOTATION_FOR_TESTS); @@ -1669,10 +1670,10 @@ // Next, try a series of requests through URLRequestFetchers (rather than a // renderer). - auto* url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->GetURLLoaderFactoryForBrowserProcess() - .get(); + auto* url_loader_factory = profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get(); { // google.com should be unaffected by the extension and should succeed. @@ -1790,8 +1791,7 @@ base::BindLambdaForTesting([&]() { has_connection_error = true; })); InstallWebRequestExtension("extension1"); - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); EXPECT_TRUE(has_connection_error); loader_factory.reset(); @@ -1801,8 +1801,7 @@ loader_factory.set_disconnect_handler( base::BindLambdaForTesting([&]() { has_connection_error = true; })); InstallWebRequestExtension("extension2"); - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); EXPECT_FALSE(has_connection_error); } @@ -1826,8 +1825,7 @@ auto api = std::make_unique<WebRequestAPI>(temp_profile); // Make sure we are proxying for |temp_profile|. api->ForceProxyForTesting(); - content::BrowserContext::GetDefaultStoragePartition(temp_profile) - ->FlushNetworkInterfaceForTesting(); + temp_profile->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); mojo::Remote<network::mojom::URLLoaderFactory> factory; auto pending_receiver = factory.BindNewPipeAndPassReceiver(); @@ -1842,7 +1840,7 @@ temp_web_contents.reset(); auto params = network::mojom::URLLoaderFactoryParams::New(); params->process_id = 0; - content::BrowserContext::GetDefaultStoragePartition(temp_profile) + temp_profile->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateURLLoaderFactory(std::move(pending_receiver), std::move(params)); @@ -1916,8 +1914,7 @@ ASSERT_TRUE(extension); EXPECT_TRUE(listener.WaitUntilSatisfied()); // Wait for webRequest listeners to be set up. - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); // Have the extension listen for requests to |fake_ntp_script.js|. listener.Reply(https_test_server()->GetURL("/fake_ntp_script.js").spec()); @@ -3130,7 +3127,7 @@ ui_test_utils::NavigateToURL(browser(), https_test_server.GetURL("/echo")); content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(profile()); + profile()->GetDefaultStoragePartition(); base::RunLoop run_loop; partition->GetNetworkContext()->AddHSTS( https_test_server.host_port_pair().host(), @@ -3315,7 +3312,7 @@ EXPECT_TRUE(listener.WaitUntilSatisfied()); content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(profile()); + profile()->GetDefaultStoragePartition(); base::RunLoop run_loop; partition->GetNetworkContext()->AddHSTS( "hsts.com", base::Time::Now() + base::TimeDelta::FromDays(100), true,
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc index ef6d0d7c..eefa450 100644 --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
@@ -440,10 +440,10 @@ network::mojom::URLLoaderFactory* loader_factory = nullptr; if (!icon_url.is_empty()) { - loader_factory = - content::BrowserContext::GetDefaultStoragePartition(browser_context()) - ->GetURLLoaderFactoryForBrowserProcess() - .get(); + loader_factory = browser_context() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get(); } auto helper = base::MakeRefCounted<WebstoreInstallHelper>(
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc index 1768582..c8a8903 100644 --- a/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc
@@ -491,9 +491,7 @@ GenerateArgs(kExtensionId, kExtensionManifest), profile()); VerifyBlockedByPolicyFunctionResult( - function.get(), - base::ASCIIToUTF16( - "From your administrator: This extension is blocked.")); + function.get(), u"From your administrator: This extension is blocked."); } TEST_F(WebstorePrivateBeginInstallWithManifest3Test,
diff --git a/chrome/browser/extensions/background_xhr_browsertest.cc b/chrome/browser/extensions/background_xhr_browsertest.cc index 1f900e7..2ed6bc6 100644 --- a/chrome/browser/extensions/background_xhr_browsertest.cc +++ b/chrome/browser/extensions/background_xhr_browsertest.cc
@@ -60,8 +60,7 @@ GURL test_url = net::AppendQueryParameter(extension->GetResourceURL(path), "url", url.spec()); ui_test_utils::NavigateToURL(browser(), test_url); - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->FlushNetworkInterfaceForTesting(); + profile()->GetDefaultStoragePartition()->FlushNetworkInterfaceForTesting(); constexpr char kSendXHRScript[] = R"( var xhr = new XMLHttpRequest(); xhr.open('GET', '%s');
diff --git a/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc b/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc index 3547b6e..d57df54d 100644 --- a/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc +++ b/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc
@@ -144,7 +144,7 @@ explicit ServiceWorkerConsoleObserver( content::BrowserContext* browser_context) { content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); scoped_observation_.Observe(partition->GetServiceWorkerContext()); } ~ServiceWorkerConsoleObserver() override = default;
diff --git a/chrome/browser/extensions/data_deleter.cc b/chrome/browser/extensions/data_deleter.cc index 419f5419..99920d1 100644 --- a/chrome/browser/extensions/data_deleter.cc +++ b/chrome/browser/extensions/data_deleter.cc
@@ -86,8 +86,8 @@ DCHECK(extension); if (AppIsolationInfo::HasIsolatedStorage(extension)) { - BrowserContext::AsyncObliterateStoragePartition( - profile, util::GetPartitionDomainForExtension(extension), + profile->AsyncObliterateStoragePartition( + util::GetPartitionDomainForExtension(extension), base::BindOnce( &OnNeedsToGarbageCollectIsolatedStorage, ExtensionSystem::Get(profile)->extension_service()->AsWeakPtr()));
diff --git a/chrome/browser/extensions/extension_garbage_collector.cc b/chrome/browser/extensions/extension_garbage_collector.cc index 18a0f06..63176db17c 100644 --- a/chrome/browser/extensions/extension_garbage_collector.cc +++ b/chrome/browser/extensions/extension_garbage_collector.cc
@@ -238,8 +238,8 @@ DCHECK(!installs_delayed_for_gc_); installs_delayed_for_gc_ = true; - content::BrowserContext::GarbageCollectStoragePartitions( - context_, std::move(active_paths), + context_->GarbageCollectStoragePartitions( + std::move(active_paths), base::BindOnce( &ExtensionGarbageCollector::OnGarbageCollectIsolatedStorageFinished, weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc index 6b1c9af6..d0b1fc3 100644 --- a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc +++ b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
@@ -86,8 +86,7 @@ if (!service) return; network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + profile->GetDefaultStoragePartition()->GetNetworkContext(); network_context->CreateProxyResolvingSocketFactory(std::move(receiver)); } @@ -235,7 +234,7 @@ return std::make_unique<gcm::GCMProfileService>( profile->GetPrefs(), profile->GetPath(), base::BindRepeating(&RequestProxyResolvingSocketFactory, profile), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), network::TestNetworkConnectionTracker::GetInstance(), chrome::GetChannel(), @@ -300,8 +299,7 @@ waiter_.PumpUILoop(); gcm_app_handler_->Shutdown(); - auto* partition = - content::BrowserContext::GetDefaultStoragePartition(profile()); + auto* partition = profile()->GetDefaultStoragePartition(); if (partition) partition->WaitForDeletionTasksForTesting(); }
diff --git a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc index f544d84..fdc0c6e 100644 --- a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc +++ b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
@@ -412,7 +412,7 @@ void WaitForStorageCleanup() { content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(profile()); + profile()->GetDefaultStoragePartition(); if (partition) partition->WaitForDeletionTasksForTesting(); }
diff --git a/chrome/browser/extensions/extension_resource_request_policy_apitest.cc b/chrome/browser/extensions/extension_resource_request_policy_apitest.cc index c9587ae..af18359 100644 --- a/chrome/browser/extensions/extension_resource_request_policy_apitest.cc +++ b/chrome/browser/extensions/extension_resource_request_policy_apitest.cc
@@ -679,8 +679,7 @@ GURL scope_url = embedded_test_server()->GetURL("/service_worker/"); content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); content::ServiceWorkerContext* context = storage_partition->GetServiceWorkerContext();
diff --git a/chrome/browser/extensions/extension_service_test_base.cc b/chrome/browser/extensions/extension_service_test_base.cc index c9fe011..23da14f6 100644 --- a/chrome/browser/extensions/extension_service_test_base.cc +++ b/chrome/browser/extensions/extension_service_test_base.cc
@@ -343,8 +343,7 @@ void ExtensionServiceTestBase::TearDown() { if (profile_) { - auto* partition = - content::BrowserContext::GetDefaultStoragePartition(profile_.get()); + auto* partition = profile_->GetDefaultStoragePartition(); if (partition) partition->WaitForDeletionTasksForTesting(); }
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index 98c0ed1c..6641655 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -5094,8 +5094,7 @@ // Open a database. storage::DatabaseTracker* db_tracker = - BrowserContext::GetDefaultStoragePartition(profile()) - ->GetDatabaseTracker(); + profile()->GetDefaultStoragePartition()->GetDatabaseTracker(); db_tracker->task_runner()->PostTask( FROM_HERE, base::BindOnce(&CreateDatabase, base::Unretained(db_tracker), origin_id)); @@ -5115,8 +5114,8 @@ // Create indexed db. Similarly, it is enough to only simulate this by // creating the directory on the disk, and resetting the caches of // "known" origins. - auto& idb_control = BrowserContext::GetDefaultStoragePartition(profile()) - ->GetIndexedDBControl(); + auto& idb_control = + profile()->GetDefaultStoragePartition()->GetIndexedDBControl(); mojo::Remote<storage::mojom::IndexedDBControlTest> idb_control_test; idb_control.BindTestInterface(idb_control_test.BindNewPipeAndPassReceiver()); @@ -5219,8 +5218,7 @@ origin2)); network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile()) - ->GetNetworkContext(); + profile()->GetDefaultStoragePartition()->GetNetworkContext(); mojo::Remote<network::mojom::CookieManager> cookie_manager_remote; network_context->GetCookieManager( cookie_manager_remote.BindNewPipeAndPassReceiver()); @@ -5254,8 +5252,7 @@ // Open a database. storage::DatabaseTracker* db_tracker = - BrowserContext::GetDefaultStoragePartition(profile()) - ->GetDatabaseTracker(); + profile()->GetDefaultStoragePartition()->GetDatabaseTracker(); db_tracker->task_runner()->PostTask( FROM_HERE, base::BindOnce(&CreateDatabase, base::Unretained(db_tracker), origin_id)); @@ -5275,8 +5272,8 @@ // Create indexed db. Similarly, it is enough to only simulate this by // creating the directory on the disk, and resetting the caches of // "known" origins. - auto& idb_control = BrowserContext::GetDefaultStoragePartition(profile()) - ->GetIndexedDBControl(); + auto& idb_control = + profile()->GetDefaultStoragePartition()->GetIndexedDBControl(); mojo::Remote<storage::mojom::IndexedDBControlTest> idb_control_test; idb_control.BindTestInterface(idb_control_test.BindNewPipeAndPassReceiver());
diff --git a/chrome/browser/extensions/external_install_error.cc b/chrome/browser/extensions/external_install_error.cc index 43f9b37..3ab3f08 100644 --- a/chrome/browser/extensions/external_install_error.cc +++ b/chrome/browser/extensions/external_install_error.cc
@@ -333,10 +333,9 @@ webstore_data_fetcher_ = std::make_unique<WebstoreDataFetcher>(this, GURL(), extension_id_); - webstore_data_fetcher_->Start( - content::BrowserContext::GetDefaultStoragePartition(browser_context_) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + webstore_data_fetcher_->Start(browser_context_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); } ExternalInstallError::~ExternalInstallError() {
diff --git a/chrome/browser/extensions/install_verifier.cc b/chrome/browser/extensions/install_verifier.cc index 017ada8..9d400be 100644 --- a/chrome/browser/extensions/install_verifier.cc +++ b/chrome/browser/extensions/install_verifier.cc
@@ -504,9 +504,8 @@ ids_to_sign.insert(operation.ids.begin(), operation.ids.end()); } - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context_) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); signer_ = std::make_unique<InstallSigner>(url_loader_factory, ids_to_sign); signer_->GetSignature(base::BindOnce(&InstallVerifier::SignatureCallback, weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/extensions/permission_messages_unittest.cc b/chrome/browser/extensions/permission_messages_unittest.cc index b4ef0e3..4018dc9 100644 --- a/chrome/browser/extensions/permission_messages_unittest.cc +++ b/chrome/browser/extensions/permission_messages_unittest.cc
@@ -260,8 +260,8 @@ TEST_F(USBDevicePermissionMessagesTest, SingleDevice) { { - const char kMessage[] = - "Access any PVR Mass Storage from HUMAX Co., Ltd. via USB"; + const char16_t kMessage[] = + u"Access any PVR Mass Storage from HUMAX Co., Ltd. via USB"; std::unique_ptr<base::ListValue> permission_list(new base::ListValue()); permission_list->Append( @@ -273,10 +273,10 @@ PermissionMessages messages = GetMessages(permission.GetPermissions()); ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + EXPECT_EQ(kMessage, messages.front().message()); } { - const char kMessage[] = "Access USB devices from HUMAX Co., Ltd."; + const char16_t kMessage[] = u"Access USB devices from HUMAX Co., Ltd."; std::unique_ptr<base::ListValue> permission_list(new base::ListValue()); permission_list->Append( @@ -288,10 +288,10 @@ PermissionMessages messages = GetMessages(permission.GetPermissions()); ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + EXPECT_EQ(kMessage, messages.front().message()); } { - const char kMessage[] = "Access USB devices from an unknown vendor"; + const char16_t kMessage[] = u"Access USB devices from an unknown vendor"; std::unique_ptr<base::ListValue> permission_list(new base::ListValue()); permission_list->Append( @@ -303,12 +303,12 @@ PermissionMessages messages = GetMessages(permission.GetPermissions()); ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + EXPECT_EQ(kMessage, messages.front().message()); } } TEST_F(USBDevicePermissionMessagesTest, MultipleDevice) { - const char kMessage[] = "Access any of these USB devices"; + const char16_t kMessage[] = u"Access any of these USB devices"; const char* kDetails[] = { "PVR Mass Storage from HUMAX Co., Ltd.", "unknown devices from HUMAX Co., Ltd.", @@ -338,7 +338,7 @@ PermissionMessages messages = GetMessages(permission.GetPermissions()); ASSERT_EQ(1U, messages.size()); - EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); + EXPECT_EQ(kMessage, messages.front().message()); const std::vector<std::u16string>& submessages = messages.front().submessages(); ASSERT_EQ(base::size(kDetails), submessages.size());
diff --git a/chrome/browser/extensions/service_worker_apitest.cc b/chrome/browser/extensions/service_worker_apitest.cc index 8efb4f0..043d37c2 100644 --- a/chrome/browser/extensions/service_worker_apitest.cc +++ b/chrome/browser/extensions/service_worker_apitest.cc
@@ -231,8 +231,9 @@ size_t GetWorkerRefCount(const url::Origin& origin) { content::ServiceWorkerContext* sw_context = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetServiceWorkerContext(); return sw_context->CountExternalRequestsForTest(origin); } @@ -1750,10 +1751,10 @@ // Stop the service worker. { base::RunLoop run_loop; - content::ServiceWorkerContext* context = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) - ->GetServiceWorkerContext(); + content::ServiceWorkerContext* context = browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetServiceWorkerContext(); // The service worker is registered at the root scope. content::StopServiceWorkerForScope(context, extension->url(), run_loop.QuitClosure()); @@ -2018,7 +2019,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBasedBackgroundTest, WorkerStartFailureClearsPendingTasks) { content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); content::ServiceWorkerContext* context = storage_partition->GetServiceWorkerContext(); @@ -2106,8 +2107,7 @@ // once //content API allows to override test timeouts for Service Workers. base::RunLoop run_loop; content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); GURL scope = extension->url(); content::StopServiceWorkerForScope( storage_partition->GetServiceWorkerContext(), @@ -2429,7 +2429,7 @@ const std::string& expected_message) : expected_message_(base::UTF8ToUTF16(expected_message)) { content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); scoped_observation_.Observe(partition->GetServiceWorkerContext()); } ~ConsoleMessageObserver() override = default;
diff --git a/chrome/browser/extensions/service_worker_messaging_apitest.cc b/chrome/browser/extensions/service_worker_messaging_apitest.cc index 3ab761ed..e5534d6 100644 --- a/chrome/browser/extensions/service_worker_messaging_apitest.cc +++ b/chrome/browser/extensions/service_worker_messaging_apitest.cc
@@ -81,8 +81,7 @@ // tests. void StopServiceWorker(const Extension& extension) { content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); content::ServiceWorkerContext* context = storage_partition->GetServiceWorkerContext(); base::RunLoop run_loop;
diff --git a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc index 23311b3..a7fb02e 100644 --- a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc +++ b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc
@@ -58,7 +58,7 @@ Profile* profile, ExtensionDownloaderDelegate* delegate) { std::unique_ptr<ExtensionDownloader> downloader = CreateForURLLoaderFactory( - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), delegate, extensions::GetPolicyVerifierFormat(), profile->GetPath());
diff --git a/chrome/browser/extensions/updater/chrome_update_client_config.cc b/chrome/browser/extensions/updater/chrome_update_client_config.cc index 217fd6f..cc268666 100644 --- a/chrome/browser/extensions/updater/chrome_update_client_config.cc +++ b/chrome/browser/extensions/updater/chrome_update_client_config.cc
@@ -210,7 +210,7 @@ if (!network_fetcher_factory_) { network_fetcher_factory_ = base::MakeRefCounted<update_client::NetworkFetcherChromiumFactory>( - content::BrowserContext::GetDefaultStoragePartition(context_) + context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), // Only extension updates that require authentication are served // from chrome.google.com, so send cookies if and only if that is
diff --git a/chrome/browser/extensions/webstore_standalone_installer.cc b/chrome/browser/extensions/webstore_standalone_installer.cc index 97f15692..7090196 100644 --- a/chrome/browser/extensions/webstore_standalone_installer.cc +++ b/chrome/browser/extensions/webstore_standalone_installer.cc
@@ -69,10 +69,9 @@ webstore_data_fetcher_ = std::make_unique<WebstoreDataFetcher>(this, GURL(), id_); - webstore_data_fetcher_->Start( - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + webstore_data_fetcher_->Start(profile_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); } // @@ -302,7 +301,7 @@ icon_url); // The helper will call us back via OnWebstoreParseSuccess() or // OnWebstoreParseFailure(). - helper->Start(content::BrowserContext::GetDefaultStoragePartition(profile_) + helper->Start(profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get()); }
diff --git a/chrome/browser/favicon/large_icon_service_factory.cc b/chrome/browser/favicon/large_icon_service_factory.cc index f76cc929..6e73cc4 100644 --- a/chrome/browser/favicon/large_icon_service_factory.cc +++ b/chrome/browser/favicon/large_icon_service_factory.cc
@@ -73,7 +73,7 @@ favicon_service, std::make_unique<image_fetcher::ImageFetcherImpl>( std::make_unique<ImageDecoderImpl>(), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()), kDipForServerRequests, kIconTypeForServerRequests, kGoogleServerClientParam);
diff --git a/chrome/browser/feature_engagement/tracker_factory.cc b/chrome/browser/feature_engagement/tracker_factory.cc index fdc9156e..1769f5b2 100644 --- a/chrome/browser/feature_engagement/tracker_factory.cc +++ b/chrome/browser/feature_engagement/tracker_factory.cc
@@ -52,8 +52,7 @@ chrome::kFeatureEngagementTrackerStorageDirname); leveldb_proto::ProtoDatabaseProvider* db_provider = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetProtoDatabaseProvider(); + profile->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); return feature_engagement::Tracker::Create( storage_dir, background_task_runner, db_provider); }
diff --git a/chrome/browser/federated_learning/floc_id_provider_browsertest.cc b/chrome/browser/federated_learning/floc_id_provider_browsertest.cc index fc6aaa60..4ee0d4ef 100644 --- a/chrome/browser/federated_learning/floc_id_provider_browsertest.cc +++ b/chrome/browser/federated_learning/floc_id_provider_browsertest.cc
@@ -432,7 +432,7 @@ auto remote_permission_service = std::make_unique<MockFlocRemotePermissionService>( - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); return std::move(remote_permission_service); }
diff --git a/chrome/browser/federated_learning/floc_remote_permission_service_factory.cc b/chrome/browser/federated_learning/floc_remote_permission_service_factory.cc index 1ac015d..5a7e68c 100644 --- a/chrome/browser/federated_learning/floc_remote_permission_service_factory.cc +++ b/chrome/browser/federated_learning/floc_remote_permission_service_factory.cc
@@ -30,7 +30,7 @@ Profile* profile = static_cast<Profile*>(context); return new federated_learning::FlocRemotePermissionService( - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedServiceBridge.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedServiceBridge.java index 1f5c056..ea30b4f 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedServiceBridge.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedServiceBridge.java
@@ -91,7 +91,6 @@ } } } - /** Called at startup to trigger creation of |FeedService|. */ public static void startup() { FeedServiceBridgeJni.get().startup(); @@ -127,6 +126,10 @@ return FeedServiceBridgeJni.get().getReliabilityLoggingId(); } + public static boolean isAutoplayEnabled() { + return FeedServiceBridgeJni.get().isAutoplayEnabled(); + } + /** Observes whether or not the Feed stream contains unread content */ public static class UnreadContentObserver { private long mNativePtr; @@ -165,6 +168,7 @@ int getVideoPreviewsTypePreference(); void setVideoPreviewsTypePreference(int videoPreviewsType); long getReliabilityLoggingId(); + boolean isAutoplayEnabled(); long addUnreadContentObserver(Object object, boolean isWebFeed); @NativeClassQualifiedName("feed::JavaUnreadContentObserver") void destroy(long nativePtr);
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java index b9391272..74fe44d 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/followmanagement/FollowManagementMediator.java
@@ -177,11 +177,19 @@ mWebFeedBridge = new WebFeedBridge(); mLargeIconBridge = largeIconBridge; - mWebFeedBridge.getAllFollowedWebFeeds(this::followedWebFeedsCallback); + // Control flow is to refresh the feeds, then get the feed list, then display it. + // TODO(https://.crbug.com/1197286) Add a spinner while waiting for results. + mWebFeedBridge.refreshFollowedWebFeeds(this::getFollowedWebFeeds); + } + + // Once the list of feeds has been refreshed, get the list. + private void getFollowedWebFeeds(boolean success) { + // TODO(https://.crbug.com/1197286) If this fails, show a snackbar with a failure message. + mWebFeedBridge.getAllFollowedWebFeeds(this::fillRecyclerView); } // When we get the list of followed pages, add them to the recycler view. - private void followedWebFeedsCallback(List<WebFeedMetadata> followedWebFeeds) { + private void fillRecyclerView(List<WebFeedMetadata> followedWebFeeds) { for (WebFeedMetadata page : followedWebFeeds) { String title = page.title; GURL url = page.visitUrl;
diff --git a/chrome/browser/feedback/feedback_uploader_chrome.cc b/chrome/browser/feedback/feedback_uploader_chrome.cc index 2d7db98..d5052b3 100644 --- a/chrome/browser/feedback/feedback_uploader_chrome.cc +++ b/chrome/browser/feedback/feedback_uploader_chrome.cc
@@ -51,7 +51,7 @@ // be expensive, this is delayed so that it does not happen during startup. scoped_refptr<network::SharedURLLoaderFactory> CreateURLLoaderFactoryForBrowserContext(content::BrowserContext* context) { - return content::BrowserContext::GetDefaultStoragePartition(context) + return context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); }
diff --git a/chrome/browser/file_select_helper.cc b/chrome/browser/file_select_helper.cc index fd7779b..22ef6e4 100644 --- a/chrome/browser/file_select_helper.cc +++ b/chrome/browser/file_select_helper.cc
@@ -308,8 +308,7 @@ content::SiteInstance* site_instance = render_frame_host_->GetSiteInstance(); storage::FileSystemContext* file_system_context = - content::BrowserContext::GetStoragePartition(profile_, site_instance) - ->GetFileSystemContext(); + profile_->GetStoragePartition(site_instance)->GetFileSystemContext(); file_manager::util::ConvertSelectedFileInfoListToFileChooserFileInfoList( file_system_context, site_instance->GetSiteURL(), files, base::BindOnce(&FileSelectHelper::PerformContentAnalysisIfNeeded,
diff --git a/chrome/browser/gcm/gcm_profile_service_factory.cc b/chrome/browser/gcm/gcm_profile_service_factory.cc index 6c3ff03..3733a01 100644 --- a/chrome/browser/gcm/gcm_profile_service_factory.cc +++ b/chrome/browser/gcm/gcm_profile_service_factory.cc
@@ -56,8 +56,7 @@ if (!service) return; network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + profile->GetDefaultStoragePartition()->GetNetworkContext(); network_context->CreateProxyResolvingSocketFactory(std::move(receiver)); } @@ -144,7 +143,7 @@ service = std::make_unique<GCMProfileService>( profile->GetPrefs(), profile->GetPath(), base::BindRepeating(&RequestProxyResolvingSocketFactory, profile), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), content::GetNetworkConnectionTracker(), chrome::GetChannel(), gcm::GetProductCategoryForSubtypes(profile->GetPrefs()),
diff --git a/chrome/browser/gcm/gcm_profile_service_unittest.cc b/chrome/browser/gcm/gcm_profile_service_unittest.cc index c36c4d6b..17e5b44 100644 --- a/chrome/browser/gcm/gcm_profile_service_unittest.cc +++ b/chrome/browser/gcm/gcm_profile_service_unittest.cc
@@ -57,7 +57,7 @@ receiver) { if (!service) return; - return content::BrowserContext::GetDefaultStoragePartition(profile) + return profile->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateProxyResolvingSocketFactory(std::move(receiver)); } @@ -81,7 +81,7 @@ return std::make_unique<gcm::GCMProfileService>( profile->GetPrefs(), profile->GetPath(), base::BindRepeating(&RequestProxyResolvingSocketFactory, profile), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), network::TestNetworkConnectionTracker::GetInstance(), chrome::GetChannel(),
diff --git a/chrome/browser/history/web_history_service_factory.cc b/chrome/browser/history/web_history_service_factory.cc index 6df83a8..7be06f2 100644 --- a/chrome/browser/history/web_history_service_factory.cc +++ b/chrome/browser/history/web_history_service_factory.cc
@@ -48,7 +48,7 @@ return new history::WebHistoryService( IdentityManagerFactory::GetForProfile(profile), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/history_clusters/memories_service_factory.cc b/chrome/browser/history_clusters/memories_service_factory.cc index 6b02f7e..af36626 100644 --- a/chrome/browser/history_clusters/memories_service_factory.cc +++ b/chrome/browser/history_clusters/memories_service_factory.cc
@@ -38,9 +38,8 @@ auto* profile = Profile::FromBrowserContext(context); auto* history_service = HistoryServiceFactory::GetForProfile( profile, ServiceAccessType::EXPLICIT_ACCESS); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new history_clusters::MemoriesService(history_service, url_loader_factory); }
diff --git a/chrome/browser/image_fetcher/image_fetcher_impl_browsertest.cc b/chrome/browser/image_fetcher/image_fetcher_impl_browsertest.cc index 20ac3e3..9391a584 100644 --- a/chrome/browser/image_fetcher/image_fetcher_impl_browsertest.cc +++ b/chrome/browser/image_fetcher/image_fetcher_impl_browsertest.cc
@@ -48,11 +48,12 @@ } ImageFetcher* CreateImageFetcher() { - ImageFetcher* fetcher = new ImageFetcherImpl( - std::make_unique<ImageDecoderImpl>(), - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) - ->GetURLLoaderFactoryForBrowserProcess()); + ImageFetcher* fetcher = + new ImageFetcherImpl(std::make_unique<ImageDecoderImpl>(), + browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()); return fetcher; }
diff --git a/chrome/browser/infobars/mock_infobar_service.cc b/chrome/browser/infobars/mock_infobar_service.cc deleted file mode 100644 index 2319395..0000000 --- a/chrome/browser/infobars/mock_infobar_service.cc +++ /dev/null
@@ -1,27 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/infobars/mock_infobar_service.h" - -#include "base/memory/ptr_util.h" -#include "components/infobars/core/confirm_infobar_delegate.h" -#include "components/infobars/core/infobar.h" - -// static -void MockInfoBarService::CreateForWebContents( - content::WebContents* web_contents) { - DCHECK(web_contents); - const void* user_data_key = UserDataKey(); - DCHECK(!web_contents->GetUserData(user_data_key)); - web_contents->SetUserData( - user_data_key, base::WrapUnique(new MockInfoBarService(web_contents))); -} - -std::unique_ptr<infobars::InfoBar> MockInfoBarService::CreateConfirmInfoBar( - std::unique_ptr<ConfirmInfoBarDelegate> delegate) { - return std::make_unique<infobars::InfoBar>(std::move(delegate)); -} - -MockInfoBarService::MockInfoBarService(content::WebContents* web_contents) - : InfoBarService(web_contents) {}
diff --git a/chrome/browser/infobars/mock_infobar_service.h b/chrome/browser/infobars/mock_infobar_service.h deleted file mode 100644 index c51e7ec..0000000 --- a/chrome/browser/infobars/mock_infobar_service.h +++ /dev/null
@@ -1,27 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_INFOBARS_MOCK_INFOBAR_SERVICE_H_ -#define CHROME_BROWSER_INFOBARS_MOCK_INFOBAR_SERVICE_H_ - -#include "chrome/browser/infobars/infobar_service.h" - -// A mock infobar service that creates do-nothing infobar objects. This should -// be used in tests that need to verify that infobars are created, but are not -// trying to verify the visual appearance/platform-specific behavior of -// infobars. -class MockInfoBarService : public InfoBarService { - public: - // Creates a MockInfoBarService and attaches it as the InfoBarService for - // |web_contents|. - static void CreateForWebContents(content::WebContents* web_contents); - - std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar( - std::unique_ptr<ConfirmInfoBarDelegate> delegate) override; - - private: - explicit MockInfoBarService(content::WebContents* web_contents); -}; - -#endif // CHROME_BROWSER_INFOBARS_MOCK_INFOBAR_SERVICE_H_
diff --git a/chrome/browser/invalidation/profile_invalidation_provider_factory.cc b/chrome/browser/invalidation/profile_invalidation_provider_factory.cc index b85f0f9..f9f31048 100644 --- a/chrome/browser/invalidation/profile_invalidation_provider_factory.cc +++ b/chrome/browser/invalidation/profile_invalidation_provider_factory.cc
@@ -58,9 +58,8 @@ base::BindRepeating( &PerUserTopicSubscriptionManager::Create, identity_provider, profile->GetPrefs(), - base::RetainedRef( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess())), + base::RetainedRef(profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess())), instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile) ->driver(), profile->GetPrefs(), sender_id);
diff --git a/chrome/browser/metrics/chrome_metrics_service_accessor.h b/chrome/browser/metrics/chrome_metrics_service_accessor.h index d9c90c3..b7dff6c 100644 --- a/chrome/browser/metrics/chrome_metrics_service_accessor.h +++ b/chrome/browser/metrics/chrome_metrics_service_accessor.h
@@ -75,6 +75,7 @@ } namespace feed { +class FeedServiceBridge; class FeedServiceDelegateImpl; } // namespace feed @@ -132,6 +133,7 @@ friend class WebUITabStripFieldTrial; friend class feed::FeedServiceDelegateImpl; friend class browser_sync::DeviceInfoSyncClientImpl; + friend class feed::FeedServiceBridge; #if BUILDFLAG(IS_CHROMEOS_ASH) friend class ChromeCameraAppUIDelegate;
diff --git a/chrome/browser/metrics/variations/variations_http_headers_browsertest.cc b/chrome/browser/metrics/variations/variations_http_headers_browsertest.cc index 91f5353..83bc1ad9 100644 --- a/chrome/browser/metrics/variations/variations_http_headers_browsertest.cc +++ b/chrome/browser/metrics/variations/variations_http_headers_browsertest.cc
@@ -693,7 +693,7 @@ TRAFFIC_ANNOTATION_FOR_TESTS); content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); network::SharedURLLoaderFactory* loader_factory = partition->GetURLLoaderFactoryForBrowserProcess().get(); content::SimpleURLLoaderTestHelper loader_helper;
diff --git a/chrome/browser/nearby_sharing/nearby_share_metrics_logger.cc b/chrome/browser/nearby_sharing/nearby_share_metrics_logger.cc index a9ade527..65b6b0d 100644 --- a/chrome/browser/nearby_sharing/nearby_share_metrics_logger.cc +++ b/chrome/browser/nearby_sharing/nearby_share_metrics_logger.cc
@@ -400,6 +400,12 @@ } base::UmaHistogramEnumeration( "Nearby.Share.Connection.EstablishOutgoingConnectionStatus", status); + + // Log a high-level success/failure metric, ignoring cancellations. + if (!cancelled) { + base::UmaHistogramBoolean( + "Nearby.Share.Connection.EstablishOutgoingConnection.Success", success); + } } void RecordNearbyShareTimeFromInitiateSendToRemoteDeviceNotificationMetric( @@ -562,12 +568,38 @@ base::UmaHistogramEnumeration("Nearby.Share.DeviceType" + send_or_receive, type); - TransferFinalStatus final_status = - TransferMetadataStatusToTransferFinalStatus(status); + // Log the detailed transfer final status enum. + { + TransferFinalStatus final_status = + TransferMetadataStatusToTransferFinalStatus(status); + const std::string prefix = "Nearby.Share.Transfer.FinalStatus"; + base::UmaHistogramEnumeration(prefix, final_status); + base::UmaHistogramEnumeration(prefix + send_or_receive, final_status); + base::UmaHistogramEnumeration(prefix + share_target_type, final_status); + base::UmaHistogramEnumeration(prefix + contact_or_not, final_status); + } - const std::string prefix = "Nearby.Share.Transfer.FinalStatus"; - base::UmaHistogramEnumeration(prefix, final_status); - base::UmaHistogramEnumeration(prefix + send_or_receive, final_status); - base::UmaHistogramEnumeration(prefix + share_target_type, final_status); - base::UmaHistogramEnumeration(prefix + contact_or_not, final_status); + // Log the transfer success/failure for high-level success and Critical User + // Journey (CUJ) metrics. + { + base::Optional<bool> success; + switch (TransferMetadata::ToResult(status)) { + case TransferMetadata::Result::kSuccess: + success = true; + break; + case TransferMetadata::Result::kFailure: + success = false; + break; + case TransferMetadata::Result::kIndeterminate: + success.reset(); + break; + } + if (success.has_value()) { + const std::string prefix = "Nearby.Share.Transfer.Success"; + base::UmaHistogramBoolean(prefix, *success); + base::UmaHistogramBoolean( + prefix + send_or_receive + share_target_type + contact_or_not, + *success); + } + } }
diff --git a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc index c73a6e259..9c43b92 100644 --- a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc +++ b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
@@ -285,8 +285,7 @@ local_device_data_manager_.get(), contact_manager_.get(), prefs, - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetProtoDatabaseProvider(), + profile->GetDefaultStoragePartition()->GetProtoDatabaseProvider(), profile->GetPath(), http_client_factory_.get())), settings_(prefs, local_device_data_manager_.get()),
diff --git a/chrome/browser/nearby_sharing/transfer_metadata.cc b/chrome/browser/nearby_sharing/transfer_metadata.cc index 53a4c8b..1eaf4c0 100644 --- a/chrome/browser/nearby_sharing/transfer_metadata.cc +++ b/chrome/browser/nearby_sharing/transfer_metadata.cc
@@ -44,6 +44,43 @@ } // static +TransferMetadata::Result TransferMetadata::ToResult(Status status) { + switch (status) { + case Status::kComplete: + return Result::kSuccess; + case Status::kUnknown: + case Status::kAwaitingRemoteAcceptanceFailed: + case Status::kFailed: + case Status::kDecodeAdvertisementFailed: + case Status::kMissingTransferUpdateCallback: + case Status::kMissingShareTarget: + case Status::kMissingEndpointId: + case Status::kMissingPayloads: + case Status::kPairedKeyVerificationFailed: + case Status::kInvalidIntroductionFrame: + case Status::kIncompletePayloads: + case Status::kFailedToCreateShareTarget: + case Status::kFailedToInitiateOutgoingConnection: + case Status::kFailedToReadOutgoingConnectionResponse: + case Status::kUnexpectedDisconnection: + return Result::kFailure; + case Status::kConnecting: + case Status::kAwaitingLocalConfirmation: + case Status::kAwaitingRemoteAcceptance: + case Status::kInProgress: + case Status::kRejected: + case Status::kCancelled: + case Status::kTimedOut: + case Status::kMediaUnavailable: + case Status::kMediaDownloading: + case Status::kNotEnoughSpace: + case Status::kUnsupportedAttachmentType: + case Status::kExternalProviderLaunched: + return Result::kIndeterminate; + } +} + +// static std::string TransferMetadata::StatusToString(Status status) { switch (status) { case Status::kConnecting:
diff --git a/chrome/browser/nearby_sharing/transfer_metadata.h b/chrome/browser/nearby_sharing/transfer_metadata.h index 43a2c89a..cbad074d 100644 --- a/chrome/browser/nearby_sharing/transfer_metadata.h +++ b/chrome/browser/nearby_sharing/transfer_metadata.h
@@ -48,8 +48,17 @@ kMaxValue = kUnexpectedDisconnection }; + enum class Result { + kIndeterminate, + kSuccess, + kFailure, + kMaxValue = kFailure + }; + static bool IsFinalStatus(Status status); + static Result ToResult(Status status); + static std::string StatusToString(TransferMetadata::Status status); static nearby_share::mojom::TransferStatus StatusToMojo(Status status);
diff --git a/chrome/browser/net/chrome_network_service_restart_browsertest.cc b/chrome/browser/net/chrome_network_service_restart_browsertest.cc index 0c8f1bc..7726afe 100644 --- a/chrome/browser/net/chrome_network_service_restart_browsertest.cc +++ b/chrome/browser/net/chrome_network_service_restart_browsertest.cc
@@ -45,7 +45,7 @@ // |NetworkServiceTestHelper| doesn't work on browser_tests on macOS. #if !defined(OS_MAC) StoragePartition* partition = - BrowserContext::GetDefaultStoragePartition(browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); network::mojom::NetworkContext* old_network_context = partition->GetNetworkContext();
diff --git a/chrome/browser/net/dns_probe_service_factory.cc b/chrome/browser/net/dns_probe_service_factory.cc index e369edf2..8c0d6e06 100644 --- a/chrome/browser/net/dns_probe_service_factory.cc +++ b/chrome/browser/net/dns_probe_service_factory.cc
@@ -60,8 +60,7 @@ network::mojom::NetworkContext* GetNetworkContextForProfile( content::BrowserContext* context) { - return content::BrowserContext::GetDefaultStoragePartition(context) - ->GetNetworkContext(); + return context->GetDefaultStoragePartition()->GetNetworkContext(); } mojo::Remote<network::mojom::DnsConfigChangeManager>
diff --git a/chrome/browser/net/explicitly_allowed_network_ports_browsertest.cc b/chrome/browser/net/explicitly_allowed_network_ports_browsertest.cc index 43b7d327..e8ed9fc 100644 --- a/chrome/browser/net/explicitly_allowed_network_ports_browsertest.cc +++ b/chrome/browser/net/explicitly_allowed_network_ports_browsertest.cc
@@ -31,8 +31,9 @@ ExplicitlyAllowedNetworkPortsBrowserTest() : scoped_allowable_port_(79) {} network::mojom::NetworkContext* network_context() { - return content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + return browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext(); }
diff --git a/chrome/browser/net/explicitly_allowed_ports_switch_browsertest.cc b/chrome/browser/net/explicitly_allowed_ports_switch_browsertest.cc index aede1d55..443cf31 100644 --- a/chrome/browser/net/explicitly_allowed_ports_switch_browsertest.cc +++ b/chrome/browser/net/explicitly_allowed_ports_switch_browsertest.cc
@@ -18,8 +18,9 @@ class ExplicitlyAllowedPortsSwitchBrowserTest : public InProcessBrowserTest { protected: network::mojom::NetworkContext* network_context() { - return content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + return browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext(); } };
diff --git a/chrome/browser/net/network_context_configuration_browsertest.cc b/chrome/browser/net/network_context_configuration_browsertest.cc index 1270718..1139379 100644 --- a/chrome/browser/net/network_context_configuration_browsertest.cc +++ b/chrome/browser/net/network_context_configuration_browsertest.cc
@@ -324,18 +324,14 @@ NOTREACHED() << "Network context has no storage partition"; return nullptr; case NetworkContextType::kProfile: - return content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + return browser()->profile()->GetDefaultStoragePartition(); case NetworkContextType::kIncognitoProfile: DCHECK(incognito_); - return content::BrowserContext::GetDefaultStoragePartition( - incognito_->profile()); + return incognito_->profile()->GetDefaultStoragePartition(); case NetworkContextType::kOnDiskApp: - return content::BrowserContext::GetStoragePartition( - browser()->profile(), kOnDiskConfig); + return browser()->profile()->GetStoragePartition(kOnDiskConfig); case NetworkContextType::kInMemoryApp: - return content::BrowserContext::GetStoragePartition( - browser()->profile(), kInMemoryConfig); + return browser()->profile()->GetStoragePartition(kInMemoryConfig); case NetworkContextType::kOnDiskAppWithIncognitoProfile: { DCHECK(incognito_); // Note: Even though we are requesting an on-disk config, the function @@ -346,8 +342,7 @@ /*in_memory=*/false); DCHECK(kIncognitoConfig.in_memory()); - return content::BrowserContext::GetStoragePartition( - incognito_->profile(), kIncognitoConfig); + return incognito_->profile()->GetStoragePartition(kIncognitoConfig); } } NOTREACHED();
diff --git a/chrome/browser/net/network_quality_estimator_prefs_browsertest.cc b/chrome/browser/net/network_quality_estimator_prefs_browsertest.cc index 823e2d0..5d4bd8a 100644 --- a/chrome/browser/net/network_quality_estimator_prefs_browsertest.cc +++ b/chrome/browser/net/network_quality_estimator_prefs_browsertest.cc
@@ -154,8 +154,7 @@ mojo::ScopedAllowSyncCallForTesting allow_sync_call; content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); DCHECK(partition->GetNetworkContext()); DCHECK(content::GetNetworkService());
diff --git a/chrome/browser/net/network_quality_tracker_browsertest.cc b/chrome/browser/net/network_quality_tracker_browsertest.cc index 03e4cf4e..60eb382 100644 --- a/chrome/browser/net/network_quality_tracker_browsertest.cc +++ b/chrome/browser/net/network_quality_tracker_browsertest.cc
@@ -134,8 +134,7 @@ mojo::ScopedAllowSyncCallForTesting allow_sync_call; content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); DCHECK(partition->GetNetworkContext()); DCHECK(content::GetNetworkService()); @@ -259,7 +258,9 @@ SimulateNetworkServiceCrash(); // Flush the network interface to make sure it notices the crash. - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); base::RunLoop().RunUntilIdle();
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc index 4bea404..ca6d76c 100644 --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc
@@ -179,28 +179,26 @@ ContentSettingsForOneType settings; HostContentSettingsMapFactory::GetForProfile(profile)->GetSettingsForOneType( ContentSettingsType::COOKIES, &settings); - content::BrowserContext::ForEachStoragePartition( - profile, base::BindRepeating( - [](ContentSettingsForOneType settings, - content::StoragePartition* storage_partition) { - storage_partition->GetCookieManagerForBrowserProcess() - ->SetContentSettings(settings); - }, - settings)); + profile->ForEachStoragePartition(base::BindRepeating( + [](ContentSettingsForOneType settings, + content::StoragePartition* storage_partition) { + storage_partition->GetCookieManagerForBrowserProcess() + ->SetContentSettings(settings); + }, + settings)); } void UpdateLegacyCookieSettings(Profile* profile) { ContentSettingsForOneType settings; HostContentSettingsMapFactory::GetForProfile(profile)->GetSettingsForOneType( ContentSettingsType::LEGACY_COOKIE_ACCESS, &settings); - content::BrowserContext::ForEachStoragePartition( - profile, base::BindRepeating( - [](ContentSettingsForOneType settings, - content::StoragePartition* storage_partition) { - storage_partition->GetCookieManagerForBrowserProcess() - ->SetContentSettingsForLegacyCookieAccess(settings); - }, - settings)); + profile->ForEachStoragePartition(base::BindRepeating( + [](ContentSettingsForOneType settings, + content::StoragePartition* storage_partition) { + storage_partition->GetCookieManagerForBrowserProcess() + ->SetContentSettingsForLegacyCookieAccess(settings); + }, + settings)); } void UpdateStorageAccessSettings(Profile* profile) { @@ -209,15 +207,13 @@ HostContentSettingsMapFactory::GetForProfile(profile) ->GetSettingsForOneType(ContentSettingsType::STORAGE_ACCESS, &settings); - content::BrowserContext::ForEachStoragePartition( - profile, base::BindRepeating( - [](ContentSettingsForOneType settings, - content::StoragePartition* storage_partition) { - storage_partition->GetCookieManagerForBrowserProcess() - ->SetStorageAccessGrantSettings(settings, - base::DoNothing()); - }, - settings)); + profile->ForEachStoragePartition(base::BindRepeating( + [](ContentSettingsForOneType settings, + content::StoragePartition* storage_partition) { + storage_partition->GetCookieManagerForBrowserProcess() + ->SetStorageAccessGrantSettings(settings, base::DoNothing()); + }, + settings)); } } @@ -309,17 +305,15 @@ policy::PolicyCertServiceFactory::GetForProfile(profile_); if (!policy_cert_service) return; - content::BrowserContext::ForEachStoragePartition( - profile_, base::BindRepeating( - [](const policy::PolicyCertService* policy_cert_service, - content::StoragePartition* storage_partition) { - auto additional_certificates = GetAdditionalCertificates( - policy_cert_service, storage_partition->GetPath()); - storage_partition->GetNetworkContext() - ->UpdateAdditionalCertificates( - std::move(additional_certificates)); - }, - policy_cert_service)); + profile_->ForEachStoragePartition(base::BindRepeating( + [](const policy::PolicyCertService* policy_cert_service, + content::StoragePartition* storage_partition) { + auto additional_certificates = GetAdditionalCertificates( + policy_cert_service, storage_partition->GetPath()); + storage_partition->GetNetworkContext()->UpdateAdditionalCertificates( + std::move(additional_certificates)); + }, + policy_cert_service)); } #endif @@ -358,26 +352,24 @@ } void ProfileNetworkContextService::UpdateAcceptLanguage() { - content::BrowserContext::ForEachStoragePartition( - profile_, base::BindRepeating( - [](const std::string& accept_language, - content::StoragePartition* storage_partition) { - storage_partition->GetNetworkContext()->SetAcceptLanguage( - accept_language); - }, - ComputeAcceptLanguage())); + profile_->ForEachStoragePartition(base::BindRepeating( + [](const std::string& accept_language, + content::StoragePartition* storage_partition) { + storage_partition->GetNetworkContext()->SetAcceptLanguage( + accept_language); + }, + ComputeAcceptLanguage())); } void ProfileNetworkContextService::OnThirdPartyCookieBlockingChanged( bool block_third_party_cookies) { - content::BrowserContext::ForEachStoragePartition( - profile_, base::BindRepeating( - [](bool block_third_party_cookies, - content::StoragePartition* storage_partition) { - storage_partition->GetCookieManagerForBrowserProcess() - ->BlockThirdPartyCookies(block_third_party_cookies); - }, - block_third_party_cookies)); + profile_->ForEachStoragePartition(base::BindRepeating( + [](bool block_third_party_cookies, + content::StoragePartition* storage_partition) { + storage_partition->GetCookieManagerForBrowserProcess() + ->BlockThirdPartyCookies(block_third_party_cookies); + }, + block_third_party_cookies)); } std::string ProfileNetworkContextService::ComputeAcceptLanguage() const { @@ -390,15 +382,12 @@ } void ProfileNetworkContextService::UpdateReferrersEnabled() { - content::BrowserContext::ForEachStoragePartition( - profile_, - base::BindRepeating( - [](bool enable_referrers, - content::StoragePartition* storage_partition) { - storage_partition->GetNetworkContext()->SetEnableReferrers( - enable_referrers); - }, - enable_referrers_.GetValue())); + profile_->ForEachStoragePartition(base::BindRepeating( + [](bool enable_referrers, content::StoragePartition* storage_partition) { + storage_partition->GetNetworkContext()->SetEnableReferrers( + enable_referrers); + }, + enable_referrers_.GetValue())); } network::mojom::CTPolicyPtr ProfileNetworkContextService::GetCTPolicy() { @@ -433,14 +422,12 @@ void ProfileNetworkContextService::UpdateCTPolicy() { std::vector<network::mojom::NetworkContext*> contexts; - content::BrowserContext::ForEachStoragePartition( - profile_, - base::BindRepeating( - [](std::vector<network::mojom::NetworkContext*>* contexts_ptr, - content::StoragePartition* storage_partition) { - contexts_ptr->push_back(storage_partition->GetNetworkContext()); - }, - &contexts)); + profile_->ForEachStoragePartition(base::BindRepeating( + [](std::vector<network::mojom::NetworkContext*>* contexts_ptr, + content::StoragePartition* storage_partition) { + contexts_ptr->push_back(storage_partition->GetNetworkContext()); + }, + &contexts)); UpdateCTPolicyForContexts(contexts); } @@ -464,15 +451,14 @@ bool split_auth_cache_by_network_isolation_key = ShouldSplitAuthCacheByNetworkIsolationKey(); - content::BrowserContext::ForEachStoragePartition( - profile_, base::BindRepeating( - [](bool split_auth_cache_by_network_isolation_key, - content::StoragePartition* storage_partition) { - storage_partition->GetNetworkContext() - ->SetSplitAuthCacheByNetworkIsolationKey( - split_auth_cache_by_network_isolation_key); - }, - split_auth_cache_by_network_isolation_key)); + profile_->ForEachStoragePartition(base::BindRepeating( + [](bool split_auth_cache_by_network_isolation_key, + content::StoragePartition* storage_partition) { + storage_partition->GetNetworkContext() + ->SetSplitAuthCacheByNetworkIsolationKey( + split_auth_cache_by_network_isolation_key); + }, + split_auth_cache_by_network_isolation_key)); } // static
diff --git a/chrome/browser/net/profile_network_context_service_browsertest.cc b/chrome/browser/net/profile_network_context_service_browsertest.cc index e5ca1d9c..465a09f 100644 --- a/chrome/browser/net/profile_network_context_service_browsertest.cc +++ b/chrome/browser/net/profile_network_context_service_browsertest.cc
@@ -83,8 +83,9 @@ void SetUpOnMainThread() override { EXPECT_TRUE(embedded_test_server()->Start()); - loader_factory_ = content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + loader_factory_ = browser() + ->profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); } @@ -570,8 +571,7 @@ ProfileNetworkContextServiceCertVerifierBuiltinPermissionsPolicyTest, Test) { { - content::BrowserContext::GetDefaultStoragePartition(CreateNewProfile()) - ->GetNetworkContext(); + CreateNewProfile()->GetDefaultStoragePartition()->GetNetworkContext(); ExpectUseBuiltinCertVerifierCorrect( use_builtin_cert_verifier() @@ -590,8 +590,7 @@ UpdateProviderPolicy(policies); { - content::BrowserContext::GetDefaultStoragePartition(CreateNewProfile()) - ->GetNetworkContext(); + CreateNewProfile()->GetDefaultStoragePartition()->GetNetworkContext(); ExpectUseBuiltinCertVerifierCorrect( cert_verifier::mojom::CertVerifierCreationParams::CertVerifierImpl:: @@ -603,8 +602,7 @@ UpdateProviderPolicy(policies); { - content::BrowserContext::GetDefaultStoragePartition(CreateNewProfile()) - ->GetNetworkContext(); + CreateNewProfile()->GetDefaultStoragePartition()->GetNetworkContext(); ExpectUseBuiltinCertVerifierCorrect( cert_verifier::mojom::CertVerifierCreationParams::CertVerifierImpl::
diff --git a/chrome/browser/net/proxy_browsertest.cc b/chrome/browser/net/proxy_browsertest.cc index 21ec08bc..e59b05ea 100644 --- a/chrome/browser/net/proxy_browsertest.cc +++ b/chrome/browser/net/proxy_browsertest.cc
@@ -285,8 +285,7 @@ auto simple_loader = network::SimpleURLLoader::Create( std::move(resource_request), TRAFFIC_ANNOTATION_FOR_TESTS); - auto* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()); + auto* storage_partition = browser()->profile()->GetDefaultStoragePartition(); auto url_loader_factory = storage_partition->GetURLLoaderFactoryForBrowserProcess(); simple_loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
diff --git a/chrome/browser/notifications/notification_trigger_scheduler.cc b/chrome/browser/notifications/notification_trigger_scheduler.cc index cc5aa76..521c24d9 100644 --- a/chrome/browser/notifications/notification_trigger_scheduler.cc +++ b/chrome/browser/notifications/notification_trigger_scheduler.cc
@@ -46,12 +46,9 @@ // Unretained is safe here because BrowserContext::ForEachStoragePartition is // synchronous and the profile just got fetched via GetLoadedProfiles. - BrowserContext::ForEachStoragePartition( - profile, - base::BindRepeating( - &NotificationTriggerScheduler:: - TriggerNotificationsForStoragePartition, - base::Unretained(service->GetNotificationTriggerScheduler()))); + profile->ForEachStoragePartition(base::BindRepeating( + &NotificationTriggerScheduler::TriggerNotificationsForStoragePartition, + base::Unretained(service->GetNotificationTriggerScheduler()))); } } // namespace
diff --git a/chrome/browser/notifications/notification_trigger_scheduler_unittest.cc b/chrome/browser/notifications/notification_trigger_scheduler_unittest.cc index 8661655..2e1c79a 100644 --- a/chrome/browser/notifications/notification_trigger_scheduler_unittest.cc +++ b/chrome/browser/notifications/notification_trigger_scheduler_unittest.cc
@@ -74,10 +74,10 @@ EXPECT_CALL(*data2.scheduler_, TriggerNotificationsForStoragePartition(_)) .Times(0); - auto* partition1 = content::BrowserContext::GetStoragePartitionForUrl( - data1.profile_, GURL("http://example.com")); - auto* partition2 = content::BrowserContext::GetStoragePartitionForUrl( - data2.profile_, GURL("http://example.com")); + auto* partition1 = + data1.profile_->GetStoragePartitionForUrl(GURL("http://example.com")); + auto* partition2 = + data2.profile_->GetStoragePartitionForUrl(GURL("http://example.com")); auto now = base::Time::Now(); auto delta = base::TimeDelta::FromSeconds(3);
diff --git a/chrome/browser/notifications/platform_notification_service_impl.cc b/chrome/browser/notifications/platform_notification_service_impl.cc index 98e07fb3..e85e015 100644 --- a/chrome/browser/notifications/platform_notification_service_impl.cc +++ b/chrome/browser/notifications/platform_notification_service_impl.cc
@@ -173,8 +173,7 @@ return; auto recorder = base::MakeRefCounted<RevokeDeleteCountRecorder>(); - content::BrowserContext::ForEachStoragePartition( - profile_, + profile_->ForEachStoragePartition( base::BindRepeating( [](scoped_refptr<RevokeDeleteCountRecorder> recorder, content::StoragePartition* partition) {
diff --git a/chrome/browser/notifications/scheduler/notification_schedule_service_browsertest.cc b/chrome/browser/notifications/scheduler/notification_schedule_service_browsertest.cc index ed6e8ab4..8c9630a 100644 --- a/chrome/browser/notifications/scheduler/notification_schedule_service_browsertest.cc +++ b/chrome/browser/notifications/scheduler/notification_schedule_service_browsertest.cc
@@ -156,8 +156,7 @@ std::make_unique<TestBackgroundTaskScheduler>(); task_scheduler_ = background_task_scheduler.get(); auto* db_provider = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetProtoDatabaseProvider(); + profile->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); service_ = CreateNotificationScheduleService( std::move(client_registrar), std::move(background_task_scheduler), std::move(display_agent), db_provider,
diff --git a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc index 8348dfb..6eb8e46 100644 --- a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc +++ b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc
@@ -142,7 +142,7 @@ LargeIconServiceFactory::GetForBrowserContext(profile), std::make_unique<image_fetcher::ImageFetcherImpl>( std::make_unique<ImageDecoderImpl>(), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess())), #if BUILDFLAG(ENABLE_SUPERVISED_USERS) std::make_unique<SupervisorBridge>(profile)
diff --git a/chrome/browser/ntp_tiles/chrome_popular_sites_factory.cc b/chrome/browser/ntp_tiles/chrome_popular_sites_factory.cc index 168a3be..4deb82f 100644 --- a/chrome/browser/ntp_tiles/chrome_popular_sites_factory.cc +++ b/chrome/browser/ntp_tiles/chrome_popular_sites_factory.cc
@@ -18,6 +18,6 @@ return std::make_unique<ntp_tiles::PopularSitesImpl>( profile->GetPrefs(), TemplateURLServiceFactory::GetForProfile(profile), g_browser_process->variations_service(), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc index e702e48..3af7f811 100644 --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc
@@ -141,8 +141,8 @@ // Regardless of whether the profile is off the record or not, we initialize // the Optimization Guide with the database associated with the original // profile. - auto* proto_db_provider = content::BrowserContext::GetDefaultStoragePartition( - profile->GetOriginalProfile()) + auto* proto_db_provider = profile->GetOriginalProfile() + ->GetDefaultStoragePartition() ->GetProtoDatabaseProvider(); base::FilePath profile_path = profile->GetOriginalProfile()->GetPath(); @@ -162,9 +162,8 @@ prediction_model_and_features_store = original_ogks->GetPredictionManager()->model_and_features_store(); } else { - url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + url_loader_factory = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); top_host_provider_ = GetTopHostProviderIfUserPermitted(browser_context_); bool optimization_guide_fetching_enabled = top_host_provider_ != nullptr;
diff --git a/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer.cc index b4c8904..ffde7373 100644 --- a/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer.cc
@@ -188,7 +188,7 @@ content::BrowserContext* browser_context, const GURL& url) { content::StoragePartition* partition = - content::BrowserContext::GetStoragePartitionForUrl(browser_context, url); + browser_context->GetStoragePartitionForUrl(url); partition->GetCookieManagerForBrowserProcess()->GetCookieList( url, net::CookieOptions::MakeAllInclusive(),
diff --git a/chrome/browser/password_edit_dialog/DIR_METADATA b/chrome/browser/password_edit_dialog/DIR_METADATA new file mode 100644 index 0000000..b420232 --- /dev/null +++ b/chrome/browser/password_edit_dialog/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail: { + component: "UI>Browser>Passwords" +} +team_email: "chromium-dev@chromium.org"
diff --git a/chrome/browser/password_edit_dialog/OWNERS b/chrome/browser/password_edit_dialog/OWNERS new file mode 100644 index 0000000..6d65cfd --- /dev/null +++ b/chrome/browser/password_edit_dialog/OWNERS
@@ -0,0 +1,3 @@ +fhorschig@chromium.org +ioanap@chromium.org +pavely@chromium.org
diff --git a/chrome/browser/password_edit_dialog/android/BUILD.gn b/chrome/browser/password_edit_dialog/android/BUILD.gn new file mode 100644 index 0000000..6d884e2 --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/BUILD.gn
@@ -0,0 +1,89 @@ +# 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") + +source_set("android") { + sources = [ + "password_edit_dialog_bridge.cc", + "password_edit_dialog_bridge.h", + ] + + deps = [ + ":jni_headers", + "//base", + "//chrome/app:generated_resources", + "//content/public/browser", + "//ui/android:android", + ] +} + +android_library("java") { + sources = [ + "java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogBridge.java", + "java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogCoordinator.java", + "java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogProperties.java", + "java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogView.java", + ] + + deps = [ + ":java_resources", + "//base:base_java", + "//third_party/androidx:androidx_annotation_annotation_java", + "//ui/android:ui_no_recycler_view_java", + ] + + annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] + resources_package = "org.chromium.chrome.browser.password_edit_dialog" +} + +generate_jni("jni_headers") { + sources = [ "java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogBridge.java" ] +} + +android_resources("java_resources") { + sources = [ "java/res/layout/password_edit_dialog.xml" ] + + deps = [ + "//chrome/app:java_strings_grd", + "//chrome/browser/ui/android/strings:ui_strings_grd", + ] +} + +java_library("junit") { + # Skip platform checks since Robolectric depends on requires_android targets. + bypass_platform_checks = true + testonly = true + sources = [ "java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogTest.java" ] + + deps = [ + ":java", + "//base:base_java", + "//base:base_java_test_support", + "//base:base_junit_test_support", + "//third_party/android_deps:robolectric_all_java", + "//third_party/hamcrest:hamcrest_library_java", + "//third_party/junit", + "//third_party/mockito:mockito_java", + "//ui/android:ui_no_recycler_view_java", + ] +} + +android_library("javatests") { + testonly = true + + sources = [ "java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogViewTest.java" ] + + deps = [ + ":java", + "//base:base_java_test_support", + "//chrome/test/android:chrome_java_test_support", + "//content/public/test/android:content_java_test_support", + "//third_party/androidx:androidx_test_runner_java", + "//third_party/hamcrest:hamcrest_library_java", + "//third_party/junit", + "//ui/android:ui_java", + "//ui/android:ui_java_test_support", + ] +}
diff --git a/chrome/browser/password_edit_dialog/android/java/res/layout/password_edit_dialog.xml b/chrome/browser/password_edit_dialog/android/java/res/layout/password_edit_dialog.xml new file mode 100644 index 0000000..23c0619 --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/java/res/layout/password_edit_dialog.xml
@@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. --> + +<org.chromium.chrome.browser.password_edit_dialog.PasswordEditDialogView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + style="@style/AlertDialogContent"> + + <!-- Usernames --> + <TextView + android:labelFor="@+id/usernames_spinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textAppearance="@style/TextAppearance.TextSmall.Secondary" + android:text="@string/password_manager_username_label" /> + + <androidx.appcompat.widget.AppCompatSpinner + android:id="@+id/usernames_spinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:focusable="true" + android:focusableInTouchMode="true"/> + + <View style="@style/PreferenceSpinnerUnderlineView"/> + + <!-- Password --> + <com.google.android.material.textfield.TextInputLayout + android:labelFor="@+id/password" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:hint="@string/password_manager_password_label" + app:endIconMode="password_toggle" + app:hintTextAppearance="@style/TextAppearance.TextSmall.Secondary"> + + <EditText + tools:ignore="LabelFor" + android:id="@+id/password" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="textPassword" + android:imeOptions="flagNoExtractUi" + android:enabled="false" + android:focusable="false" + android:importantForAutofill="noExcludeDescendants" + android:textAppearance="@style/TextAppearance.TextLarge.Primary"/> + </com.google.android.material.textfield.TextInputLayout> + + <TextView + android:id="@+id/footer" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + android:textAppearance="@style/TextAppearance.TextSmall.Secondary"/> +</org.chromium.chrome.browser.password_edit_dialog.PasswordEditDialogView>
diff --git a/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogBridge.java b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogBridge.java new file mode 100644 index 0000000..16d74eb --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogBridge.java
@@ -0,0 +1,62 @@ +// 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.chrome.browser.password_edit_dialog; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.NativeMethods; +import org.chromium.ui.base.WindowAndroid; + +/** + * Java part of PasswordEditBridge pair providing communication between native password manager code + * and Java password edit dialog UI components. + */ +public class PasswordEditDialogBridge implements PasswordEditDialogCoordinator.Delegate { + private long mNativeDialog; + private final PasswordEditDialogCoordinator mDialogCoordinator; + + @CalledByNative + static PasswordEditDialogBridge create( + long nativeDialog, @NonNull WindowAndroid windowAndroid) { + return new PasswordEditDialogBridge(nativeDialog, windowAndroid); + } + + private PasswordEditDialogBridge(long nativeDialog, @NonNull WindowAndroid windowAndroid) { + mNativeDialog = nativeDialog; + mDialogCoordinator = PasswordEditDialogCoordinator.create(windowAndroid, this); + } + + @CalledByNative + void show(@NonNull String[] usernames, int selectedUsernameIndex, @NonNull String password, + @NonNull String origin, @Nullable String account) { + mDialogCoordinator.show(usernames, selectedUsernameIndex, password, origin, account); + } + + @CalledByNative + void dismiss() { + mDialogCoordinator.dismiss(); + } + + @Override + public void onDialogAccepted(int selectedUsernameIndex) { + assert mNativeDialog != 0; + PasswordEditDialogBridgeJni.get().onDialogAccepted(mNativeDialog, selectedUsernameIndex); + } + + @Override + public void onDialogDismissed() { + assert mNativeDialog != 0; + PasswordEditDialogBridgeJni.get().onDialogDismissed(mNativeDialog); + mNativeDialog = 0; + } + + @NativeMethods + interface Natives { + void onDialogAccepted(long nativePasswordEditDialogBridge, int selectedUsernameIndex); + void onDialogDismissed(long nativePasswordEditDialogBridge); + } +} \ No newline at end of file
diff --git a/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogCoordinator.java b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogCoordinator.java new file mode 100644 index 0000000..aeea149c --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogCoordinator.java
@@ -0,0 +1,170 @@ +// 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.chrome.browser.password_edit_dialog; + +import android.content.Context; +import android.content.res.Resources; +import android.text.TextUtils; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + +import org.chromium.ui.base.WindowAndroid; +import org.chromium.ui.modaldialog.DialogDismissalCause; +import org.chromium.ui.modaldialog.ModalDialogManager; +import org.chromium.ui.modaldialog.ModalDialogProperties; +import org.chromium.ui.modaldialog.ModalDialogProperties.ButtonType; +import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.modelutil.PropertyModelChangeProcessor; + +import java.util.Arrays; + +/** Coordinator for password edit dialog. */ +class PasswordEditDialogCoordinator implements ModalDialogProperties.Controller { + /** + * A delegate interface for PasswordEditDialogBridge to receive the results of password edit + * dialog interactions. + */ + interface Delegate { + /** + * Called when the user taps the dialog positive button. + * + * @param selectedUsernameIndex The index of the username selected by the user. + */ + void onDialogAccepted(int selectedUsernameIndex); + + /** Called when the dialog is dismissed. */ + void onDialogDismissed(); + } + + private final Context mContext; + private final ModalDialogManager mModalDialogManager; + private final PasswordEditDialogView mDialogView; + private final Delegate mDelegate; + + private PropertyModel mDialogModel; + private PropertyModel mDialogViewModel; + + /** + * Creates the {@link PasswordEditDialogCoordinator}. + * + * @param windowAndroid The window where the dialog will be displayed. + * @param delegate The delegate to be called with results of interaction. + */ + static PasswordEditDialogCoordinator create( + @NonNull WindowAndroid windowAndroid, @NonNull Delegate delegate) { + Context context = windowAndroid.getContext().get(); + PasswordEditDialogView dialogView = + (PasswordEditDialogView) LayoutInflater.from(context).inflate( + R.layout.password_edit_dialog, null); + return new PasswordEditDialogCoordinator( + context, windowAndroid.getModalDialogManager(), dialogView, delegate); + } + + /** + * Internal constructor for {@link PasswordEditDialogCoordinator}. Used by tests to inject + * parameters. External code should use PasswordEditDialogCoordinator#create. + * + * @param context The context for accessing resources. + * @param modalDialogManager The ModalDialogManager to display the dialog. + * @param dialogView The custom view with dialog content. + * @param delegate The delegate to be called with results of interaction. + */ + @VisibleForTesting + PasswordEditDialogCoordinator(@NonNull Context context, + @NonNull ModalDialogManager modalDialogManager, + @NonNull PasswordEditDialogView dialogView, @NonNull Delegate delegate) { + mContext = context; + mModalDialogManager = modalDialogManager; + mDialogView = dialogView; + mDelegate = delegate; + } + + /** + * Shows the password edit dialog. + * + * @param usernames The list of usernames that will be presented in the Spinner. + * @param selectedUsernameIndex The index in the usernames list of the user that should be + * selected initially. + * @param password The password. + * @param origin The origin with which these credentials are associated. + * @param account The account name where the password will be saved. When the user is not signed + * in the account is null. + */ + void show(@NonNull String[] usernames, int selectedUsernameIndex, @NonNull String password, + @NonNull String origin, @Nullable String account) { + Resources resources = mContext.getResources(); + + PropertyModel.Builder dialogProperties = + new PropertyModel.Builder(PasswordEditDialogProperties.ALL_KEYS) + .with(PasswordEditDialogProperties.USERNAMES, Arrays.asList(usernames)) + .with(PasswordEditDialogProperties.SELECTED_USERNAME_INDEX, + selectedUsernameIndex) + .with(PasswordEditDialogProperties.PASSWORD, password) + .with(PasswordEditDialogProperties.USERNAME_SELECTED_CALLBACK, + this::handleUsernameSelected); + if (!TextUtils.isEmpty(account)) { + dialogProperties.with(PasswordEditDialogProperties.FOOTER, + resources.getString( + R.string.update_password_dialog_signed_in_description, account)); + } + mDialogViewModel = dialogProperties.build(); + PropertyModelChangeProcessor.create( + mDialogViewModel, mDialogView, PasswordEditDialogView::bind); + + mDialogModel = + new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) + .with(ModalDialogProperties.CONTROLLER, this) + .with(ModalDialogProperties.TITLE, + resources.getString(R.string.update_password_dialog_title, origin)) + .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources, + R.string.password_manager_update_button) + .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources, + R.string.password_generation_dialog_cancel_button) + .with(ModalDialogProperties.PRIMARY_BUTTON_FILLED, true) + .with(ModalDialogProperties.CUSTOM_VIEW, mDialogView) + .build(); + mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.TAB); + } + + /** Dismisses the displayed dialog. */ + void dismiss() { + mModalDialogManager.dismissDialog(mDialogModel, DialogDismissalCause.DISMISSED_BY_NATIVE); + } + + private void handleUsernameSelected(int selectedUsernameIndex) { + mDialogViewModel.set( + PasswordEditDialogProperties.SELECTED_USERNAME_INDEX, selectedUsernameIndex); + } + + // ModalDialogProperties.Controller implementation. + @Override + public void onClick(PropertyModel model, @ButtonType int buttonType) { + if (buttonType == ButtonType.POSITIVE) { + mDelegate.onDialogAccepted( + mDialogViewModel.get(PasswordEditDialogProperties.SELECTED_USERNAME_INDEX)); + } + mModalDialogManager.dismissDialog(model, + buttonType == ButtonType.POSITIVE ? DialogDismissalCause.POSITIVE_BUTTON_CLICKED + : DialogDismissalCause.NEGATIVE_BUTTON_CLICKED); + } + + @Override + public void onDismiss(PropertyModel model, @DialogDismissalCause int dismissalCause) { + mDelegate.onDialogDismissed(); + } + + @VisibleForTesting + PropertyModel getDialogModelForTesting() { + return mDialogModel; + } + + @VisibleForTesting + PropertyModel getDialogViewModelForTesting() { + return mDialogViewModel; + } +} \ No newline at end of file
diff --git a/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogProperties.java b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogProperties.java new file mode 100644 index 0000000..8c1855a --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogProperties.java
@@ -0,0 +1,39 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.password_edit_dialog; + +import org.chromium.base.Callback; +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel; + +import java.util.List; + +/** + * Defines properties for password edit dialog custom view. + */ +class PasswordEditDialogProperties { + /** + * The callback, invoked when the user selects a username. The value is 0 based index of + * selected username. + */ + static final PropertyModel + .ReadableObjectPropertyKey<Callback<Integer>> USERNAME_SELECTED_CALLBACK = + new PropertyModel.ReadableObjectPropertyKey<>(); + + static final PropertyModel.ReadableObjectPropertyKey<List<String>> USERNAMES = + new PropertyModel.ReadableObjectPropertyKey<>(); + + static final PropertyModel.WritableIntPropertyKey SELECTED_USERNAME_INDEX = + new PropertyModel.WritableIntPropertyKey(); + + static final PropertyModel.ReadableObjectPropertyKey<String> PASSWORD = + new PropertyModel.ReadableObjectPropertyKey<>(); + + static final PropertyModel.ReadableObjectPropertyKey<String> FOOTER = + new PropertyModel.ReadableObjectPropertyKey<>(); + + static final PropertyKey[] ALL_KEYS = { + USERNAME_SELECTED_CALLBACK, USERNAMES, SELECTED_USERNAME_INDEX, PASSWORD, FOOTER}; +} \ No newline at end of file
diff --git a/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogTest.java b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogTest.java new file mode 100644 index 0000000..5c88729 --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogTest.java
@@ -0,0 +1,148 @@ +// 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.chrome.browser.password_edit_dialog; + +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsString; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.never; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.RuntimeEnvironment; + +import org.chromium.base.Callback; +import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.ui.modaldialog.DialogDismissalCause; +import org.chromium.ui.modaldialog.ModalDialogManager; +import org.chromium.ui.modaldialog.ModalDialogProperties; +import org.chromium.ui.modelutil.PropertyModel; + +/** Tests for password edit dialog. */ +@RunWith(BaseRobolectricTestRunner.class) +public class PasswordEditDialogTest { + private static final long NATIVE_PTR = 1; + private static final String[] USERNAMES = {"user1", "user2", "user3"}; + private static final int INITIAL_USERNAME_INDEX = 1; + private static final int SELECTED_USERNAME_INDEX = 2; + private static final String PASSWORD = "password"; + private static final String ORIGIN = "example.com"; + private static final String ACCOUNT_NAME = "foo@bar.com"; + + @Rule + public MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Mock + private PasswordEditDialogCoordinator.Delegate mDelegateMock; + + @Mock + private ModalDialogManager mModalDialogManagerMock; + + @Mock + private PasswordEditDialogView mDialogViewMock; + + private PropertyModel mDialogProperties; + private PropertyModel mModalDialogModel; + + private PasswordEditDialogCoordinator mDialogCoordinator; + + /** + * Tests that properties of modal dialog and custom view are set correctly based on passed + * parameters. + */ + @Test + public void testDialogProperties() { + createAndShowDialog(true); + Mockito.verify(mModalDialogManagerMock) + .showDialog(mModalDialogModel, ModalDialogManager.ModalDialogType.TAB); + Assert.assertThat( + mModalDialogModel.get(ModalDialogProperties.TITLE), containsString(ORIGIN)); + Assert.assertThat("Usernames don't match", + mDialogProperties.get(PasswordEditDialogProperties.USERNAMES), contains(USERNAMES)); + Assert.assertEquals("Selected username doesn't match", INITIAL_USERNAME_INDEX, + mDialogProperties.get(PasswordEditDialogProperties.SELECTED_USERNAME_INDEX)); + Assert.assertEquals("Password doesn't match", PASSWORD, + mDialogProperties.get(PasswordEditDialogProperties.PASSWORD)); + // Non-empty account name should cause footer to be displayed. + Assert.assertNotNull( + "Footer is empty", mDialogProperties.get(PasswordEditDialogProperties.FOOTER)); + } + + /** Tests that the footer is not displayed for signed out user. */ + @Test + public void testFooterForSignedOutUser() { + createAndShowDialog(false); + // Null account name passed to show() indicates that the user is not signed-in. Footer + // shouldn't displayed in this case. + Assert.assertNull( + "Footer is not empty", mDialogProperties.get(PasswordEditDialogProperties.FOOTER)); + } + + /** Tests that the username selected in spinner gets reflected in the callback patameter. */ + @Test + public void testUserSelection() { + createAndShowDialog(true); + Callback<Integer> usernameSelectedCallback = + mDialogProperties.get(PasswordEditDialogProperties.USERNAME_SELECTED_CALLBACK); + usernameSelectedCallback.onResult(SELECTED_USERNAME_INDEX); + Assert.assertEquals("Selected username doesn't match", SELECTED_USERNAME_INDEX, + mDialogProperties.get(PasswordEditDialogProperties.SELECTED_USERNAME_INDEX)); + ModalDialogProperties.Controller dialogController = + mModalDialogModel.get(ModalDialogProperties.CONTROLLER); + dialogController.onClick(mModalDialogModel, ModalDialogProperties.ButtonType.POSITIVE); + Mockito.verify(mDelegateMock).onDialogAccepted(SELECTED_USERNAME_INDEX); + Mockito.verify(mModalDialogManagerMock) + .dismissDialog(mModalDialogModel, DialogDismissalCause.POSITIVE_BUTTON_CLICKED); + } + + /** + * Tests that the username is not saved and the dialog is dismissed when dismiss() is called + * from native code. + */ + @Test + public void testDialogDismissedFromNative() { + createAndShowDialog(true); + mDialogCoordinator.dismiss(); + Mockito.verify(mDelegateMock, never()).onDialogAccepted(anyInt()); + Mockito.verify(mModalDialogManagerMock) + .dismissDialog(mModalDialogModel, DialogDismissalCause.DISMISSED_BY_NATIVE); + } + + /** + * Tests that the username is not saved and the dialog is dismissed when the user taps on the + * negative button. + */ + @Test + public void testDialogDismissedWithNegativeButton() { + createAndShowDialog(true); + ModalDialogProperties.Controller dialogController = + mModalDialogModel.get(ModalDialogProperties.CONTROLLER); + dialogController.onClick(mModalDialogModel, ModalDialogProperties.ButtonType.NEGATIVE); + Mockito.verify(mDelegateMock, never()).onDialogAccepted(anyInt()); + Mockito.verify(mModalDialogManagerMock) + .dismissDialog(mModalDialogModel, DialogDismissalCause.NEGATIVE_BUTTON_CLICKED); + } + + /** + * Helper function that creates PasswordEditDialogCoordinator, calls show and captures property + * models for modal dialog and custom dialog view. + * + * @param signedIn Simulates user's sign-in state. + */ + private void createAndShowDialog(boolean signedIn) { + mDialogCoordinator = new PasswordEditDialogCoordinator(RuntimeEnvironment.application, + mModalDialogManagerMock, mDialogViewMock, mDelegateMock); + mDialogCoordinator.show(USERNAMES, INITIAL_USERNAME_INDEX, PASSWORD, ORIGIN, + signedIn ? ACCOUNT_NAME : null); + mModalDialogModel = mDialogCoordinator.getDialogModelForTesting(); + mDialogProperties = mDialogCoordinator.getDialogViewModelForTesting(); + } +}
diff --git a/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogView.java b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogView.java new file mode 100644 index 0000000..92350a4 --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogView.java
@@ -0,0 +1,106 @@ +// 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.chrome.browser.password_edit_dialog; + +import android.content.Context; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; +import android.widget.ArrayAdapter; +import android.widget.LinearLayout; +import android.widget.Spinner; +import android.widget.TextView; + +import org.chromium.base.Callback; +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel; + +import java.util.List; + +/** + * The custom view for password edit modal dialog. + */ +public class PasswordEditDialogView extends LinearLayout implements OnItemSelectedListener { + private Spinner mUsernamesSpinner; + private TextView mPasswordView; + private TextView mFooterView; + private Callback<Integer> mUsernameSelectedCallback; + + /** + * The view binder method to propagate parameters from model to view + */ + public static void bind( + PropertyModel model, PasswordEditDialogView dialogView, PropertyKey propertyKey) { + if (propertyKey == PasswordEditDialogProperties.USERNAMES) { + // Propagation of USERNAMES property triggers passing both USERNAMES and + // SELECTED_USERNAME_INDEX properties to the view. This is safe because both properties + // are set through property model builder and available by the time the property model + // is bound to the view. The SELECTED_USERNAME_INDEX property is writable since it + // maintains username index of the user, currently selected in UI. Updating the property + // by itself doesn't get propagated to the view as the value originates in the view and + // gets routed to coordinator through USERNAME_SELECTED_CALLBACK. + dialogView.setUsernames(model.get(PasswordEditDialogProperties.USERNAMES), + model.get(PasswordEditDialogProperties.SELECTED_USERNAME_INDEX)); + } else if (propertyKey == PasswordEditDialogProperties.PASSWORD) { + dialogView.setPassword(model.get(PasswordEditDialogProperties.PASSWORD)); + } else if (propertyKey == PasswordEditDialogProperties.FOOTER) { + dialogView.setFooter(model.get(PasswordEditDialogProperties.FOOTER)); + } else if (propertyKey == PasswordEditDialogProperties.USERNAME_SELECTED_CALLBACK) { + dialogView.setUsernameSelectedCallback( + model.get(PasswordEditDialogProperties.USERNAME_SELECTED_CALLBACK)); + } + } + + public PasswordEditDialogView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + /** + * Stores references to the dialog fields after dialog inflation. + */ + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + mUsernamesSpinner = findViewById(R.id.usernames_spinner); + mUsernamesSpinner.setOnItemSelectedListener(this); + + mPasswordView = findViewById(R.id.password); + mFooterView = findViewById(R.id.footer); + } + + void setUsernames(List<String> usernames, int selectedUsernameIndex) { + ArrayAdapter<String> usernamesAdapter = + new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item); + usernamesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + usernamesAdapter.addAll(usernames); + mUsernamesSpinner.setAdapter(usernamesAdapter); + mUsernamesSpinner.setSelection(selectedUsernameIndex); + } + + void setPassword(String password) { + mPasswordView.setText(password); + } + + void setFooter(String footer) { + mFooterView.setVisibility(!TextUtils.isEmpty(footer) ? View.VISIBLE : View.GONE); + mFooterView.setText(footer); + } + + void setUsernameSelectedCallback(Callback<Integer> callback) { + mUsernameSelectedCallback = callback; + } + + @Override + public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { + if (mUsernameSelectedCallback != null) { + mUsernameSelectedCallback.onResult(position); + } + } + + @Override + public void onNothingSelected(AdapterView<?> parent) {} +}
diff --git a/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogViewTest.java b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogViewTest.java new file mode 100644 index 0000000..c8079db6 --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/java/src/org/chromium/chrome/browser/password_edit_dialog/PasswordEditDialogViewTest.java
@@ -0,0 +1,139 @@ +// 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.chrome.browser.password_edit_dialog; + +import android.app.Activity; +import android.view.View; +import android.widget.Spinner; +import android.widget.TextView; + +import androidx.test.filters.MediumTest; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.BaseActivityTestRule; +import org.chromium.base.test.BaseJUnit4ClassRunner; +import org.chromium.base.test.util.CriteriaHelper; +import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +import org.chromium.ui.test.util.DummyUiActivity; + +import java.util.Arrays; + +/** View tests for PasswordEditDialogView. */ +@RunWith(BaseJUnit4ClassRunner.class) +public class PasswordEditDialogViewTest { + private static final String[] USERNAMES = {"user1", "user2", "user3"}; + private static final int INITIAL_USERNAME_INDEX = 1; + private static final int SELECTED_USERNAME_INDEX = 2; + private static final String PASSWORD = "Password"; + private static final String FOOTER = "Footer"; + + @ClassRule + public static BaseActivityTestRule<DummyUiActivity> sActivityTestRule = + new BaseActivityTestRule<>(DummyUiActivity.class); + + private static Activity sActivity; + + PasswordEditDialogView mDialogView; + Spinner mUsernamesView; + TextView mPasswordView; + TextView mFooterView; + int mSelectedUsernameIndex; + + @BeforeClass + public static void setupSuite() { + sActivityTestRule.launchActivity(null); + sActivity = TestThreadUtils.runOnUiThreadBlockingNoException( + () -> sActivityTestRule.getActivity()); + } + + @Before + public void setupTest() throws Exception { + TestThreadUtils.runOnUiThreadBlocking(() -> { + mDialogView = (PasswordEditDialogView) sActivity.getLayoutInflater().inflate( + R.layout.password_edit_dialog, null); + mUsernamesView = (Spinner) mDialogView.findViewById(R.id.usernames_spinner); + mPasswordView = (TextView) mDialogView.findViewById(R.id.password); + mFooterView = (TextView) mDialogView.findViewById(R.id.footer); + sActivity.setContentView(mDialogView); + }); + } + + void handleUsernameSelection(int selectedUsernameIndex) { + mSelectedUsernameIndex = selectedUsernameIndex; + } + + PropertyModel.Builder populateDialogPropertiesBuilder() { + return new PropertyModel.Builder(PasswordEditDialogProperties.ALL_KEYS) + .with(PasswordEditDialogProperties.USERNAMES, Arrays.asList(USERNAMES)) + .with(PasswordEditDialogProperties.SELECTED_USERNAME_INDEX, INITIAL_USERNAME_INDEX) + .with(PasswordEditDialogProperties.PASSWORD, PASSWORD) + .with(PasswordEditDialogProperties.USERNAME_SELECTED_CALLBACK, + this::handleUsernameSelection); + } + + /** Tests that all the properties propagated correctly. */ + @Test + @MediumTest + public void testProperties() { + PropertyModel model = populateDialogPropertiesBuilder() + .with(PasswordEditDialogProperties.FOOTER, FOOTER) + .build(); + TestThreadUtils.runOnUiThreadBlocking(() -> { + PropertyModelChangeProcessor.create(model, mDialogView, PasswordEditDialogView::bind); + }); + Assert.assertEquals("Initial selected username index doesn't match", INITIAL_USERNAME_INDEX, + mUsernamesView.getSelectedItemPosition()); + Assert.assertEquals("Username text doesn't match", USERNAMES[INITIAL_USERNAME_INDEX], + mUsernamesView.getSelectedItem().toString()); + Assert.assertEquals("Password doesn't match", PASSWORD, mPasswordView.getText().toString()); + Assert.assertEquals("Footer should be visible", View.VISIBLE, mFooterView.getVisibility()); + } + + /** Tests that when the footer property is empty footer view is hidden. */ + @Test + @MediumTest + public void testEmptyFooter() { + // Test with null footer property. + PropertyModel nullModel = populateDialogPropertiesBuilder().build(); + TestThreadUtils.runOnUiThreadBlocking(() -> { + PropertyModelChangeProcessor.create( + nullModel, mDialogView, PasswordEditDialogView::bind); + }); + Assert.assertEquals("Footer should not be visible", View.GONE, mFooterView.getVisibility()); + + // Test with footer property containing empty string. + PropertyModel emptyModel = populateDialogPropertiesBuilder() + .with(PasswordEditDialogProperties.FOOTER, "") + .build(); + TestThreadUtils.runOnUiThreadBlocking(() -> { + PropertyModelChangeProcessor.create( + emptyModel, mDialogView, PasswordEditDialogView::bind); + }); + Assert.assertEquals("Footer should not be visible", View.GONE, mFooterView.getVisibility()); + } + + /** Tests username selected callback. */ + @Test + @MediumTest + public void testUsernameSelection() { + PropertyModel model = populateDialogPropertiesBuilder().build(); + TestThreadUtils.runOnUiThreadBlocking(() -> { + PropertyModelChangeProcessor.create(model, mDialogView, PasswordEditDialogView::bind); + mUsernamesView.setSelection(SELECTED_USERNAME_INDEX); + }); + CriteriaHelper.pollUiThread(() -> mSelectedUsernameIndex == SELECTED_USERNAME_INDEX); + TestThreadUtils.runOnUiThreadBlocking( + () -> { mUsernamesView.setSelection(INITIAL_USERNAME_INDEX); }); + CriteriaHelper.pollUiThread(() -> mSelectedUsernameIndex == INITIAL_USERNAME_INDEX); + } +}
diff --git a/chrome/browser/password_edit_dialog/android/password_edit_dialog_bridge.cc b/chrome/browser/password_edit_dialog/android/password_edit_dialog_bridge.cc new file mode 100644 index 0000000..e70cd200 --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/password_edit_dialog_bridge.cc
@@ -0,0 +1,79 @@ +// 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/password_edit_dialog/android/password_edit_dialog_bridge.h" + +#include "base/android/jni_string.h" +#include "base/memory/ptr_util.h" +#include "chrome/browser/password_edit_dialog/android/jni_headers/PasswordEditDialogBridge_jni.h" +#include "content/public/browser/web_contents.h" +#include "ui/android/window_android.h" + +// static +std::unique_ptr<PasswordEditDialogBridge> PasswordEditDialogBridge::Create( + content::WebContents* web_contents, + DialogAcceptedCallback dialog_accepted_callback, + base::OnceClosure dialog_dismissed_callback) { + DCHECK(web_contents); + + ui::WindowAndroid* window_android = web_contents->GetTopLevelNativeWindow(); + if (!window_android) + return nullptr; + return base::WrapUnique(new PasswordEditDialogBridge( + window_android->GetJavaObject(), std::move(dialog_accepted_callback), + std::move(dialog_dismissed_callback))); +} + +PasswordEditDialogBridge::PasswordEditDialogBridge( + base::android::ScopedJavaLocalRef<jobject> j_window_android, + DialogAcceptedCallback dialog_accepted_callback, + base::OnceClosure dialog_dismissed_callback) + : dialog_accepted_callback_(std::move(dialog_accepted_callback)), + dialog_dismissed_callback_(std::move(dialog_dismissed_callback)) { + JNIEnv* env = base::android::AttachCurrentThread(); + java_password_dialog_ = Java_PasswordEditDialogBridge_create( + env, reinterpret_cast<intptr_t>(this), j_window_android); +} + +PasswordEditDialogBridge::~PasswordEditDialogBridge() { + DCHECK(java_password_dialog_.is_null()); +} + +void PasswordEditDialogBridge::Show( + const std::vector<std::u16string>& usernames, + int selected_username_index, + const std::u16string& password, + const std::u16string& origin, + const std::string& account_email) { + JNIEnv* env = base::android::AttachCurrentThread(); + + base::android::ScopedJavaLocalRef<jobjectArray> j_usernames = + base::android::ToJavaArrayOfStrings(env, usernames); + + base::android::ScopedJavaLocalRef<jstring> j_password = + base::android::ConvertUTF16ToJavaString(env, password); + base::android::ScopedJavaLocalRef<jstring> j_origin = + base::android::ConvertUTF16ToJavaString(env, origin); + base::android::ScopedJavaLocalRef<jstring> j_account_email = + base::android::ConvertUTF8ToJavaString(env, account_email); + + Java_PasswordEditDialogBridge_show(env, java_password_dialog_, j_usernames, + selected_username_index, j_password, + j_origin, j_account_email); +} + +void PasswordEditDialogBridge::Dismiss() { + JNIEnv* env = base::android::AttachCurrentThread(); + Java_PasswordEditDialogBridge_dismiss(env, java_password_dialog_); +} + +void PasswordEditDialogBridge::OnDialogAccepted(JNIEnv* env, + jint selected_username_index) { + std::move(dialog_accepted_callback_).Run(selected_username_index); +} + +void PasswordEditDialogBridge::OnDialogDismissed(JNIEnv* env) { + java_password_dialog_.Reset(); + std::move(dialog_dismissed_callback_).Run(); +}
diff --git a/chrome/browser/password_edit_dialog/android/password_edit_dialog_bridge.h b/chrome/browser/password_edit_dialog/android/password_edit_dialog_bridge.h new file mode 100644 index 0000000..ca3ff7545 --- /dev/null +++ b/chrome/browser/password_edit_dialog/android/password_edit_dialog_bridge.h
@@ -0,0 +1,95 @@ +// 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_PASSWORD_EDIT_DIALOG_ANDROID_PASSWORD_EDIT_DIALOG_BRIDGE_H_ +#define CHROME_BROWSER_PASSWORD_EDIT_DIALOG_ANDROID_PASSWORD_EDIT_DIALOG_BRIDGE_H_ + +#include <memory> + +#include "base/android/jni_android.h" +#include "base/android/scoped_java_ref.h" +#include "base/callback.h" + +namespace content { +class WebContents; +} // namespace content + +// The bridge to invoke password edit dialog in Java from native password +// manager code. +// The native code owns the lifetime of the bridge. +// PasswordEditDialogBridge::Create() creates an instance of the bridge. It can +// return nullptr when WebContents is not attached to any window. Show() +// displays the dialog on the screen. +// +// OnDialogAccepted callback is called when the user accepts saving the +// presented password (by tapping Update button). The callback parameter denotes +// the index of selected username in the list of usernames. The dialog will be +// dismissed after this callback, feature code shouldn't call Dismiss from +// callback implementation to dismiss the dialog. +// +// OnDialogDismissed callback is called when the dialog is dismissed either from +// user interactions or from the call to Dismiss() method. The implementation of +// this callback should destroy the dialog bridge instance. +// +// Here is how typically dialog bridge is created: +// m_dialog_bridge = PasswordEditDialogBridge::Create(web_contents, +// base::BindOnce(&OnDialogAccepted),base::BindOnce(&OnDialogDismissed)); +// if (m_dialog_bridge) m_dialog_bridge->Show(...); +// +// The owning class should dismiss displayed dialog during its own destruction: +// if (m_dialog_bridge) m_dialog_bridge->Dismiss(); +// +// Dialog bridge instance should be destroyed in OnDialogDismissed callback: +// void OnDialogDismissed() { +// m_dialog_bridge.reset(); +// } +class PasswordEditDialogBridge { + public: + using DialogAcceptedCallback = base::OnceCallback<void(int)>; + + ~PasswordEditDialogBridge(); + + // Creates and returns an instance of PasswordEditDialogBridge and + // corresponding Java counterpart. + // Returns nullptr if |web_contents| is not attached to a window. + static std::unique_ptr<PasswordEditDialogBridge> Create( + content::WebContents* web_contents, + DialogAcceptedCallback dialog_accepted_callback, + base::OnceClosure dialog_dismissed_callback); + + // Disallow copy and assign. + PasswordEditDialogBridge(const PasswordEditDialogBridge&) = delete; + PasswordEditDialogBridge& operator=(const PasswordEditDialogBridge&) = delete; + + // Calls Java side of the bridge to display password edit modal dialog. + void Show(const std::vector<std::u16string>& usernames, + int selected_username_index, + const std::u16string& password, + const std::u16string& origin, + const std::string& account_email); + + // Dismisses displayed dialog. The owner of PassworDeidtDialogBridge should + // call this function to correctly dismiss and destroy the dialog. The object + // can be safely destroyed after dismiss callback is executed. + void Dismiss(); + + // Called from Java to indicate that the user tapped the positive button with + // |selected_username| being selected from usernames list. + void OnDialogAccepted(JNIEnv* env, jint selected_username_index); + + // Called from Java when the modal dialog is dismissed. + void OnDialogDismissed(JNIEnv* env); + + private: + PasswordEditDialogBridge( + base::android::ScopedJavaLocalRef<jobject> jwindow_android, + DialogAcceptedCallback save_password_callback, + base::OnceClosure dismiss_callback); + + base::android::ScopedJavaGlobalRef<jobject> java_password_dialog_; + DialogAcceptedCallback dialog_accepted_callback_; + base::OnceClosure dialog_dismissed_callback_; +}; + +#endif // CHROME_BROWSER_PASSWORD_EDIT_DIALOG_ANDROID_PASSWORD_EDIT_DIALOG_BRIDGE_H_
diff --git a/chrome/browser/password_manager/account_password_store_factory.cc b/chrome/browser/password_manager/account_password_store_factory.cc index b6cd7d6..e2e1662 100644 --- a/chrome/browser/password_manager/account_password_store_factory.cc +++ b/chrome/browser/password_manager/account_password_store_factory.cc
@@ -200,8 +200,7 @@ [](Profile* profile) -> network::mojom::NetworkContext* { if (!g_browser_process->profile_manager()->IsValidProfile(profile)) return nullptr; - return content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + return profile->GetDefaultStoragePartition()->GetNetworkContext(); }, profile); password_manager_util::RemoveUselessCredentials(
diff --git a/chrome/browser/password_manager/affiliation_service_factory.cc b/chrome/browser/password_manager/affiliation_service_factory.cc index 20a38a8..7e50ef00 100644 --- a/chrome/browser/password_manager/affiliation_service_factory.cc +++ b/chrome/browser/password_manager/affiliation_service_factory.cc
@@ -37,7 +37,7 @@ syncer::SyncService* sync_service = ProfileSyncServiceFactory::GetForProfile(profile); network::SharedURLLoaderFactory* url_loader_factory = - context->GetDefaultStoragePartition(profile) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); return new password_manager::AffiliationServiceImpl(sync_service,
diff --git a/chrome/browser/password_manager/android/account_chooser_dialog_android.cc b/chrome/browser/password_manager/android/account_chooser_dialog_android.cc index 280d8236..ecc30b6 100644 --- a/chrome/browser/password_manager/android/account_chooser_dialog_android.cc +++ b/chrome/browser/password_manager/android/account_chooser_dialog_android.cc
@@ -143,8 +143,8 @@ base::android::ConvertUTF8ToJavaString(env, origin), base::android::ConvertUTF16ToJavaString(env, signin_button))); network::mojom::URLLoaderFactory* loader_factory = - content::BrowserContext::GetDefaultStoragePartition( - Profile::FromBrowserContext(web_contents_->GetBrowserContext())) + web_contents_->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); int avatar_index = 0;
diff --git a/chrome/browser/password_manager/bulk_leak_check_service_factory.cc b/chrome/browser/password_manager/bulk_leak_check_service_factory.cc index 5bd02f9..083570d 100644 --- a/chrome/browser/password_manager/bulk_leak_check_service_factory.cc +++ b/chrome/browser/password_manager/bulk_leak_check_service_factory.cc
@@ -38,6 +38,6 @@ Profile* profile = Profile::FromBrowserContext(context); return new password_manager::BulkLeakCheckService( IdentityManagerFactory::GetForProfile(profile), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/password_manager/change_password_url_service_factory.cc b/chrome/browser/password_manager/change_password_url_service_factory.cc index 56f7088e..48f733a 100644 --- a/chrome/browser/password_manager/change_password_url_service_factory.cc +++ b/chrome/browser/password_manager/change_password_url_service_factory.cc
@@ -36,7 +36,7 @@ KeyedService* ChangePasswordUrlServiceFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { return new password_manager::ChangePasswordUrlServiceImpl( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), Profile::FromBrowserContext(context)->GetPrefs()); }
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc index bed8956..15425623 100644 --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -874,14 +874,13 @@ scoped_refptr<network::SharedURLLoaderFactory> ChromePasswordManagerClient::GetURLLoaderFactory() { - return content::BrowserContext::GetDefaultStoragePartition(profile_) + return profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); } network::mojom::NetworkContext* ChromePasswordManagerClient::GetNetworkContext() const { - return content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + return profile_->GetDefaultStoragePartition()->GetNetworkContext(); } bool ChromePasswordManagerClient::IsUnderAdvancedProtection() const {
diff --git a/chrome/browser/password_manager/password_manager_test_base.cc b/chrome/browser/password_manager/password_manager_test_base.cc index 08db695..90e74002 100644 --- a/chrome/browser/password_manager/password_manager_test_base.cc +++ b/chrome/browser/password_manager/password_manager_test_base.cc
@@ -737,8 +737,7 @@ void PasswordManagerBrowserTestBase::AddHSTSHost(const std::string& host) { network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) - ->GetNetworkContext(); + browser()->profile()->GetDefaultStoragePartition()->GetNetworkContext(); base::Time expiry = base::Time::Now() + base::TimeDelta::FromDays(1000); bool include_subdomains = false; base::RunLoop run_loop;
diff --git a/chrome/browser/password_manager/password_scripts_fetcher_factory.cc b/chrome/browser/password_manager/password_scripts_fetcher_factory.cc index 917d1b4a..75cd311 100644 --- a/chrome/browser/password_manager/password_scripts_fetcher_factory.cc +++ b/chrome/browser/password_manager/password_scripts_fetcher_factory.cc
@@ -34,6 +34,6 @@ KeyedService* PasswordScriptsFetcherFactory::BuildServiceInstanceFor( content::BrowserContext* browser_context) const { return new password_manager::PasswordScriptsFetcherImpl( - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/password_manager/password_store_factory.cc b/chrome/browser/password_manager/password_store_factory.cc index 614504c..5c2d7620 100644 --- a/chrome/browser/password_manager/password_store_factory.cc +++ b/chrome/browser/password_manager/password_store_factory.cc
@@ -97,7 +97,7 @@ password_manager::ToggleAffiliationBasedMatchingBasedOnPasswordSyncedState( password_store.get(), sync_service, - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), content::GetNetworkConnectionTracker(), profile->GetPath()); } @@ -155,8 +155,7 @@ [](Profile* profile) -> network::mojom::NetworkContext* { if (!g_browser_process->profile_manager()->IsValidProfile(profile)) return nullptr; - return content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + return profile->GetDefaultStoragePartition()->GetNetworkContext(); }, profile); password_manager_util::RemoveUselessCredentials( @@ -181,7 +180,7 @@ // launching HashAffiliationLookup. password_manager::ToggleAffiliationBasedMatchingBasedOnPasswordSyncedState( ps.get(), /*sync_service=*/nullptr, - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), content::GetNetworkConnectionTracker(), profile->GetPath()); }
diff --git a/chrome/browser/payments/manifest_verifier_browsertest.cc b/chrome/browser/payments/manifest_verifier_browsertest.cc index 840ed420..73fb3ad 100644 --- a/chrome/browser/payments/manifest_verifier_browsertest.cc +++ b/chrome/browser/payments/manifest_verifier_browsertest.cc
@@ -51,7 +51,7 @@ browser()->tab_strip_model()->GetActiveWebContents(); content::BrowserContext* context = web_contents->GetBrowserContext(); auto downloader = std::make_unique<TestDownloader>( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); downloader->AddTestServerURL("https://", https_server_->GetURL("/")); auto parser = std::make_unique<payments::PaymentManifestParser>(
diff --git a/chrome/browser/payments/service_worker_payment_app_finder_browsertest.cc b/chrome/browser/payments/service_worker_payment_app_finder_browsertest.cc index 56d289a1..bf026ec 100644 --- a/chrome/browser/payments/service_worker_payment_app_finder_browsertest.cc +++ b/chrome/browser/payments/service_worker_payment_app_finder_browsertest.cc
@@ -135,7 +135,7 @@ browser()->tab_strip_model()->GetActiveWebContents(); content::BrowserContext* context = web_contents->GetBrowserContext(); auto downloader = std::make_unique<TestDownloader>( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); downloader->AddTestServerURL("https://alicepay.com/", alicepay_.GetURL("alicepay.com", "/"));
diff --git a/chrome/browser/persisted_state_db/profile_proto_db_factory.h b/chrome/browser/persisted_state_db/profile_proto_db_factory.h index 9a6dd5de..78c00ac 100644 --- a/chrome/browser/persisted_state_db/profile_proto_db_factory.h +++ b/chrome/browser/persisted_state_db/profile_proto_db_factory.h
@@ -94,8 +94,7 @@ DCHECK(!context->IsOffTheRecord()); leveldb_proto::ProtoDatabaseProvider* proto_database_provider = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetProtoDatabaseProvider(); + context->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); // The following will become a proto -> dir and proto -> // leveldb_proto::ProtoDbType mapping as more protos are added.
diff --git a/chrome/browser/policy/cloud/user_policy_signin_service.cc b/chrome/browser/policy/cloud/user_policy_signin_service.cc index 415bb35..54d20c9 100644 --- a/chrome/browser/policy/cloud/user_policy_signin_service.cc +++ b/chrome/browser/policy/cloud/user_policy_signin_service.cc
@@ -147,7 +147,7 @@ InitializeForSignedInUser( AccountIdFromAccountInfo(identity_manager()->GetPrimaryAccountInfo( signin::ConsentLevel::kSync)), - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/policy/cloud/user_policy_signin_service_base.cc b/chrome/browser/policy/cloud/user_policy_signin_service_base.cc index 2c4d9e4..e3a5102 100644 --- a/chrome/browser/policy/cloud/user_policy_signin_service_base.cc +++ b/chrome/browser/policy/cloud/user_policy_signin_service_base.cc
@@ -196,9 +196,9 @@ if (!account_id.is_valid()) ShutdownUserCloudPolicyManager(); else - InitializeForSignedInUser( - account_id, content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess()); + InitializeForSignedInUser(account_id, + profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()); } void UserPolicySigninServiceBase::InitializeForSignedInUser(
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc index 7124debf..bf6fedc 100644 --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1394,6 +1394,9 @@ { key::kPdfAnnotationsEnabled, prefs::kPdfAnnotationsEnabled, base::Value::Type::BOOLEAN }, + { key::kDataLeakPreventionReportingEnabled, + policy_prefs::kDlpReportingEnabled, + base::Value::Type::BOOLEAN }, #endif }; // clang-format on
diff --git a/chrome/browser/policy/policy_network_browsertest.cc b/chrome/browser/policy/policy_network_browsertest.cc index ed63decc..e2139019 100644 --- a/chrome/browser/policy/policy_network_browsertest.cc +++ b/chrome/browser/policy/policy_network_browsertest.cc
@@ -68,8 +68,7 @@ bool IsQuicEnabled(Profile* profile) { return IsQuicEnabled( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext()); + profile->GetDefaultStoragePartition()->GetNetworkContext()); } bool IsQuicEnabledForSystem() { @@ -234,7 +233,9 @@ if (content::IsOutOfProcessNetworkService()) { CrashNetworkServiceAndRestartQuicServer(); // Make sure the NetworkContext has noticed the pipe was closed. - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); EXPECT_FALSE(IsQuicEnabled(browser()->profile())); } @@ -302,7 +303,9 @@ if (content::IsOutOfProcessNetworkService()) { CrashNetworkServiceAndRestartQuicServer(); // Make sure the NetworkContext has noticed the pipe was closed. - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); EXPECT_TRUE(IsQuicEnabled(browser()->profile())); }
diff --git a/chrome/browser/policy/webusb_allow_devices_for_urls_policy_handler_unittest.cc b/chrome/browser/policy/webusb_allow_devices_for_urls_policy_handler_unittest.cc index 2f81e008..c864e225 100644 --- a/chrome/browser/policy/webusb_allow_devices_for_urls_policy_handler_unittest.cc +++ b/chrome/browser/policy/webusb_allow_devices_for_urls_policy_handler_unittest.cc
@@ -260,9 +260,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[1]\": Missing or invalid required " - "property: devices"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[1]\": Missing or invalid required " + u"property: devices"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -280,9 +280,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0]\": Missing or invalid required " - "property: devices"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0]\": Missing or invalid required " + u"property: devices"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -300,9 +300,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0]\": Missing or invalid required " - "property: urls"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0]\": Missing or invalid required " + u"property: urls"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -320,9 +320,9 @@ EXPECT_TRUE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0].devices.items[0]\": Unknown " - "property: serialNumber"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0].devices.items[0]\": Unknown " + u"property: serialNumber"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -380,9 +380,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0].devices.items[0]\": A vendor_id " - "must also be specified"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0].devices.items[0]\": A vendor_id " + u"must also be specified"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -400,9 +400,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0].urls.items[0]\": The urls item " - "must contain valid URLs"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0].urls.items[0]\": The urls item " + u"must contain valid URLs"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -420,9 +420,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0].urls.items[0]\": The urls item " - "must contain valid URLs"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0].urls.items[0]\": The urls item " + u"must contain valid URLs"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -440,9 +440,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0].urls.items[0]\": Each urls " - "string entry must contain between 1 to 2 URLs"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0].urls.items[0]\": Each urls " + u"string entry must contain between 1 to 2 URLs"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); } @@ -460,9 +460,9 @@ EXPECT_FALSE(handler()->CheckPolicySettings(policy, &errors)); EXPECT_EQ(1ul, errors.size()); - const std::u16string kExpected = base::ASCIIToUTF16( - "Schema validation error at \"items[0].urls.items[0]\": Each urls " - "string entry must contain between 1 to 2 URLs"); + static constexpr char16_t kExpected[] = + u"Schema validation error at \"items[0].urls.items[0]\": Each urls " + u"string entry must contain between 1 to 2 URLs"; EXPECT_EQ(kExpected, errors.GetErrors(key::kWebUsbAllowDevicesForUrls)); }
diff --git a/chrome/browser/predictors/loading_predictor_browsertest.cc b/chrome/browser/predictors/loading_predictor_browsertest.cc index feb8fe3..65b9a3f4 100644 --- a/chrome/browser/predictors/loading_predictor_browsertest.cc +++ b/chrome/browser/predictors/loading_predictor_browsertest.cc
@@ -591,9 +591,8 @@ } void ResetNetworkState() { - auto* network_context = content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) - ->GetNetworkContext(); + auto* network_context = + browser()->profile()->GetDefaultStoragePartition()->GetNetworkContext(); base::RunLoop clear_host_cache_loop; base::RunLoop close_all_connections_loop; network_context->ClearHostCache(nullptr,
diff --git a/chrome/browser/predictors/preconnect_manager.cc b/chrome/browser/predictors/preconnect_manager.cc index c4ea16e..7cbe5b3 100644 --- a/chrome/browser/predictors/preconnect_manager.cc +++ b/chrome/browser/predictors/preconnect_manager.cc
@@ -335,8 +335,7 @@ return nullptr; } - return content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + return profile_->GetDefaultStoragePartition()->GetNetworkContext(); } } // namespace predictors
diff --git a/chrome/browser/predictors/prefetch_manager.cc b/chrome/browser/predictors/prefetch_manager.cc index 2384d544..766df0d 100644 --- a/chrome/browser/predictors/prefetch_manager.cc +++ b/chrome/browser/predictors/prefetch_manager.cc
@@ -318,7 +318,7 @@ // partition here, e.g., from WebContentsObserver. And make a similar change // in PreconnectManager. content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile_); + profile_->GetDefaultStoragePartition(); scoped_refptr<network::SharedURLLoaderFactory> factory = storage_partition->GetURLLoaderFactoryForBrowserProcess();
diff --git a/chrome/browser/prefetch/no_state_prefetch/prerender_nostate_prefetch_browsertest.cc b/chrome/browser/prefetch/no_state_prefetch/prerender_nostate_prefetch_browsertest.cc index 12b899be..89992ad 100644 --- a/chrome/browser/prefetch/no_state_prefetch/prerender_nostate_prefetch_browsertest.cc +++ b/chrome/browser/prefetch/no_state_prefetch/prerender_nostate_prefetch_browsertest.cc
@@ -290,8 +290,9 @@ void WaitForAppcache(const GURL& manifest_url) { bool found_manifest = false; content::AppCacheService* appcache_service = - content::BrowserContext::GetDefaultStoragePartition( - current_browser()->profile()) + current_browser() + ->profile() + ->GetDefaultStoragePartition() ->GetAppCacheService(); do { base::RunLoop wait_loop; @@ -835,8 +836,7 @@ PrefetchFromURL(url, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED); content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartitionForUrl( - current_browser()->profile(), url, false); + current_browser()->profile()->GetStoragePartitionForUrl(url, false); net::CookieOptions options = net::CookieOptions::MakeAllInclusive(); base::RunLoop loop; storage_partition->GetCookieManagerForBrowserProcess()->GetCookieList( @@ -857,8 +857,8 @@ // While the request is cross-site, it's permitted to set (implicitly) lax // cookies on a cross-site navigation. content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartitionForUrl( - current_browser()->profile(), cross_domain_url, false); + current_browser()->profile()->GetStoragePartitionForUrl(cross_domain_url, + false); net::CookieOptions options = net::CookieOptions::MakeAllInclusive(); base::RunLoop loop; storage_partition->GetCookieManagerForBrowserProcess()->GetCookieList(
diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc index 0a397ec..186ef2b 100644 --- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc +++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc
@@ -1001,7 +1001,9 @@ "register('network_fallback_worker.js');")); content::ServiceWorkerContext* service_worker_context_ = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetServiceWorkerContext(); EXPECT_EQ(true, service_worker_context_->MaybeHasRegistrationForOrigin( url::Origin::Create(GetOriginServerURL("/")))); @@ -2108,7 +2110,9 @@ "register('network_fallback_worker.js');")); content::ServiceWorkerContext* service_worker_context_ = - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetServiceWorkerContext(); ASSERT_TRUE(service_worker_context_->MaybeHasRegistrationForOrigin( url::Origin::Create(starting_page))); @@ -2424,8 +2428,9 @@ } network::mojom::NetworkContext* GetNormalNetworkContext() { - return content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()) + return browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext(); }
diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_origin_prober.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_origin_prober.cc index d0d1255..a890f98 100644 --- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_origin_prober.cc +++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_origin_prober.cc
@@ -282,7 +282,7 @@ tls_canary_check_ = std::make_unique<AvailabilityProber>( GetCanaryCheckDelegate(), - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), profile_->GetPrefs(), AvailabilityProber::ClientName::kIsolatedPrerenderTLSCanaryCheck, @@ -296,7 +296,7 @@ dns_canary_check_ = std::make_unique<AvailabilityProber>( GetCanaryCheckDelegate(), - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), profile_->GetPrefs(), AvailabilityProber::ClientName::kIsolatedPrerenderDNSCanaryCheck, @@ -414,11 +414,9 @@ url, std::move(callback), also_do_tls_connect)), client_remote.InitWithNewPipeAndPassReceiver()); - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext() - ->ResolveHost(net::HostPortPair::FromURL(url), nik, - std::move(resolve_host_parameters), - std::move(client_remote)); + profile_->GetDefaultStoragePartition()->GetNetworkContext()->ResolveHost( + net::HostPortPair::FromURL(url), nik, std::move(resolve_host_parameters), + std::move(client_remote)); } void PrefetchProxyOriginProber::HTTPProbe(const GURL& url, @@ -431,7 +429,7 @@ std::unique_ptr<AvailabilityProber> prober = std::make_unique<AvailabilityProber>( GetOriginProbeDelegate(), - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), nullptr /* pref_service */, AvailabilityProber::ClientName::kIsolatedPrerenderOriginCheck, url, @@ -482,7 +480,7 @@ std::unique_ptr<TLSProber> prober = std::make_unique<TLSProber>(url, std::move(callback)); - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateTCPConnectedSocket( /*local_addr=*/base::nullopt, addresses,
diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc index d2f44874..d084ab7 100644 --- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc +++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc
@@ -1278,8 +1278,7 @@ Profile* profile) { if (g_service_worker_context_for_test) return g_service_worker_context_for_test; - return content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetServiceWorkerContext(); + return profile->GetDefaultStoragePartition()->GetServiceWorkerContext(); } // static @@ -1335,15 +1334,14 @@ } content::StoragePartition* default_storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile); + profile->GetDefaultStoragePartition(); // Only the default storage partition is supported since that is the only // place where service workers are observed by // |PrefetchProxyServiceWorkersObserver|. if (default_storage_partition != - content::BrowserContext::GetStoragePartitionForUrl( - profile, url, - /*can_create=*/false)) { + profile->GetStoragePartitionForUrl(url, + /*can_create=*/false)) { std::move(result_callback) .Run(url, false, PrefetchProxyPrefetchStatus:: @@ -1518,7 +1516,7 @@ weak_factory_.GetWeakPtr())); content::StoragePartition* default_storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile_); + profile_->GetDefaultStoragePartition(); net::CookieOptions options = net::CookieOptions::MakeAllInclusive(); for (const net::CookieWithAccessResult& cookie : cookie_list) {
diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper_unittest.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper_unittest.cc index ded7fb0..dfbb316 100644 --- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper_unittest.cc +++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper_unittest.cc
@@ -331,7 +331,7 @@ bool result = false; base::RunLoop run_loop; mojo::Remote<network::mojom::CookieManager> cookie_manager; - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetNetworkContext() ->GetCookieManager(cookie_manager.BindNewPipeAndPassReceiver()); std::unique_ptr<net::CanonicalCookie> cc(net::CanonicalCookie::Create(
diff --git a/chrome/browser/prefetch/search_prefetch/back_forward_search_prefetch_url_loader.cc b/chrome/browser/prefetch/search_prefetch/back_forward_search_prefetch_url_loader.cc index e5baf22..46328dfb 100644 --- a/chrome/browser/prefetch/search_prefetch/back_forward_search_prefetch_url_loader.cc +++ b/chrome/browser/prefetch/search_prefetch/back_forward_search_prefetch_url_loader.cc
@@ -59,9 +59,8 @@ prefetch_request.load_flags |= net::LOAD_ONLY_FROM_CACHE; prefetch_request.url = prefetch_url_; - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = profile_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); // Create a network service URL loader with passed in params. url_loader_factory->CreateLoaderAndStart( @@ -97,9 +96,8 @@ if (service) service->ClearCacheEntry(resource_request_->url); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = profile_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); // Create a network service URL loader with passed in params. url_loader_factory->CreateLoaderAndStart(
diff --git a/chrome/browser/prefetch/search_prefetch/full_body_search_prefetch_request.cc b/chrome/browser/prefetch/search_prefetch/full_body_search_prefetch_request.cc index 1d0f8f2..ca91476 100644 --- a/chrome/browser/prefetch/search_prefetch/full_body_search_prefetch_request.cc +++ b/chrome/browser/prefetch/search_prefetch/full_body_search_prefetch_request.cc
@@ -41,9 +41,8 @@ simple_loader_ = network::SimpleURLLoader::Create(std::move(resource_request), network_traffic_annotation); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); simple_loader_->DownloadToString( url_loader_factory.get(),
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 c2b90d2..1eca9d5 100644 --- a/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc +++ b/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc
@@ -1430,7 +1430,9 @@ // Clearing cache should cause the back forward loader to fail over to the // regular URL. base::RunLoop run_loop; - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->ClearHttpCache(base::Time(), base::Time(), nullptr, run_loop.QuitClosure()); @@ -2324,11 +2326,10 @@ RegisterStaticFile(kServiceWorkerUrl, kEnableNavigationPreloadScript, "text/javascript"); - auto* service_worker_context = - browser() - ->profile() - ->GetDefaultStoragePartition(browser()->profile()) - ->GetServiceWorkerContext(); + auto* service_worker_context = browser() + ->profile() + ->GetDefaultStoragePartition() + ->GetServiceWorkerContext(); base::RunLoop run_loop; blink::mojom::ServiceWorkerRegistrationOptions options(
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 3ec3f036..30490ca6 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
@@ -33,9 +33,8 @@ : resource_request_(std::move(resource_request)), streaming_prefetch_request_(streaming_prefetch_request) { DCHECK(streaming_prefetch_request_); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); // Create a network service URL loader with passed in params. url_loader_factory->CreateLoaderAndStart(
diff --git a/chrome/browser/prefs/chrome_pref_service_unittest.cc b/chrome/browser/prefs/chrome_pref_service_unittest.cc index 66449c77..c11dab4 100644 --- a/chrome/browser/prefs/chrome_pref_service_unittest.cc +++ b/chrome/browser/prefs/chrome_pref_service_unittest.cc
@@ -89,13 +89,13 @@ // These should still be the default values. #if defined(OS_MAC) - const char kDefaultFont[] = "Times"; + const char16_t kDefaultFont[] = u"Times"; #elif BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) - const char kDefaultFont[] = "Tinos"; + const char16_t kDefaultFont[] = u"Tinos"; #else - const char kDefaultFont[] = "Times New Roman"; + const char16_t kDefaultFont[] = u"Times New Roman"; #endif - EXPECT_EQ(base::ASCIIToUTF16(kDefaultFont), + EXPECT_EQ(kDefaultFont, webkit_prefs.standard_font_family_map[prefs::kWebKitCommonScript]); EXPECT_TRUE(webkit_prefs.javascript_enabled);
diff --git a/chrome/browser/printing/cloud_print/privet_notifications.cc b/chrome/browser/printing/cloud_print/privet_notifications.cc index 7746a3c..64aba92 100644 --- a/chrome/browser/printing/cloud_print/privet_notifications.cc +++ b/chrome/browser/printing/cloud_print/privet_notifications.cc
@@ -329,7 +329,7 @@ std::unique_ptr<PrivetHTTPAsynchronousFactory> http_factory( PrivetHTTPAsynchronousFactory::CreateInstance( - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess())); privet_notifications_listener_ =
diff --git a/chrome/browser/printing/cloud_print/privet_traffic_detector.cc b/chrome/browser/printing/cloud_print/privet_traffic_detector.cc index c95548a7..4fbcecd 100644 --- a/chrome/browser/printing/cloud_print/privet_traffic_detector.cc +++ b/chrome/browser/printing/cloud_print/privet_traffic_detector.cc
@@ -68,8 +68,7 @@ mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + profile->GetDefaultStoragePartition()->GetNetworkContext(); network_context->CreateUDPSocket(std::move(receiver), std::move(listener_remote)); }
diff --git a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java b/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java index 1282764..1dac01b 100644 --- a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java +++ b/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java
@@ -58,6 +58,9 @@ * upload) into consideration. A crash dump may be retried if this check passes. * * @return whether the user has consented to reporting usage metrics and crash dumps. + * + * Do not use this API because it doesn't abide by the constraint imposed by the native API. + * (crbug.com/1203437) */ @Override boolean isUsageAndCrashReportingPermittedByUser();
diff --git a/chrome/browser/profile_resetter/profile_resetter_browsertest.cc b/chrome/browser/profile_resetter/profile_resetter_browsertest.cc index 95a4957..a764758 100644 --- a/chrome/browser/profile_resetter/profile_resetter_browsertest.cc +++ b/chrome/browser/profile_resetter/profile_resetter_browsertest.cc
@@ -64,8 +64,7 @@ : waiting_callback_(false), profile_(profile) { network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetNetworkContext(); + profile_->GetDefaultStoragePartition()->GetNetworkContext(); network_context->GetCookieManager( cookie_manager_.BindNewPipeAndPassReceiver()); }
diff --git a/chrome/browser/profile_resetter/reset_report_uploader_factory.cc b/chrome/browser/profile_resetter/reset_report_uploader_factory.cc index d5572e08..455d1e4 100644 --- a/chrome/browser/profile_resetter/reset_report_uploader_factory.cc +++ b/chrome/browser/profile_resetter/reset_report_uploader_factory.cc
@@ -31,7 +31,6 @@ KeyedService* ResetReportUploaderFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { - return new ResetReportUploader( - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess()); + return new ResetReportUploader(context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/profiles/android/profile_manager_utils.cc b/chrome/browser/profiles/android/profile_manager_utils.cc index d5c3aa90..7c37f3a 100644 --- a/chrome/browser/profiles/android/profile_manager_utils.cc +++ b/chrome/browser/profiles/android/profile_manager_utils.cc
@@ -30,19 +30,18 @@ // start!) before the Android OS kills our process. But we can't wait for them // to finish because blocking the UI thread is illegal. profile->GetPrefs()->CommitPendingWrite(); - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->FlushCookieStore( network::mojom::CookieManager::FlushCookieStoreCallback()); - content::BrowserContext::ForEachStoragePartition( - profile, base::BindRepeating(FlushStoragePartition)); + profile->ForEachStoragePartition(base::BindRepeating(FlushStoragePartition)); } void RemoveSessionCookiesForProfile(Profile* profile) { auto filter = network::mojom::CookieDeletionFilter::New(); filter->session_control = network::mojom::CookieDeletionSessionControl::SESSION_COOKIES; - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->DeleteCookies(std::move(filter), network::mojom::CookieManager::DeleteCookiesCallback());
diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc index ca63b6c..18fcfb59 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc
@@ -212,7 +212,7 @@ HeavyAdServiceFactory::GetForBrowserContext(this)->InitializeOffTheRecord(); key_->SetProtoDatabaseProvider( - GetDefaultStoragePartition(this)->GetProtoDatabaseProvider()); + GetDefaultStoragePartition()->GetProtoDatabaseProvider()); if (IsIncognitoProfile()) base::RecordAction(base::UserMetricsAction("IncognitoMode_Started")); @@ -434,8 +434,7 @@ scoped_refptr<network::SharedURLLoaderFactory> OffTheRecordProfileImpl::GetURLLoaderFactory() { - return GetDefaultStoragePartition(this) - ->GetURLLoaderFactoryForBrowserProcess(); + return GetDefaultStoragePartition()->GetURLLoaderFactoryForBrowserProcess(); } content::BrowserPluginGuestManager* OffTheRecordProfileImpl::GetGuestManager() {
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc index 3e973b4b..9b87c0c 100644 --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc
@@ -481,9 +481,7 @@ #if !defined(OS_ANDROID) double Profile::GetDefaultZoomLevelForProfile() { - return GetDefaultStoragePartition(this) - ->GetHostZoomMap() - ->GetDefaultZoomLevel(); + return GetDefaultStoragePartition()->GetHostZoomMap()->GetDefaultZoomLevel(); } #endif // !defined(OS_ANDROID)
diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc index ae9483ff..c290259 100644 --- a/chrome/browser/profiles/profile_attributes_entry.cc +++ b/chrome/browser/profiles/profile_attributes_entry.cc
@@ -505,12 +505,8 @@ } void ProfileAttributesEntry::SetIsOmitted(bool is_omitted) { - if (is_omitted) { - DCHECK(IsEphemeral()) << "Only ephemeral profiles can be omitted."; - } - bool old_value = IsOmitted(); - is_omitted_ = is_omitted; + SetIsOmittedInternal(is_omitted); // Send a notification only if the value has really changed. if (old_value != is_omitted_) @@ -950,3 +946,11 @@ ClearValue(kAuthCredentialsKey); ClearValue(kPasswordTokenKey); } + +void ProfileAttributesEntry::SetIsOmittedInternal(bool is_omitted) { + if (is_omitted) { + DCHECK(IsEphemeral()) << "Only ephemeral profiles can be omitted."; + } + + is_omitted_ = is_omitted; +}
diff --git a/chrome/browser/profiles/profile_attributes_entry.h b/chrome/browser/profiles/profile_attributes_entry.h index 97e8de8..c469b38 100644 --- a/chrome/browser/profiles/profile_attributes_entry.h +++ b/chrome/browser/profiles/profile_attributes_entry.h
@@ -310,6 +310,10 @@ // should remain *the* place to drop deprecated profile attributes keys at. void MigrateObsoleteProfileAttributes(); + // Internal version of `SetIsOmitted()` that doesn't trigger any + // notifications. + void SetIsOmittedInternal(bool is_omitted); + // These members are an implementation detail meant to smooth the migration // of the ProfileInfoCache to the ProfileAttributesStorage interface. They can // be safely removed once the ProfileInfoCache stops using indices
diff --git a/chrome/browser/profiles/profile_attributes_init_params.h b/chrome/browser/profiles/profile_attributes_init_params.h index 747db326..d5bc9185 100644 --- a/chrome/browser/profiles/profile_attributes_init_params.h +++ b/chrome/browser/profiles/profile_attributes_init_params.h
@@ -45,6 +45,17 @@ // `AccountId` of the user of the profile. Empty if the profile doesn't have // any associated `user_manager::User`. AccountId account_id{EmptyAccountId()}; + // Whether the profile is guest. + bool is_guest = false; + // Whether the profile is ephemeral. Ephemeral profiles are cleaned up on + // every Chrome restart. + bool is_ephemeral = false; + // Whether the profile is omitted from all UIs displaying multi-profile + // choice. + bool is_omitted = false; + // Whether the profile was signed in with information from a credential + // provider. + bool is_signed_in_with_credential_provider = false; }; #endif // CHROME_BROWSER_PROFILES_PROFILE_ATTRIBUTES_INIT_PARAMS_H_
diff --git a/chrome/browser/profiles/profile_attributes_storage_unittest.cc b/chrome/browser/profiles/profile_attributes_storage_unittest.cc index 5fae933..764ba88c 100644 --- a/chrome/browser/profiles/profile_attributes_storage_unittest.cc +++ b/chrome/browser/profiles/profile_attributes_storage_unittest.cc
@@ -4,6 +4,7 @@ #include <stddef.h> +#include <string> #include <unordered_set> #include "base/bind.h" @@ -53,10 +54,10 @@ first_value, \ second_value); -#define TEST_STRING16_ACCESSORS(entry_type, entry, member) \ - TEST_ACCESSORS(entry_type, entry, member, \ - base::ASCIIToUTF16("first_" #member "_value"), \ - base::ASCIIToUTF16("second_" #member "_value")); +#define TEST_STRING16_ACCESSORS(entry_type, entry, member) \ + TEST_ACCESSORS(entry_type, entry, member, \ + std::u16string(u"first_" #member "_value"), \ + std::u16string(u"second_" #member "_value")); #define TEST_STRING_ACCESSORS(entry_type, entry, member) \ TEST_ACCESSORS(entry_type, entry, member, \ @@ -79,6 +80,34 @@ EXPECT_EQ(second_value, (*entry->*getter_func)()); } +void VerifyInitialValues(ProfileAttributesEntry* entry, + const base::FilePath& profile_path, + const std::u16string& profile_name, + const std::string& gaia_id, + const std::u16string& user_name, + bool is_consented_primary_account, + size_t icon_index, + const std::string& supervised_user_id, + bool is_guest, + bool is_ephemeral, + bool is_omitted, + bool is_signed_in_with_credential_provider) { + ASSERT_NE(entry, nullptr); + EXPECT_EQ(profile_path, entry->GetPath()); + EXPECT_EQ(profile_name, entry->GetName()); + EXPECT_EQ(gaia_id, entry->GetGAIAId()); + EXPECT_EQ(user_name, entry->GetUserName()); + EXPECT_EQ(is_consented_primary_account, entry->IsAuthenticated()); + EXPECT_EQ(icon_index, entry->GetAvatarIconIndex()); + EXPECT_EQ(supervised_user_id, entry->GetSupervisedUserId()); + EXPECT_EQ(is_guest, entry->IsGuest()); + EXPECT_EQ(is_ephemeral, entry->IsEphemeral()); + EXPECT_EQ(is_omitted, entry->IsOmitted()); + EXPECT_EQ(is_signed_in_with_credential_provider, + entry->IsSignedInWithCredentialProvider()); + EXPECT_EQ(std::string(), entry->GetHostedDomain()); +} + class ProfileAttributesTestObserver : public ProfileAttributesStorage::Observer { public: @@ -304,18 +333,77 @@ } TEST_F(ProfileAttributesStorageTest, InitialValues) { - AddTestingProfile(); +#if defined(OS_ANDROID) + // Android has only one default avatar. + size_t kIconIndex = 0; +#else + size_t kIconIndex = 1; +#endif + base::FilePath profile_path = GetProfilePath("testing_profile_path"); + EXPECT_CALL(observer(), OnProfileAdded(profile_path)).Times(1); - ProfileAttributesEntry* entry = storage()->GetProfileAttributesWithPath( - GetProfilePath("testing_profile_path0")); - ASSERT_NE(entry, nullptr); - EXPECT_EQ(GetProfilePath("testing_profile_path0"), entry->GetPath()); - EXPECT_EQ(u"testing_profile_name0", entry->GetName()); - EXPECT_EQ(std::string("testing_profile_gaia0"), entry->GetGAIAId()); - EXPECT_EQ(u"testing_profile_user0", entry->GetUserName()); - EXPECT_EQ(0U, entry->GetAvatarIconIndex()); - EXPECT_EQ(std::string(), entry->GetSupervisedUserId()); - EXPECT_EQ(std::string(), entry->GetHostedDomain()); + ProfileAttributesInitParams params; + params.profile_path = profile_path; + params.profile_name = u"testing_profile_name"; + params.gaia_id = "testing_profile_gaia"; + params.user_name = u"testing_profile_username"; + params.is_consented_primary_account = true; + params.icon_index = kIconIndex; + params.supervised_user_id = "testing_supervised_user_id"; + params.account_id = AccountId::FromUserEmailGaiaId( + base::UTF16ToUTF8(params.user_name), params.gaia_id); + params.is_guest = true; + params.is_ephemeral = true; + params.is_omitted = true; + params.is_signed_in_with_credential_provider = true; + storage()->AddProfile(std::move(params)); + + VerifyAndResetCallExpectations(); + + ProfileAttributesEntry* entry = + storage()->GetProfileAttributesWithPath(profile_path); + VerifyInitialValues( + entry, profile_path, /*profile_name=*/u"testing_profile_name", + /*gaia_id=*/"testing_profile_gaia", + /*user_name=*/u"testing_profile_username", + /*is_consented_primary_account=*/true, /*icon_index=*/kIconIndex, + /*supervised_user_id=*/"testing_supervised_user_id", /*is_guest=*/true, + /*is_ephemeral=*/true, /*is_omitted=*/true, + /*is_signed_in_with_credential_provider=*/true); +} + +TEST_F(ProfileAttributesStorageTest, InitialValues_Defaults) { + base::FilePath profile_path = GetProfilePath("testing_profile_path"); + EXPECT_CALL(observer(), OnProfileAdded(profile_path)).Times(1); + + ProfileAttributesInitParams params; + params.profile_path = profile_path; + + // Verify defaults of ProfileAttributesInitParams. + EXPECT_TRUE(params.profile_name.empty()); + EXPECT_TRUE(params.gaia_id.empty()); + EXPECT_TRUE(params.user_name.empty()); + EXPECT_FALSE(params.is_consented_primary_account); + EXPECT_EQ(0U, params.icon_index); + EXPECT_TRUE(params.supervised_user_id.empty()); + EXPECT_TRUE(params.account_id.empty()); + EXPECT_FALSE(params.is_guest); + EXPECT_FALSE(params.is_ephemeral); + EXPECT_FALSE(params.is_omitted); + EXPECT_FALSE(params.is_signed_in_with_credential_provider); + + storage()->AddProfile(std::move(params)); + + VerifyAndResetCallExpectations(); + + ProfileAttributesEntry* entry = + storage()->GetProfileAttributesWithPath(profile_path); + VerifyInitialValues(entry, profile_path, /*profile_name=*/std::u16string(), + /*gaia_id=*/std::string(), /*user_name=*/std::u16string(), + /*is_consented_primary_account=*/false, /*icon_index=*/0, + /*supervised_user_id=*/std::string(), /*is_guest=*/false, + /*is_ephemeral=*/false, /*is_omitted=*/false, + /*is_signed_in_with_credential_provider=*/false); } TEST_F(ProfileAttributesStorageTest, EntryAccessors) {
diff --git a/chrome/browser/profiles/profile_browsertest.cc b/chrome/browser/profiles/profile_browsertest.cc index 2d3691e2..f275add 100644 --- a/chrome/browser/profiles/profile_browsertest.cc +++ b/chrome/browser/profiles/profile_browsertest.cc
@@ -629,7 +629,9 @@ SimpleURLLoaderUsingMainContextDuringShutdown) { ASSERT_TRUE(embedded_test_server()->Start()); StartActiveLoaderDuringProfileShutdownTest( - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get()); } @@ -643,8 +645,8 @@ OpenURLOffTheRecord(browser()->profile(), GURL("about:blank")); RunURLLoaderActiveDuringIncognitoTeardownTest( embedded_test_server(), incognito_browser, - content::BrowserContext::GetDefaultStoragePartition( - incognito_browser->profile()) + incognito_browser->profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get()); }
diff --git a/chrome/browser/profiles/profile_destroyer.cc b/chrome/browser/profiles/profile_destroyer.cc index 9b18bb6..010b462 100644 --- a/chrome/browser/profiles/profile_destroyer.cc +++ b/chrome/browser/profiles/profile_destroyer.cc
@@ -112,8 +112,10 @@ proto->set_profile_ptr(reinterpret_cast<uint64_t>(profile)); }); + HostSet all_profile_hosts = GetHostsForProfile(profile, true); if (base::FeatureList::IsEnabled(features::kDestroyProfileOnBrowserClose) && - content::RenderProcessHost::run_renderer_in_process()) { + content::RenderProcessHost::run_renderer_in_process() && + !all_profile_hosts.empty()) { // With DestroyProfileOnBrowserClose and --single-process, we need to clean // up the RPH first. Single-process mode does not support multiple Profiles, // so this will not interfere with other Profiles. @@ -276,7 +278,8 @@ // static ProfileDestroyer::HostSet ProfileDestroyer::GetHostsForProfile( - void* const profile_ptr) { + void* const profile_ptr, + bool include_spare_rph) { HostSet hosts; for (content::RenderProcessHost::iterator iter( content::RenderProcessHost::AllHostsIterator()); @@ -288,7 +291,7 @@ continue; // Ignore the spare RenderProcessHost. - if (render_process_host->HostHasNotBeenUsed()) + if (render_process_host->HostHasNotBeenUsed() && !include_spare_rph) continue; TRACE_EVENT(
diff --git a/chrome/browser/profiles/profile_destroyer.h b/chrome/browser/profiles/profile_destroyer.h index a66f2c5..61a0b6e4 100644 --- a/chrome/browser/profiles/profile_destroyer.h +++ b/chrome/browser/profiles/profile_destroyer.h
@@ -49,7 +49,11 @@ // Fetch the list of render process hosts that still point to |profile_ptr|. // |profile_ptr| is a void* because the Profile object may be freed. Only // pointer comparison is allowed, it will never be dereferenced as a Profile. - static HostSet GetHostsForProfile(void* const profile_ptr); + // + // If |include_spare_rph| is true, include spare render process hosts in the + // output. + static HostSet GetHostsForProfile(void* const profile_ptr, + bool include_spare_rph = false); // Destroys an Original (non-off-the-record) profile immediately. static void DestroyOriginalProfileNow(Profile* const profile);
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 9476aab6..d9e6627 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc
@@ -541,7 +541,7 @@ #if defined(OS_ANDROID) // On Android StartupData creates proto database provider for the profile // before profile is created, so move ownership to storage partition. - GetDefaultStoragePartition(this)->SetProtoDatabaseProvider( + GetDefaultStoragePartition()->SetProtoDatabaseProvider( startup_data->TakeProtoDatabaseProvider()); #endif @@ -758,8 +758,7 @@ ChromePluginServiceFilter::GetInstance()->RegisterProfile(this); #endif - auto* db_provider = - GetDefaultStoragePartition(this)->GetProtoDatabaseProvider(); + auto* db_provider = GetDefaultStoragePartition()->GetProtoDatabaseProvider(); key_->SetProtoDatabaseProvider(db_provider); // The DomDistillerViewerSource is not a normal WebUI so it must be registered @@ -1208,7 +1207,7 @@ #if !defined(OS_ANDROID) ChromeZoomLevelPrefs* ProfileImpl::GetZoomLevelPrefs() { return static_cast<ChromeZoomLevelPrefs*>( - GetDefaultStoragePartition(this)->GetZoomLevelDelegate()); + GetDefaultStoragePartition()->GetZoomLevelDelegate()); } #endif // !defined(OS_ANDROID) @@ -1265,8 +1264,7 @@ scoped_refptr<network::SharedURLLoaderFactory> ProfileImpl::GetURLLoaderFactory() { - return GetDefaultStoragePartition(this) - ->GetURLLoaderFactoryForBrowserProcess(); + return GetDefaultStoragePartition()->GetURLLoaderFactoryForBrowserProcess(); } content::BrowserPluginGuestManager* ProfileImpl::GetGuestManager() {
diff --git a/chrome/browser/profiles/profile_info_cache.cc b/chrome/browser/profiles/profile_info_cache.cc index d48caf5..3cf8640 100644 --- a/chrome/browser/profiles/profile_info_cache.cc +++ b/chrome/browser/profiles/profile_info_cache.cc
@@ -33,6 +33,7 @@ #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" +#include "components/signin/public/base/signin_pref_names.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/image/image.h" @@ -93,7 +94,8 @@ } // `info` may become invalid after this call. - InitEntryWithKey(it.key()); + // Profiles loaded from disk can never be omitted. + InitEntryWithKey(it.key(), /*is_omitted=*/false); } // A profile name can depend on other profile names. Do an additional pass to @@ -149,8 +151,9 @@ info->SetBoolean(ProfileAttributesEntry::kBackgroundAppsKey, false); info->SetString(ProfileAttributesEntry::kSupervisedUserId, params.supervised_user_id); - info->SetBoolean(ProfileAttributesEntry::kProfileIsEphemeral, false); - info->SetBoolean(ProfileAttributesEntry::kProfileIsGuest, false); + info->SetBoolean(ProfileAttributesEntry::kProfileIsEphemeral, + params.is_ephemeral); + info->SetBoolean(ProfileAttributesEntry::kProfileIsGuest, params.is_guest); // Either the user has provided a name manually on purpose, and in this case // we should not check for legacy profile names or this a new profile but then // it is not a legacy name, so we dont need to check for legacy names. @@ -162,8 +165,10 @@ info->SetBoolean(kIsUsingDefaultAvatarKey, true); if (params.account_id.HasAccountIdKey()) info->SetString(kAccountIdKey, params.account_id.GetAccountIdKey()); + info->SetBoolKey(prefs::kSignedInWithCredentialProvider, + params.is_signed_in_with_credential_provider); cache->SetWithoutPathExpansion(key, std::move(info)); - ProfileAttributesEntry* entry = InitEntryWithKey(key); + ProfileAttributesEntry* entry = InitEntryWithKey(key, params.is_omitted); entry->InitializeLastNameToDisplay(); // `OnProfileAdded()` must be the first observer method being called right @@ -558,16 +563,16 @@ #endif ProfileAttributesEntry* ProfileInfoCache::InitEntryWithKey( - const std::string& key) { - // TODO(https://crbug.com/1195784): revert CHECKs back to DCHECKs after the - // crash is investigated. - CHECK(!base::Contains(keys_, key)); + const std::string& key, + bool is_omitted) { + DCHECK(!base::Contains(keys_, key)); keys_.push_back(key); base::FilePath path = user_data_dir_.AppendASCII(key); - CHECK(!base::Contains(profile_attributes_entries_, path.value())); + DCHECK(!base::Contains(profile_attributes_entries_, path.value())); auto new_entry = std::make_unique<ProfileAttributesEntry>(); auto* new_entry_raw = new_entry.get(); new_entry->Initialize(this, path, prefs_); + new_entry->SetIsOmittedInternal(is_omitted); profile_attributes_entries_[path.value()] = std::move(new_entry); return new_entry_raw; }
diff --git a/chrome/browser/profiles/profile_info_cache.h b/chrome/browser/profiles/profile_info_cache.h index cbfa0fde..cb4411a9 100644 --- a/chrome/browser/profiles/profile_info_cache.h +++ b/chrome/browser/profiles/profile_info_cache.h
@@ -159,7 +159,8 @@ void LoadGAIAPictureIfNeeded(); #endif - ProfileAttributesEntry* InitEntryWithKey(const std::string& key); + ProfileAttributesEntry* InitEntryWithKey(const std::string& key, + bool is_omitted); #if !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) // Migrate any legacy profile names ("First user", "Default Profile") to
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc index 4d24be88..d77f0ae 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc
@@ -1783,6 +1783,12 @@ Profile* profile) { ProfileAttributesStorage& storage = GetProfileAttributesStorage(); + if (!IsProfileDirectoryMarkedForDeletion(profile_dir)) { + // Ensure RemoveProfile() knows to nuke the profile directory after it's + // done. + MarkProfileDirectoryForDeletion(profile_dir); + } + if (profile) { // TODO(estade): Migrate additional code in this block to observe // ProfileManager instead of handling shutdown here. @@ -1855,9 +1861,10 @@ profile_dir, false, base::BindOnce(&ProfileManager::OnLoadProfileForProfileDeletion, base::Unretained(this), profile_dir)); - - // Prevents CreateProfileAsync from re-creating the profile. - MarkProfileDirectoryForDeletion(profile_dir); + if (!IsProfileDirectoryMarkedForDeletion(profile_dir)) { + // Prevents CreateProfileAsync from re-creating the profile. + MarkProfileDirectoryForDeletion(profile_dir); + } } base::Optional<base::FilePath> ProfileManager::FindLastActiveProfile( @@ -2006,22 +2013,17 @@ init_params.gaia_id = account_info.gaia; init_params.user_name = username; init_params.is_consented_primary_account = is_consented_primary_account; - storage.AddProfile(std::move(init_params)); - ProfileAttributesEntry* entry = - storage.GetProfileAttributesWithPath(profile->GetPath()); - DCHECK(entry); - - if (IsEphemeral(profile)) - entry->SetIsEphemeral(true); - + init_params.is_ephemeral = IsEphemeral(profile); if (profile->IsEphemeralGuestProfile()) { - entry->SetIsGuest(true); - entry->SetIsOmitted(true); + init_params.is_guest = true; + init_params.is_omitted = true; } - entry->SetSignedInWithCredentialProvider( - profile->GetPrefs()->GetBoolean(prefs::kSignedInWithCredentialProvider)); + init_params.is_signed_in_with_credential_provider = + profile->GetPrefs()->GetBoolean(prefs::kSignedInWithCredentialProvider); + + storage.AddProfile(std::move(init_params)); } void ProfileManager::SetNonPersonalProfilePrefs(Profile* profile) {
diff --git a/chrome/browser/profiles/profile_manager_unittest.cc b/chrome/browser/profiles/profile_manager_unittest.cc index f8c3c4c..a2e899c 100644 --- a/chrome/browser/profiles/profile_manager_unittest.cc +++ b/chrome/browser/profiles/profile_manager_unittest.cc
@@ -1716,7 +1716,10 @@ base::FilePath profile_path2 = temp_dir_.GetPath().AppendASCII(profile_basename2); - EXPECT_EQ(3u, profile_manager->GetLoadedProfiles().size()); + if (base::FeatureList::IsEnabled(features::kDestroyProfileOnBrowserClose)) + EXPECT_EQ(2u, profile_manager->GetLoadedProfiles().size()); + else + EXPECT_EQ(3u, profile_manager->GetLoadedProfiles().size()); ASSERT_EQ(1u, storage.GetNumberOfProfiles()); EXPECT_EQ(profile_path2, storage.GetAllProfilesAttributes()[0]->GetPath()); }
diff --git a/chrome/browser/push_messaging/budget_database.cc b/chrome/browser/push_messaging/budget_database.cc index 78b851cb..db503c2 100644 --- a/chrome/browser/push_messaging/budget_database.cc +++ b/chrome/browser/push_messaging/budget_database.cc
@@ -54,8 +54,7 @@ BudgetDatabase::BudgetDatabase(Profile* profile) : profile_(profile), clock_(base::WrapUnique(new base::DefaultClock)) { auto* protodb_provider = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetProtoDatabaseProvider(); + profile->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); // In incognito mode the provider service is not created. if (!protodb_provider) return;
diff --git a/chrome/browser/push_messaging/push_messaging_notification_manager.cc b/chrome/browser/push_messaging/push_messaging_notification_manager.cc index c399337..b1164ff8 100644 --- a/chrome/browser/push_messaging/push_messaging_notification_manager.cc +++ b/chrome/browser/push_messaging/push_messaging_notification_manager.cc
@@ -71,7 +71,7 @@ content::StoragePartition* GetStoragePartition(Profile* profile, const GURL& origin) { - return content::BrowserContext::GetStoragePartitionForUrl(profile, origin); + return profile->GetStoragePartitionForUrl(origin); } NotificationDatabaseData CreateDatabaseData(
diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.cc b/chrome/browser/push_messaging/push_messaging_service_impl.cc index 36c4c47..bd125ef 100644 --- a/chrome/browser/push_messaging/push_messaging_service_impl.cc +++ b/chrome/browser/push_messaging/push_messaging_service_impl.cc
@@ -1620,8 +1620,7 @@ content::DevToolsBackgroundServicesContext* PushMessagingServiceImpl::GetDevToolsContext(const GURL& origin) const { - auto* storage_partition = - content::BrowserContext::GetStoragePartitionForUrl(profile_, origin); + auto* storage_partition = profile_->GetStoragePartitionForUrl(origin); if (!storage_partition) return nullptr;
diff --git a/chrome/browser/referrer_policy_browsertest.cc b/chrome/browser/referrer_policy_browsertest.cc index 3408942..25a0e165 100644 --- a/chrome/browser/referrer_policy_browsertest.cc +++ b/chrome/browser/referrer_policy_browsertest.cc
@@ -1016,7 +1016,9 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyCapReferrerToOriginOnCrossOriginTest, RespectsNoReferrerPref) { browser()->profile()->GetPrefs()->SetBoolean(prefs::kEnableReferrers, false); - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); RunReferrerTest(network::mojom::ReferrerPolicy::kAlways, START_ON_HTTPS, REGULAR_LINK, NO_REDIRECT, WindowOpenDisposition::CURRENT_TAB,
diff --git a/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc b/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc index c1524f6..d76c3b140 100644 --- a/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc +++ b/chrome/browser/renderer_context_menu/quick_answers_menu_observer.cc
@@ -50,7 +50,7 @@ return; quick_answers_client_ = std::make_unique<QuickAnswersClient>( - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), assistant_state, /*delegate=*/this); @@ -58,7 +58,7 @@ if (!quick_answers_controller_) return; quick_answers_controller_->SetClient(std::make_unique<QuickAnswersClient>( - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), assistant_state, quick_answers_controller_->GetQuickAnswersDelegate()));
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/main_scripts.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/main_scripts.js index d5b8b83c..dc9684b 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/main_scripts.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/main_scripts.js
@@ -5,7 +5,6 @@ // <include src="../../../../../../ui/webui/resources/js/cr.js"> // <include src="../../../../../../ui/webui/resources/js/event_tracker.js"> // <include src="../../../../../../ui/webui/resources/js/assert.js"> -// <include src="../../../../../../ui/webui/resources/js/load_time_data.js"> // <include // src="../../../../../../ui/webui/resources/js/i18n_template_no_process.js"> // <include src="../../../../../../ui/webui/resources/js/util.js">
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/main.html b/chrome/browser/resources/chromeos/wallpaper_manager/main.html index 6814b07..4c06e45 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/main.html +++ b/chrome/browser/resources/chromeos/wallpaper_manager/main.html
@@ -14,6 +14,7 @@ <link rel="stylesheet" href="../../../../../ui/webui/resources/css/menu.css"></link> <link rel="stylesheet" href="css/wallpaper_manager.css"> + <script src="chrome://resources/js/load_time_data.js"></script> <script src="js/main_scripts.js"></script> <if expr="False"> <!-- This file has not been flattened, load individual scripts. @@ -21,7 +22,6 @@ <script src="../../../../../ui/webui/resources/js/cr.js"></script> <script src="../../../../../ui/webui/resources/js/event_tracker.js"></script> <script src="../../../../../ui/webui/resources/js/assert.js"></script> - <script src="../../../../../ui/webui/resources/js/load_time_data.js"></script> <script src="../../../../../ui/webui/resources/js/i18n_template_no_process.js"></script> <script src="../../../../../ui/webui/resources/js/util.js"></script> <script src="../../../../../ui/webui/resources/js/cr/ui.js"></script>
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json b/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json index 15681eb..a7ae8aa 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json +++ b/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json
@@ -32,7 +32,7 @@ "js/event_page.js" ] }, - "content_security_policy": "img-src 'self' blob: filesystem: data: chrome://resources;" + "content_security_policy": "img-src 'self' blob: filesystem: data: chrome://resources; script-src 'self' chrome://resources" }, "display_in_launcher": false }
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.html index 2f829ad2..2755507 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.html +++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.html
@@ -25,7 +25,8 @@ margin: 6px 0 0 0; } </style> - <template is="dom-if" if="[[shouldShowDotsMenuButton_(networkState_)]]"> + <template is="dom-if" + if="[[shouldShowDotsMenuButton_(networkState_, isGuest_)]]" restamp> <cr-icon-button class="icon-more-vert" title="$i18n{moreActions}" id="moreNetworkDetail"
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.js index f642ebf..5c43fd7 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.js +++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_menu.js
@@ -35,6 +35,14 @@ return loadTimeData.getBoolean('updatedCellularActivationUi'); } }, + + /** @private */ + isGuest_: { + type: Boolean, + value() { + return loadTimeData.getBoolean('isGuest'); + }, + }, }, /** @@ -87,6 +95,18 @@ * @private */ shouldShowDotsMenuButton_() { + // Only shown if the flag is enabled. + if (!this.isUpdatedCellularUiEnabled_) { + return false; + } + + // Not shown in guest mode. + if (this.isGuest_) { + return false; + } + + // Show if |this.networkState_| has been fetched. Note that this only occurs + // if this is a cellular network with an ICCID. return !!this.networkState_; },
diff --git a/chrome/browser/resources/settings/site_settings/site_list_entry.html b/chrome/browser/resources/settings/site_settings/site_list_entry.html index c40e35b..f6cbcbd 100644 --- a/chrome/browser/resources/settings/site_settings/site_list_entry.html +++ b/chrome/browser/resources/settings/site_settings/site_list_entry.html
@@ -23,7 +23,7 @@ </div> <!-- This div must not contain extra whitespace. --> - <div class="secondary text-elide" + <div class="secondary" id="siteDescription">[[computeSiteDescription_(model)]]</div> </div> <template is="dom-if" if="[[allowNavigateToSiteDetail_]]">
diff --git a/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html b/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html index 167012d..2f5b6b6 100644 --- a/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html +++ b/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html
@@ -236,13 +236,21 @@ on-click="onConfirm_" consent-confirmation autofocus> $i18n{syncConfirmationConfirmLabel} </cr-button> + <if expr="is_macosx or is_linux"> + <cr-button id="settingsButton" on-click="onGoToSettings_" + consent-confirmation> + $i18n{syncConfirmationSettingsLabel} + </cr-button> + </if> <cr-button id="cancelButton" on-click="onUndo_"> $i18n{syncConfirmationUndoLabel} </cr-button> - <cr-button id="settingsButton" on-click="onGoToSettings_" - consent-confirmation> - $i18n{syncConfirmationSettingsLabel} - </cr-button> + <if expr="not is_macosx and not is_linux"> + <cr-button id="settingsButton" on-click="onGoToSettings_" + consent-confirmation> + $i18n{syncConfirmationSettingsLabel} + </cr-button> + </if> </div> </div> </template> @@ -279,12 +287,20 @@ on-click="onConfirm_" consent-confirmation> $i18n{syncConfirmationConfirmLabel} </cr-button> + <if expr="is_macosx or is_linux"> + <cr-button id="settingsButton" on-click="onGoToSettings_" + consent-confirmation> + $i18n{syncConfirmationSettingsLabel} + </cr-button> + </if> <cr-button id="notNowButton" on-click="onUndo_"> $i18n{syncConfirmationUndoLabel} </cr-button> - <cr-button id="settingsButton" on-click="onGoToSettings_" - consent-confirmation> - $i18n{syncConfirmationSettingsLabel} - </cr-button> + <if expr="not is_macosx and not is_linux"> + <cr-button id="settingsButton" on-click="onGoToSettings_" + consent-confirmation> + $i18n{syncConfirmationSettingsLabel} + </cr-button> + </if> </div> </template>
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.cc b/chrome/browser/safe_browsing/chrome_password_protection_service.cc index 783f0eab..c6b4e61e 100644 --- a/chrome/browser/safe_browsing/chrome_password_protection_service.cc +++ b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
@@ -593,7 +593,7 @@ web_contents->GetMainFrame()->GetRoutingID()); resource.token = token; scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); // Ignores the return of |StartCollectingThreatDetails()| here and // let TriggerManager decide whether it should start data
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc index e3b8b28..c8d8970b 100644 --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
@@ -167,10 +167,9 @@ Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - url_loader_for_testing - ? url_loader_for_testing - : content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + url_loader_for_testing ? url_loader_for_testing + : profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); if (should_trigger_reporting) { threat_details_in_progress_ = g_browser_process->safe_browsing_service()
diff --git a/chrome/browser/safe_browsing/trigger_creator.cc b/chrome/browser/safe_browsing/trigger_creator.cc index 52a75b7..5e54789 100644 --- a/chrome/browser/safe_browsing/trigger_creator.cc +++ b/chrome/browser/safe_browsing/trigger_creator.cc
@@ -51,7 +51,7 @@ SBErrorOptions options = TriggerManager::GetSBErrorDisplayOptions( *profile->GetPrefs(), web_contents); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); if (trigger_manager->CanStartDataCollection(options, TriggerType::AD_SAMPLE)) {
diff --git a/chrome/browser/search/background/ntp_background_service_factory.cc b/chrome/browser/search/background/ntp_background_service_factory.cc index 7cc8686..faf475fa 100644 --- a/chrome/browser/search/background/ntp_background_service_factory.cc +++ b/chrome/browser/search/background/ntp_background_service_factory.cc
@@ -41,8 +41,7 @@ // TODO(crbug.com/914898): Background service URLs should be // configurable server-side, so they can be changed mid-release. - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new NtpBackgroundService(url_loader_factory); }
diff --git a/chrome/browser/search/drive/drive_service_factory.cc b/chrome/browser/search/drive/drive_service_factory.cc index 128e197..945a46cf 100644 --- a/chrome/browser/search/drive/drive_service_factory.cc +++ b/chrome/browser/search/drive/drive_service_factory.cc
@@ -33,9 +33,8 @@ KeyedService* DriveServiceFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new DriveService(url_loader_factory, IdentityManagerFactory::GetForProfile( Profile::FromBrowserContext(context)),
diff --git a/chrome/browser/search/instant_service.cc b/chrome/browser/search/instant_service.cc index b0bf08b3..6f7be2c8 100644 --- a/chrome/browser/search/instant_service.cc +++ b/chrome/browser/search/instant_service.cc
@@ -251,7 +251,7 @@ image_fetcher_ = std::make_unique<image_fetcher::ImageFetcherImpl>( std::make_unique<ImageDecoderImpl>(), - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); theme_observer_.Add(native_theme_);
diff --git a/chrome/browser/search/one_google_bar/one_google_bar_service_factory.cc b/chrome/browser/search/one_google_bar/one_google_bar_service_factory.cc index dbc0a6d..8f13da6 100644 --- a/chrome/browser/search/one_google_bar/one_google_bar_service_factory.cc +++ b/chrome/browser/search/one_google_bar/one_google_bar_service_factory.cc
@@ -52,9 +52,8 @@ IdentityManagerFactory::GetForProfile(profile); content_settings::CookieSettings* cookie_settings = CookieSettingsFactory::GetForProfile(profile).get(); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new OneGoogleBarService( identity_manager, std::make_unique<OneGoogleBarLoaderImpl>(
diff --git a/chrome/browser/search/promos/promo_service_factory.cc b/chrome/browser/search/promos/promo_service_factory.cc index 0098073b..067646d7 100644 --- a/chrome/browser/search/promos/promo_service_factory.cc +++ b/chrome/browser/search/promos/promo_service_factory.cc
@@ -41,9 +41,8 @@ KeyedService* PromoServiceFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new PromoService(url_loader_factory, Profile::FromBrowserContext(context)); }
diff --git a/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.cc b/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.cc index eba8326..c3df7ae3 100644 --- a/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.cc +++ b/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.cc
@@ -54,9 +54,8 @@ ServiceAccessType::EXPLICIT_ACCESS); TemplateURLService* template_url_service = TemplateURLServiceFactory::GetForProfile(profile); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new RepeatableQueriesService(identity_manager, history_service, template_url_service, url_loader_factory, GURL(chrome::kChromeUINewTabURL));
diff --git a/chrome/browser/search/search_suggest/search_suggest_service_factory.cc b/chrome/browser/search/search_suggest/search_suggest_service_factory.cc index d5159f2..c6818ad 100644 --- a/chrome/browser/search/search_suggest/search_suggest_service_factory.cc +++ b/chrome/browser/search/search_suggest/search_suggest_service_factory.cc
@@ -51,9 +51,8 @@ Profile* profile = Profile::FromBrowserContext(context); signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(profile); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new SearchSuggestService( profile, identity_manager, std::make_unique<SearchSuggestLoaderImpl>(
diff --git a/chrome/browser/search/suggestions/suggestions_service_factory.cc b/chrome/browser/search/suggestions/suggestions_service_factory.cc index 5acc1a5..18264bbc 100644 --- a/chrome/browser/search/suggestions/suggestions_service_factory.cc +++ b/chrome/browser/search/suggestions/suggestions_service_factory.cc
@@ -66,7 +66,7 @@ return new SuggestionsServiceImpl( identity_manager, sync_service, - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), std::move(suggestions_store), std::move(blocklist_store), base::DefaultTickClock::GetInstance());
diff --git a/chrome/browser/search/task_module/task_module_service_factory.cc b/chrome/browser/search/task_module/task_module_service_factory.cc index 9aeb4e6c..42b963b 100644 --- a/chrome/browser/search/task_module/task_module_service_factory.cc +++ b/chrome/browser/search/task_module/task_module_service_factory.cc
@@ -34,9 +34,8 @@ KeyedService* TaskModuleServiceFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); return new TaskModuleService(url_loader_factory, Profile::FromBrowserContext(context), g_browser_process->GetApplicationLocale());
diff --git a/chrome/browser/search_engines/android/BUILD.gn b/chrome/browser/search_engines/android/BUILD.gn index ff0be3d..d2c4601 100644 --- a/chrome/browser/search_engines/android/BUILD.gn +++ b/chrome/browser/search_engines/android/BUILD.gn
@@ -8,8 +8,13 @@ android_library("java") { sources = [ + "java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelper.java", + "java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialog.java", "java/src/org/chromium/chrome/browser/search_engines/SearchEngineChoiceMetrics.java", "java/src/org/chromium/chrome/browser/search_engines/SearchEngineChoiceNotification.java", + "java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoState.java", + "java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoType.java", + "java/src/org/chromium/chrome/browser/search_engines/SogouPromoDialog.java", "java/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory.java", "java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java", "java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineSettings.java", @@ -29,6 +34,7 @@ "//components/browser_ui/settings/android:java", "//components/browser_ui/site_settings/android:java", "//components/browser_ui/util/android:java", + "//components/browser_ui/widget/android:java", "//components/content_settings/android:content_settings_enums_java", "//components/location/android:location_java", "//components/search_engines/android:java", @@ -46,11 +52,14 @@ android_resources("java_resources") { sources = [ + "java/res/drawable/search_sogou.xml", "java/res/layout/search_engine.xml", "java/res/layout/search_engine_recent_title.xml", + "java/res/values/ids.xml", ] deps = [ "//chrome/browser/ui/android/strings:ui_strings_grd", "//components/browser_ui/styles/android:java_resources", + "//components/browser_ui/widget/android:java_resources", ] }
diff --git a/chrome/android/java/res/drawable/search_sogou.xml b/chrome/browser/search_engines/android/java/res/drawable/search_sogou.xml similarity index 100% rename from chrome/android/java/res/drawable/search_sogou.xml rename to chrome/browser/search_engines/android/java/res/drawable/search_sogou.xml
diff --git a/chrome/browser/search_engines/android/java/res/values/ids.xml b/chrome/browser/search_engines/android/java/res/values/ids.xml new file mode 100644 index 0000000..a7b19db --- /dev/null +++ b/chrome/browser/search_engines/android/java/res/values/ids.xml
@@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- 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. +--> + +<resources> + <item name="default_search_engine_dialog_options" type="id"/> +</resources>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelper.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelper.java similarity index 73% rename from chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelper.java rename to chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelper.java index 7841732e..e5a8cc249 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelper.java +++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEngineDialogHelper.java
@@ -2,7 +2,7 @@ // 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.locale; +package org.chromium.chrome.browser.search_engines; import android.view.View; import android.view.View.OnClickListener; @@ -12,7 +12,6 @@ import androidx.annotation.Nullable; -import org.chromium.chrome.browser.locale.LocaleManager.SearchEnginePromoType; import org.chromium.components.browser_ui.widget.RadioButtonLayout; import org.chromium.components.search_engines.TemplateUrl; @@ -23,32 +22,27 @@ /** Handles user interactions with a user dialog that lets them pick a default search engine. */ public class DefaultSearchEngineDialogHelper implements OnCheckedChangeListener, OnClickListener { /** Handles interactions with the TemplateUrlService and LocaleManager. */ - public static class HelperDelegate { - private final int mDialogType; + public interface Delegate { + /** + * Get the list of search engines that a user may choose between. + * @param promoType Which search engine list to show. + * @return List of engines to show. + */ + List<TemplateUrl> getSearchEnginesForPromoDialog(@SearchEnginePromoType int type); /** - * Basic constructor for the delegate. - * @param dialogType {@link SearchEnginePromoType} for the dialog this delegate belongs to. + * To be called after the user has made a selection from a search engine promo dialog. + * @param type The type of search engine promo dialog that was shown. + * @param keywords The keywords for all search engines listed in the order shown to the + * user. + * @param keyword The keyword for the search engine chosen. */ - public HelperDelegate(@SearchEnginePromoType int dialogType) { - mDialogType = dialogType; - } - - /** Determine what search engines will be listed. */ - protected List<TemplateUrl> getSearchEngines() { - List<TemplateUrl> templateUrls = - LocaleManager.getInstance().getSearchEnginesForPromoDialog(mDialogType); - return templateUrls; - } - - /** Called when the search engine the user selected is confirmed to be the one they want. */ - protected void onUserSeachEngineChoice(List<String> keywords, String keyword) { - LocaleManager.getInstance().onUserSearchEngineChoiceFromPromoDialog( - mDialogType, keywords, keyword); - } + void onUserSearchEngineChoice( + @SearchEnginePromoType int type, List<String> keywords, String keyword); } - private final HelperDelegate mDelegate; + private final int mDialogType; + private final Delegate mDelegate; private final Runnable mFinishRunnable; private final Button mConfirmButton; @@ -73,19 +67,21 @@ * Constructs a DefaultSearchEngineDialogHelper. * * @param dialogType Dialog type to show. + * @param delegate Delegate for getting search engine list/selection notification. * @param controls {@link RadioButtonLayout} that will contains all the engine options. * @param confirmButton Button that the user clicks on to confirm their selection. * @param finishRunnable Runs after the user has confirmed their selection. */ - public DefaultSearchEngineDialogHelper(@SearchEnginePromoType int dialogType, + public DefaultSearchEngineDialogHelper(@SearchEnginePromoType int dialogType, Delegate delegate, RadioButtonLayout controls, Button confirmButton, Runnable finishRunnable) { + mDialogType = dialogType; mConfirmButton = confirmButton; mConfirmButton.setOnClickListener(this); mFinishRunnable = finishRunnable; - mDelegate = createDelegate(dialogType); + mDelegate = delegate; // Shuffle up the engines. - List<TemplateUrl> engines = mDelegate.getSearchEngines(); + List<TemplateUrl> engines = mDelegate.getSearchEnginesForPromoDialog(dialogType); List<CharSequence> engineNames = new ArrayList<>(); mSearchEngineKeywords = new ArrayList<>(); Collections.shuffle(engines); @@ -139,15 +135,11 @@ mConfirmedKeyword = mCurrentlySelectedKeyword; - mDelegate.onUserSeachEngineChoice(mSearchEngineKeywords, mConfirmedKeyword.toString()); + mDelegate.onUserSearchEngineChoice( + mDialogType, mSearchEngineKeywords, mConfirmedKeyword.toString()); mFinishRunnable.run(); } - /** Creates the delegate that interacts with the TemplateUrlService. */ - protected HelperDelegate createDelegate(@SearchEnginePromoType int dialogType) { - return new HelperDelegate(dialogType); - } - /** Prevent the user from moving forward until they've clicked a search engine. */ private final void updateButtonState() { mConfirmButton.setEnabled(mCurrentlySelectedKeyword != null);
diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialog.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialog.java new file mode 100644 index 0000000..989d2db6 --- /dev/null +++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/DefaultSearchEnginePromoDialog.java
@@ -0,0 +1,135 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.search_engines; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.DialogInterface; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + +import org.chromium.base.Callback; +import org.chromium.base.metrics.RecordUserAction; +import org.chromium.components.browser_ui.widget.PromoDialog; +import org.chromium.components.browser_ui.widget.RadioButtonLayout; + +/** A dialog that forces the user to choose a default search engine. */ +public class DefaultSearchEnginePromoDialog extends PromoDialog { + /** Notified about events happening to the dialog. */ + public static interface DefaultSearchEnginePromoDialogObserver { + void onDialogShown(DefaultSearchEnginePromoDialog shownDialog); + } + private static DefaultSearchEnginePromoDialogObserver sObserver; + + @SuppressLint("StaticFieldLeak") + private static DefaultSearchEnginePromoDialog sCurrentDialog; + + /** Used to determine the promo dialog contents. */ + @SearchEnginePromoType + private final int mDialogType; + + /** Called when the dialog is dismissed after the user has chosen a search engine. */ + private final Callback<Boolean> mOnSuccessCallback; + + private DefaultSearchEngineDialogHelper.Delegate mDelegate; + + /** Encapsulates most of the logic for filling the dialog and handling clicks. */ + private DefaultSearchEngineDialogHelper mHelper; + + /** + * Construct the default search engine promo. + * + * @param activity Activity to build the dialog with. + * @param delegate Delegate for getting search engine list/selection notification. + * @param dialogType Type of dialog to show. + * @param onSuccessCallback Notified whether the user successfully chose a search engine and + * dismissed the dialog. + */ + public DefaultSearchEnginePromoDialog(Activity activity, + DefaultSearchEngineDialogHelper.Delegate delegate, int dialogType, + @Nullable Callback<Boolean> onSuccessCallback) { + super(activity); + mDelegate = delegate; + mDialogType = dialogType; + mOnSuccessCallback = onSuccessCallback; + setOnDismissListener(this); + + // No one should be able to bypass this dialog by clicking outside or by hitting back. + setCancelable(false); + setCanceledOnTouchOutside(false); + + if (dialogType == SearchEnginePromoType.SHOW_NEW) forceOpaqueBackground(); + } + + @Override + protected DialogParams getDialogParams() { + PromoDialog.DialogParams params = new PromoDialog.DialogParams(); + params.headerStringResource = R.string.search_engine_dialog_title; + params.footerStringResource = R.string.search_engine_dialog_footer; + params.primaryButtonStringResource = R.string.ok; + return params; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Button okButton = (Button) findViewById(R.id.button_primary); + okButton.setEnabled(false); + + RadioButtonLayout radioButtons = new RadioButtonLayout(getContext()); + radioButtons.setId(R.id.default_search_engine_dialog_options); + addControl(radioButtons); + mHelper = new DefaultSearchEngineDialogHelper( + mDialogType, mDelegate, radioButtons, okButton, this::dismiss); + } + + @Override + public void show() { + super.show(); + if (sCurrentDialog != null) sCurrentDialog.dismiss(); + setCurrentDialog(this); + + if (mDialogType == SearchEnginePromoType.SHOW_NEW) { + RecordUserAction.record("SearchEnginePromo.NewDevice.Shown.Dialog"); + } else if (mDialogType == SearchEnginePromoType.SHOW_EXISTING) { + RecordUserAction.record("SearchEnginePromo.ExistingDevice.Shown.Dialog"); + } + if (sObserver != null) sObserver.onDialogShown(this); + } + + @Override + public void onDismiss(DialogInterface dialog) { + if (mHelper.getConfirmedKeyword() == null) { + // If no selection, finish the Activity so that the user has to respond to the dialog + // next time. + if (getOwnerActivity() != null) getOwnerActivity().finish(); + } + + if (mOnSuccessCallback != null) { + mOnSuccessCallback.onResult(mHelper.getConfirmedKeyword() != null); + } + + if (sCurrentDialog == this) setCurrentDialog(null); + } + + /** See {@link #sObserver}. */ + @VisibleForTesting + public static void setObserverForTests2(DefaultSearchEnginePromoDialogObserver observer) { + sObserver = observer; + } + + /** @return The current visible Default Search Engine dialog. */ + static DefaultSearchEnginePromoDialog getCurrentDialog() { + return sCurrentDialog; + } + + private static void setCurrentDialog(DefaultSearchEnginePromoDialog dialog) { + sCurrentDialog = dialog; + } +}
diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/Dummy.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/Dummy.java deleted file mode 100644 index 84ac3f8..0000000 --- a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/Dummy.java +++ /dev/null
@@ -1,8 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.search_engines; - -/** Dummy class for an empty target. */ -public class Dummy {}
diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoState.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoState.java new file mode 100644 index 0000000..91ea06d0 --- /dev/null +++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoState.java
@@ -0,0 +1,20 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.search_engines; + +import androidx.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** The current state regarding search engine promo dialogs. */ +@IntDef({SearchEnginePromoState.SHOULD_CHECK, SearchEnginePromoState.CHECKED_NOT_SHOWN, + SearchEnginePromoState.CHECKED_AND_SHOWN}) +@Retention(RetentionPolicy.SOURCE) +public @interface SearchEnginePromoState { + int SHOULD_CHECK = -1; + int CHECKED_NOT_SHOWN = 0; + int CHECKED_AND_SHOWN = 1; +}
diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoType.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoType.java new file mode 100644 index 0000000..2594585f --- /dev/null +++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SearchEnginePromoType.java
@@ -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. + +package org.chromium.chrome.browser.search_engines; + +import androidx.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** The different types of search engine promo dialogs. */ +@IntDef({SearchEnginePromoType.DONT_SHOW, SearchEnginePromoType.SHOW_SOGOU, + SearchEnginePromoType.SHOW_EXISTING, SearchEnginePromoType.SHOW_NEW}) +@Retention(RetentionPolicy.SOURCE) +public @interface SearchEnginePromoType { + int DONT_SHOW = -1; + int SHOW_SOGOU = 0; + int SHOW_EXISTING = 1; + int SHOW_NEW = 2; +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/SogouPromoDialog.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SogouPromoDialog.java similarity index 88% rename from chrome/android/java/src/org/chromium/chrome/browser/locale/SogouPromoDialog.java rename to chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SogouPromoDialog.java index a429e700..5d034bd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/locale/SogouPromoDialog.java +++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/SogouPromoDialog.java
@@ -2,7 +2,7 @@ // 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.locale; +package org.chromium.chrome.browser.search_engines; import android.app.Activity; import android.content.DialogInterface; @@ -20,7 +20,6 @@ import org.chromium.base.Callback; import org.chromium.base.metrics.RecordHistogram; -import org.chromium.chrome.R; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings; @@ -53,7 +52,9 @@ /** Run when the dialog is dismissed. */ private final Callback<Boolean> mOnDismissedCallback; - private final LocaleManager mLocaleManager; + /** Called when the search engine to use is selected. */ + private final Callback<Boolean> mOnSelectEngineCallback; + private final ClickableSpan mSpan; @UserChoice @@ -62,10 +63,9 @@ /** * Creates an instance of the dialog. */ - SogouPromoDialog(Activity activity, LocaleManager localeManager, + public SogouPromoDialog(Activity activity, @NonNull Callback<Boolean> onSelectEngine, @Nullable Callback<Boolean> onDismissed, @NonNull SettingsLauncher settingsLauncher) { super(activity); - mLocaleManager = localeManager; mSpan = new NoUnderlineClickableSpan(activity.getResources(), (widget) -> { mChoice = UserChoice.SETTINGS; settingsLauncher.launchSettingsActivity(getContext(), SearchEngineSettings.class); @@ -74,6 +74,7 @@ setOnDismissListener(this); setCanceledOnTouchOutside(false); mOnDismissedCallback = onDismissed; + mOnSelectEngineCallback = onSelectEngine; } @Override @@ -118,27 +119,16 @@ dismiss(); } - private void keepGoogle() { - mLocaleManager.setSearchEngineAutoSwitch(false); - mLocaleManager.addSpecialSearchEngines(); - } - - private void useSogou() { - mLocaleManager.setSearchEngineAutoSwitch(true); - mLocaleManager.addSpecialSearchEngines(); - mLocaleManager.overrideDefaultSearchEngine(); - } - @Override public void onDismiss(DialogInterface dialog) { switch (mChoice) { case UserChoice.KEEP_GOOGLE: case UserChoice.SETTINGS: case UserChoice.BACK_KEY: - keepGoogle(); + mOnSelectEngineCallback.onResult(false); break; case UserChoice.USE_SOGOU: - useSogou(); + mOnSelectEngineCallback.onResult(true); break; default: assert false : "Unexpected choice";
diff --git a/chrome/browser/search_engines/template_url_fetcher_unittest.cc b/chrome/browser/search_engines/template_url_fetcher_unittest.cc index cc9930c..134c4663 100644 --- a/chrome/browser/search_engines/template_url_fetcher_unittest.cc +++ b/chrome/browser/search_engines/template_url_fetcher_unittest.cc
@@ -155,7 +155,7 @@ TestingProfile* profile = test_util_.profile(); template_url_fetcher_->ScheduleDownload( keyword, osdd_url, favicon_url, url::Origin::Create(GURL()), - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), 0 /* render_frame_id */, kRequestID);
diff --git a/chrome/browser/search_provider_logos/logo_service_factory.cc b/chrome/browser/search_provider_logos/logo_service_factory.cc index 0650a2b..0a7756995 100644 --- a/chrome/browser/search_provider_logos/logo_service_factory.cc +++ b/chrome/browser/search_provider_logos/logo_service_factory.cc
@@ -56,12 +56,11 @@ content::BrowserContext* context) const { Profile* profile = static_cast<Profile*>(context); DCHECK(!profile->IsOffTheRecord()); - return new LogoServiceImpl( - profile->GetPath().Append(kCachedLogoDirectory), - IdentityManagerFactory::GetForProfile(profile), - TemplateURLServiceFactory::GetForProfile(profile), - std::make_unique<ImageDecoderImpl>(), - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(), - base::BindRepeating(&UseGrayLogo)); + return new LogoServiceImpl(profile->GetPath().Append(kCachedLogoDirectory), + IdentityManagerFactory::GetForProfile(profile), + TemplateURLServiceFactory::GetForProfile(profile), + std::make_unique<ImageDecoderImpl>(), + profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), + base::BindRepeating(&UseGrayLogo)); }
diff --git a/chrome/browser/send_tab_to_self/desktop_notification_handler_unittest.cc b/chrome/browser/send_tab_to_self/desktop_notification_handler_unittest.cc index 73808d1f..885c374 100644 --- a/chrome/browser/send_tab_to_self/desktop_notification_handler_unittest.cc +++ b/chrome/browser/send_tab_to_self/desktop_notification_handler_unittest.cc
@@ -36,11 +36,12 @@ const char kDesktopNotificationId[] = "notification_id"; const char kDesktopNotificationGuid[] = "guid"; const char kDesktopNotificationTitle[] = "title"; +const char16_t kDesktopNotificationTitle16[] = u"title"; const char kDesktopNotificationDeviceInfo[] = "device_info"; const char kDesktopNotificationTargetDeviceSyncCacheGuid[] = "target_device_sync_cache_guid"; -const char kDesktopNotificationDeviceInfoWithPrefix[] = - "Shared from device_info"; +const char16_t kDesktopNotificationDeviceInfoWithPrefix[] = + u"Shared from device_info"; class SendTabToSelfModelMock : public TestSendTabToSelfModel { public: @@ -144,8 +145,7 @@ optional_fields.never_timeout = true; message_center::Notification notification( message_center::NOTIFICATION_TYPE_SIMPLE, kDesktopNotificationGuid, - base::ASCIIToUTF16(kDesktopNotificationTitle), - base::ASCIIToUTF16(kDesktopNotificationDeviceInfoWithPrefix), + kDesktopNotificationTitle16, kDesktopNotificationDeviceInfoWithPrefix, gfx::Image(), base::UTF8ToUTF16(url.host()), url, message_center::NotifierId(url), optional_fields, /*delegate=*/nullptr);
diff --git a/chrome/browser/sessions/session_data_deleter.cc b/chrome/browser/sessions/session_data_deleter.cc index 4505589..b5563b5 100644 --- a/chrome/browser/sessions/session_data_deleter.cc +++ b/chrome/browser/sessions/session_data_deleter.cc
@@ -163,6 +163,6 @@ scoped_refptr<SessionDataDeleter> deleter( new SessionDataDeleter(profile->GetSpecialStoragePolicy(), startup_pref_type == SessionStartupPref::LAST)); - deleter->Run(Profile::GetDefaultStoragePartition(profile), + deleter->Run(profile->GetDefaultStoragePartition(), HostContentSettingsMapFactory::GetForProfile(profile)); }
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc index 613b6c2..954cab9d 100644 --- a/chrome/browser/sessions/session_restore.cc +++ b/chrome/browser/sessions/session_restore.cc
@@ -455,7 +455,7 @@ if (windows->empty()) { // Restore was unsuccessful. The DOM storage system can also delete its // data, since no session restore will happen at a later point in time. - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetDOMStorageContext() ->StartScavengingUnusedSessionStorage(); return FinishedTabCreation(false, false, created_contents); @@ -602,7 +602,7 @@ // sessionStorages needed for the session restore have now been recreated // by RestoreTab. Now it's safe for the DOM storage system to start // deleting leftover data. - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetDOMStorageContext() ->StartScavengingUnusedSessionStorage(); return last_normal_browser; @@ -711,7 +711,7 @@ scoped_refptr<content::SessionStorageNamespace> session_storage_namespace; if (!tab.session_storage_persistent_id.empty()) { session_storage_namespace = - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetDOMStorageContext() ->RecreateSessionStorage(tab.session_storage_persistent_id); }
diff --git a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc index a0be8cf..f2520f8 100644 --- a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc +++ b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc
@@ -274,7 +274,7 @@ base::Unretained(this))); } url_loader_->DownloadToString( - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), base::BindOnce(&RemoteCopyMessageHandler::OnURLLoadComplete,
diff --git a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler_unittest.cc b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler_unittest.cc index 8df29089..c7852ff 100644 --- a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler_unittest.cc +++ b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler_unittest.cc
@@ -43,6 +43,7 @@ const char kText[] = "clipboard text"; const char kEmptyDeviceName[] = ""; const char kDeviceNameInMessage[] = "DeviceNameInMessage"; +const char16_t kDeviceNameInMessage16[] = u"DeviceNameInMessage"; const char kHistogramName[] = "Sharing.RemoteCopyHandleMessageResult"; const char kTestImageUrl[] = "https://foo.com/image.png"; @@ -167,7 +168,7 @@ EXPECT_EQ(GetClipboardText(), kText); EXPECT_EQ(l10n_util::GetStringFUTF16( IDS_SHARING_REMOTE_COPY_NOTIFICATION_TITLE_TEXT_CONTENT, - base::ASCIIToUTF16(kDeviceNameInMessage)), + kDeviceNameInMessage16), GetNotification().title()); histograms_.ExpectUniqueSample( kHistogramName, RemoteCopyHandleMessageResult::kSuccessHandledText, 1); @@ -225,7 +226,7 @@ EXPECT_EQ(l10n_util::GetStringFUTF16( IDS_SHARING_REMOTE_COPY_NOTIFICATION_TITLE_IMAGE_CONTENT, - base::ASCIIToUTF16(kDeviceNameInMessage)), + kDeviceNameInMessage16), notification.title()); #if defined(OS_MAC)
diff --git a/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc b/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc index 693e453f..72d40ba 100644 --- a/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc +++ b/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc
@@ -25,7 +25,9 @@ const char kText[] = "clipboard text"; const char kEmptyDeviceName[] = ""; const char kDeviceNameInDeviceInfo[] = "DeviceNameInDeviceInfo"; +const char16_t kDeviceNameInDeviceInfo16[] = u"DeviceNameInDeviceInfo"; const char kDeviceNameInMessage[] = "DeviceNameInMessage"; +const char16_t kDeviceNameInMessage16[] = u"DeviceNameInMessage"; class SharedClipboardMessageHandlerTest : public SharedClipboardTestBase { public: @@ -96,7 +98,7 @@ EXPECT_EQ(GetClipboardText(), kText); EXPECT_EQ(l10n_util::GetStringFUTF16( IDS_CONTENT_CONTEXT_SHARING_SHARED_CLIPBOARD_NOTIFICATION_TITLE, - base::ASCIIToUTF16(kDeviceNameInDeviceInfo)), + kDeviceNameInDeviceInfo16), GetNotification().title()); } @@ -117,6 +119,6 @@ EXPECT_EQ(GetClipboardText(), kText); EXPECT_EQ(l10n_util::GetStringFUTF16( IDS_CONTENT_CONTEXT_SHARING_SHARED_CLIPBOARD_NOTIFICATION_TITLE, - base::ASCIIToUTF16(kDeviceNameInMessage)), + kDeviceNameInMessage16), GetNotification().title()); }
diff --git a/chrome/browser/sharing/shared_clipboard/shared_clipboard_utils_unittest.cc b/chrome/browser/sharing/shared_clipboard/shared_clipboard_utils_unittest.cc index fce3fa8..6dcb32d 100644 --- a/chrome/browser/sharing/shared_clipboard/shared_clipboard_utils_unittest.cc +++ b/chrome/browser/sharing/shared_clipboard/shared_clipboard_utils_unittest.cc
@@ -34,8 +34,8 @@ namespace { -const char kEmptyText[] = ""; -const char kText[] = "Some text to copy to phone device."; +const char16_t kEmptyText[] = u""; +const char16_t kText[] = u"Some text to copy to phone device."; class MockSharingDeviceRegistration : public SharingDeviceRegistration { public: @@ -84,39 +84,34 @@ TEST_F(SharedClipboardUtilsTest, UIFlagDisabled_DoNotShowMenu) { scoped_feature_list_.InitAndDisableFeature(kSharedClipboardUI); - EXPECT_FALSE( - ShouldOfferSharedClipboard(&profile_, base::ASCIIToUTF16(kText))); + EXPECT_FALSE(ShouldOfferSharedClipboard(&profile_, kText)); } TEST_F(SharedClipboardUtilsTest, IncognitoProfile_DoNotShowMenu) { scoped_feature_list_.InitAndEnableFeature(kSharedClipboardUI); EXPECT_FALSE(ShouldOfferSharedClipboard( - profile_.GetPrimaryOTRProfile(/*create_if_needed=*/true), - base::ASCIIToUTF16(kText))); + profile_.GetPrimaryOTRProfile(/*create_if_needed=*/true), kText)); } TEST_F(SharedClipboardUtilsTest, EmptyClipboardProtocol_DoNotShowMenu) { scoped_feature_list_.InitAndEnableFeature(kSharedClipboardUI); - EXPECT_FALSE( - ShouldOfferSharedClipboard(&profile_, base::ASCIIToUTF16(kEmptyText))); + EXPECT_FALSE(ShouldOfferSharedClipboard(&profile_, kEmptyText)); } TEST_F(SharedClipboardUtilsTest, ClipboardProtocol_ShowMenu) { scoped_feature_list_.InitAndEnableFeature(kSharedClipboardUI); - EXPECT_TRUE(ShouldOfferSharedClipboard(&profile_, base::ASCIIToUTF16(kText))); + EXPECT_TRUE(ShouldOfferSharedClipboard(&profile_, kText)); } TEST_F(SharedClipboardUtilsTest, NoSharingService_DoNotShowMenu) { scoped_feature_list_.InitAndEnableFeature(kSharedClipboardUI); create_service_ = false; - EXPECT_FALSE( - ShouldOfferSharedClipboard(&profile_, base::ASCIIToUTF16(kText))); + EXPECT_FALSE(ShouldOfferSharedClipboard(&profile_, kText)); } TEST_F(SharedClipboardUtilsTest, EnterprisePolicy_Disabled) { scoped_feature_list_.InitAndEnableFeature(kSharedClipboardUI); // Set the enterprise policy to false: profile_.GetPrefs()->SetBoolean(prefs::kSharedClipboardEnabled, false); - EXPECT_FALSE( - ShouldOfferSharedClipboard(&profile_, base::ASCIIToUTF16(kText))); + EXPECT_FALSE(ShouldOfferSharedClipboard(&profile_, kText)); }
diff --git a/chrome/browser/sharing/sharing_service_factory.cc b/chrome/browser/sharing/sharing_service_factory.cc index 548abbb..2de124b 100644 --- a/chrome/browser/sharing/sharing_service_factory.cc +++ b/chrome/browser/sharing/sharing_service_factory.cc
@@ -113,7 +113,7 @@ instance_id_service->driver(), sync_service); auto web_push_sender = std::make_unique<WebPushSender>( - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); SharingMessageBridge* message_bridge = SharingMessageBridgeFactory::GetForBrowserContext(profile);
diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/signin/chrome_signin_client.cc index 642edfd..76ca51b 100644 --- a/chrome/browser/signin/chrome_signin_client.cc +++ b/chrome/browser/signin/chrome_signin_client.cc
@@ -133,12 +133,12 @@ if (url_loader_factory_for_testing_) return url_loader_factory_for_testing_; - return content::BrowserContext::GetDefaultStoragePartition(profile_) + return profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); } network::mojom::CookieManager* ChromeSigninClient::GetCookieManager() { - return content::BrowserContext::GetDefaultStoragePartition(profile_) + return profile_->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); }
diff --git a/chrome/browser/signin/remove_local_account_browsertest.cc b/chrome/browser/signin/remove_local_account_browsertest.cc index 7ded833..b8e0b4f 100644 --- a/chrome/browser/signin/remove_local_account_browsertest.cc +++ b/chrome/browser/signin/remove_local_account_browsertest.cc
@@ -6,6 +6,7 @@ #include "base/run_loop.h" #include "base/test/bind.h" +#include "base/test/metrics/histogram_tester.h" #include "build/build_config.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/ui/browser.h" @@ -118,6 +119,7 @@ // Open a FakeGaia page that issues the desired HTTP response header with // Google-Accounts-RemoveLocalAccount. + base::HistogramTester histogram_tester; chrome::AddTabAt(browser(), fake_gaia_.GetDummyRemoveLocalAccountURL(kTestGaiaId), /*index=*/0, @@ -137,6 +139,9 @@ EXPECT_TRUE(updated_cookie_jar_info.accounts_are_fresh); EXPECT_THAT(updated_cookie_jar_info.signed_out_accounts, Not(Contains(ListedAccountMatchesGaiaId(kTestGaiaId)))); + + histogram_tester.ExpectUniqueSample("Signin.RemoveLocalAccountOutcome", + 0 /* kSuccess*/, 1); } } // namespace
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc index e5f8d42..9315cb8a9 100644 --- a/chrome/browser/signin/signin_promo.cc +++ b/chrome/browser/signin/signin_promo.cc
@@ -96,8 +96,7 @@ const auto signin_partition_config = content::StoragePartitionConfig::Create( browser_context, "chrome-signin", /* partition_name= */ "", /* in_memory= */ true); - return content::BrowserContext::GetStoragePartition(browser_context, - signin_partition_config); + return browser_context->GetStoragePartition(signin_partition_config); } signin_metrics::AccessPoint GetAccessPointForEmbeddedPromoURL(const GURL& url) {
diff --git a/chrome/browser/signin/signin_ui_util_unittest.cc b/chrome/browser/signin/signin_ui_util_unittest.cc index 9aa59863..323deb0e 100644 --- a/chrome/browser/signin/signin_ui_util_unittest.cc +++ b/chrome/browser/signin/signin_ui_util_unittest.cc
@@ -487,11 +487,12 @@ TEST_F(DiceSigninUiUtilTest, ShouldShowAnimatedIdentityOnOpeningWindow_ReturnsTrueForMultiProfiles) { const char kSecondProfile[] = "SecondProfile"; + const char16_t kSecondProfile16[] = u"SecondProfile"; const base::FilePath profile_path = profile_manager()->profiles_dir().AppendASCII(kSecondProfile); ProfileAttributesInitParams params; params.profile_path = profile_path; - params.profile_name = base::ASCIIToUTF16(kSecondProfile); + params.profile_name = kSecondProfile16; profile_manager()->profile_attributes_storage()->AddProfile( std::move(params));
diff --git a/chrome/browser/speech/chrome_speech_recognition_service.cc b/chrome/browser/speech/chrome_speech_recognition_service.cc index bd56b5a9..5476a4d 100644 --- a/chrome/browser/speech/chrome_speech_recognition_service.cc +++ b/chrome/browser/speech/chrome_speech_recognition_service.cc
@@ -52,8 +52,7 @@ params->is_trusted = false; params->automatically_assign_isolation_info = true; network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(context_) - ->GetNetworkContext(); + context_->GetDefaultStoragePartition()->GetNetworkContext(); network_context->CreateURLLoaderFactory( url_loader_factory.InitWithNewPipeAndPassReceiver(), std::move(params)); speech_recognition_service_->SetUrlLoaderFactory(
diff --git a/chrome/browser/speech/network_speech_recognizer_browsertest.cc b/chrome/browser/speech/network_speech_recognizer_browsertest.cc index dab26bfa..7cfbf93 100644 --- a/chrome/browser/speech/network_speech_recognizer_browsertest.cc +++ b/chrome/browser/speech/network_speech_recognizer_browsertest.cc
@@ -83,7 +83,9 @@ IN_PROC_BROWSER_TEST_F(NetworkSpeechRecognizerBrowserTest, RecognizeSpeech) { NetworkSpeechRecognizer recognizer( mock_speech_delegate_->GetWeakPtr(), - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcessIOThread(), "en" /* accept_language */, "en" /* locale */);
diff --git a/chrome/browser/speech/speech_recognition_service_browsertest.cc b/chrome/browser/speech/speech_recognition_service_browsertest.cc index c7d88d9..3c469c563 100644 --- a/chrome/browser/speech/speech_recognition_service_browsertest.cc +++ b/chrome/browser/speech/speech_recognition_service_browsertest.cc
@@ -16,6 +16,7 @@ #include "chrome/browser/speech/chrome_speech_recognition_service.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/pref_names.h" +#include "chrome/services/speech/soda/soda_test_paths.h" #include "chrome/services/speech/speech_recognition_recognizer_impl.h" #include "chrome/test/base/in_process_browser_test.h" #include "components/metrics/content/subprocess_metrics_provider.h" @@ -38,20 +39,8 @@ namespace speech { -constexpr base::FilePath::CharType kSodaResourcesDir[] = - FILE_PATH_LITERAL("third_party/soda/resources"); - -constexpr base::FilePath::CharType kSodaLanguagePackRelativePath[] = - FILE_PATH_LITERAL("en_us"); - -constexpr base::FilePath::CharType kSodaTestAudioRelativePath[] = - FILE_PATH_LITERAL("hey_google.wav"); - constexpr int kExpectedChannelCount = 1; -constexpr base::FilePath::CharType kSodaBinaryForTestingRelativePath[] = - FILE_PATH_LITERAL("libsoda_for_testing.so"); - // TODO: Should be a way to generate this, this seems way too brittle. const size_t kShMemSize = 82240; @@ -260,20 +249,21 @@ base::HistogramTester histograms; g_browser_process->local_state()->SetFilePath( prefs::kSodaBinaryPath, - test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(kSodaBinaryForTestingRelativePath)); + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(soda::kSodaTestBinaryRelativePath)); g_browser_process->local_state()->SetFilePath( prefs::kSodaEnUsConfigPath, - test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(kSodaLanguagePackRelativePath)); + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(soda::kSodaLanguagePackRelativePath)); PrefService* profile_prefs = browser()->profile()->GetPrefs(); profile_prefs->SetBoolean(prefs::kLiveCaptionEnabled, true); LaunchService(); std::string buffer; - auto audio_file = test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(base::FilePath(kSodaTestAudioRelativePath)); + auto audio_file = + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(base::FilePath(soda::kSodaTestAudioRelativePath)); { base::ScopedAllowBlockingForTesting allow_blocking; ASSERT_TRUE(base::PathExists(audio_file)); @@ -345,12 +335,12 @@ base::HistogramTester histograms; g_browser_process->local_state()->SetFilePath( prefs::kSodaBinaryPath, - test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(kSodaBinaryForTestingRelativePath)); + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(soda::kSodaTestBinaryRelativePath)); g_browser_process->local_state()->SetFilePath( prefs::kSodaEnUsConfigPath, - test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(kSodaLanguagePackRelativePath)); + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(soda::kSodaLanguagePackRelativePath)); PrefService* profile_prefs = browser()->profile()->GetPrefs(); // TODO(crbug.com/1173135): Disconnect from kLiveCaptionEnabled.
diff --git a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc index ca81ec5..afe8d21 100644 --- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc +++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
@@ -321,7 +321,7 @@ simple_loader_ = network::SimpleURLLoader::Create(std::move(resource_request), traffic_annotation); network::mojom::URLLoaderFactory* loader_factory = - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); simple_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
diff --git a/chrome/browser/ssl/sct_reporting_service.cc b/chrome/browser/ssl/sct_reporting_service.cc index 4aa5e7c3..3365474 100644 --- a/chrome/browser/ssl/sct_reporting_service.cc +++ b/chrome/browser/ssl/sct_reporting_service.cc
@@ -111,8 +111,7 @@ void SCTReportingService::SetReportingEnabled(bool enabled) { // Iterate over StoragePartitions for this Profile, and for each get the // NetworkContext and enable or disable SCT auditing. - content::BrowserContext::ForEachStoragePartition( - profile_, + profile_->ForEachStoragePartition( base::BindRepeating(&SetSCTAuditingEnabledForStoragePartition, enabled)); if (!enabled)
diff --git a/chrome/browser/ssl/sct_reporting_service_browsertest.cc b/chrome/browser/ssl/sct_reporting_service_browsertest.cc index 26546f3..3d16ee7a 100644 --- a/chrome/browser/ssl/sct_reporting_service_browsertest.cc +++ b/chrome/browser/ssl/sct_reporting_service_browsertest.cc
@@ -363,7 +363,9 @@ // Crash the NetworkService to force it to restart. SimulateNetworkServiceCrash(); // Flush the network interface to make sure it notices the crash. - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); g_browser_process->system_network_context_manager() ->FlushNetworkInterfaceForTesting();
diff --git a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc index 950196ec..cf3ff3f 100644 --- a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc +++ b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
@@ -1297,8 +1297,7 @@ network_service_test->SetTransportSecurityStateSource(80); content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); partition->GetNetworkContext()->EnableStaticKeyPinningForTesting(); } };
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc index d350740..7a0c71b 100644 --- a/chrome/browser/ssl/ssl_browsertest.cc +++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -8566,8 +8566,7 @@ void EnableStaticPins(int reporting_port) { mojo::ScopedAllowSyncCallForTesting allow_sync_call; content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition( - browser()->profile()); + browser()->profile()->GetDefaultStoragePartition(); partition->GetNetworkContext()->EnableStaticKeyPinningForTesting(); partition->FlushNetworkInterfaceForTesting();
diff --git a/chrome/browser/ssl/ssl_browsertest_util.cc b/chrome/browser/ssl/ssl_browsertest_util.cc index 504071b..e9e20db1 100644 --- a/chrome/browser/ssl/ssl_browsertest_util.cc +++ b/chrome/browser/ssl/ssl_browsertest_util.cc
@@ -196,8 +196,7 @@ const base::Time expiry = base::Time::Now() + base::TimeDelta::FromDays(1000); bool include_subdomains = false; mojo::ScopedAllowSyncCallForTesting allow_sync_call; - content::StoragePartition* partition = - content::BrowserContext::GetDefaultStoragePartition(context); + content::StoragePartition* partition = context->GetDefaultStoragePartition(); base::RunLoop run_loop; partition->GetNetworkContext()->AddHSTS(hostname, expiry, include_subdomains, run_loop.QuitClosure());
diff --git a/chrome/browser/storage_access_api/api_browsertest.cc b/chrome/browser/storage_access_api/api_browsertest.cc index fc1ef904..f287bc5 100644 --- a/chrome/browser/storage_access_api/api_browsertest.cc +++ b/chrome/browser/storage_access_api/api_browsertest.cc
@@ -566,7 +566,9 @@ base::Value(CONTENT_SETTING_ALLOW), "preference", /*incognito=*/false, base::Time()); - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->SetStorageAccessGrantSettings(settings, base::DoNothing());
diff --git a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc index 734d103..6cbf239 100644 --- a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc +++ b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc
@@ -197,7 +197,8 @@ // partition has updated and ack'd the update. This prevents a race where // the renderer could initiate a network request based on the response to this // request before the access grants have updated in the network service. - content::BrowserContext::GetDefaultStoragePartition(browser_context()) + browser_context() + ->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->SetStorageAccessGrantSettings( grants, base::BindOnce(std::move(callback), content_setting));
diff --git a/chrome/browser/supervised_user/child_accounts/child_account_service.cc b/chrome/browser/supervised_user/child_accounts/child_account_service.cc index dcdc992..7d0bd399 100644 --- a/chrome/browser/supervised_user/child_accounts/child_account_service.cc +++ b/chrome/browser/supervised_user/child_accounts/child_account_service.cc
@@ -337,7 +337,7 @@ void ChildAccountService::StartFetchingFamilyInfo() { family_fetcher_ = std::make_unique<FamilyInfoFetcher>( this, identity_manager_, - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); family_fetcher_->StartGetFamilyMembers(); }
diff --git a/chrome/browser/supervised_user/child_accounts/permission_request_creator_apiary.cc b/chrome/browser/supervised_user/child_accounts/permission_request_creator_apiary.cc index dddb065e..fe1e3a5 100644 --- a/chrome/browser/supervised_user/child_accounts/permission_request_creator_apiary.cc +++ b/chrome/browser/supervised_user/child_accounts/permission_request_creator_apiary.cc
@@ -99,9 +99,8 @@ PermissionRequestCreatorApiary::CreateWithProfile(Profile* profile) { auto* identity_manager = IdentityManagerFactory::GetForProfile(profile); return std::make_unique<PermissionRequestCreatorApiary>( - identity_manager, - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess()); + identity_manager, profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()); } bool PermissionRequestCreatorApiary::IsEnabled() const {
diff --git a/chrome/browser/supervised_user/kids_chrome_management/kids_chrome_management_client.cc b/chrome/browser/supervised_user/kids_chrome_management/kids_chrome_management_client.cc index 13648ba3..8cc3c80 100644 --- a/chrome/browser/supervised_user/kids_chrome_management/kids_chrome_management_client.cc +++ b/chrome/browser/supervised_user/kids_chrome_management/kids_chrome_management_client.cc
@@ -163,9 +163,8 @@ }; KidsChromeManagementClient::KidsChromeManagementClient(Profile* profile) { - url_loader_factory_ = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + url_loader_factory_ = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); identity_manager_ = IdentityManagerFactory::GetForProfile(profile); }
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc index 687659b4..55910ec 100644 --- a/chrome/browser/supervised_user/supervised_user_service.cc +++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -613,7 +613,7 @@ if (use_online_check != url_filter_.HasAsyncURLChecker()) { if (use_online_check) { url_filter_.InitAsyncURLChecker( - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); } else { url_filter_.ClearAsyncURLChecker(); @@ -677,7 +677,7 @@ } })"); - auto factory = content::BrowserContext::GetDefaultStoragePartition(profile_) + auto factory = profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); denylist_downloader_ = std::make_unique<FileDownloader>( url, path, false, std::move(factory),
diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc index bc9d68e..6a8e8add 100644 --- a/chrome/browser/sync/chrome_sync_client.cc +++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -236,7 +236,7 @@ std::make_unique<syncer::StandaloneTrustedVaultClient>( profile_->GetPath().Append(kTrustedVaultFilename), IdentityManagerFactory::GetForProfile(profile_), - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); #endif // defined(OS_ANDROID) }
diff --git a/chrome/browser/sync/profile_sync_service_factory.cc b/chrome/browser/sync/profile_sync_service_factory.cc index 83d6a5d8..1bcadf4d 100644 --- a/chrome/browser/sync/profile_sync_service_factory.cc +++ b/chrome/browser/sync/profile_sync_service_factory.cc
@@ -199,9 +199,8 @@ init_params.sync_client = std::move(sync_client); init_params.network_time_update_callback = base::BindRepeating(&UpdateNetworkTime); - init_params.url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(); + init_params.url_loader_factory = profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); init_params.network_connection_tracker = content::GetNetworkConnectionTracker(); init_params.channel = chrome::GetChannel();
diff --git a/chrome/browser/sync/test/integration/cookie_helper.cc b/chrome/browser/sync/test/integration/cookie_helper.cc index 4f56968..0b38b90 100644 --- a/chrome/browser/sync/test/integration/cookie_helper.cc +++ b/chrome/browser/sync/test/integration/cookie_helper.cc
@@ -35,7 +35,7 @@ /*same_party=*/false); network::mojom::CookieManager* cookie_manager = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); DCHECK(cookie_manager); @@ -51,7 +51,7 @@ void DeleteSigninCookies(Profile* profile) { DCHECK(profile); network::mojom::CookieManager* cookie_manager = - content::BrowserContext::GetDefaultStoragePartition(profile) + profile->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess(); DCHECK(cookie_manager);
diff --git a/chrome/browser/sync/test/integration/sync_test.cc b/chrome/browser/sync/test/integration/sync_test.cc index 580df97..323467e 100644 --- a/chrome/browser/sync/test/integration/sync_test.cc +++ b/chrome/browser/sync/test/integration/sync_test.cc
@@ -1091,10 +1091,9 @@ base::BindRepeating( &CreatePerUserTopicSubscriptionManager, profile_identity_provider.get(), profile->GetPrefs(), - base::RetainedRef( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess() - .get())), + base::RetainedRef(profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get())), instance_id_driver, profile->GetPrefs(), kInvalidationGCMSenderId); fcm_invalidation_service->Init();
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc index eb9181d..569d212 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc +++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
@@ -213,7 +213,7 @@ signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(profile); scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); extensions::ExtensionRegistry* extension_registry = extensions::ExtensionRegistry::Get(context);
diff --git a/chrome/browser/sync_file_system/sync_file_system_service.cc b/chrome/browser/sync_file_system/sync_file_system_service.cc index 0043fbc..b0d3903 100644 --- a/chrome/browser/sync_file_system/sync_file_system_service.cc +++ b/chrome/browser/sync_file_system/sync_file_system_service.cc
@@ -313,7 +313,7 @@ DCHECK(!origin.is_empty()); content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartitionForUrl(profile_, origin); + profile_->GetStoragePartitionForUrl(origin); storage::FileSystemContext* file_system_context = storage_partition->GetFileSystemContext(); local_service_->MaybeInitializeFileSystemContext(
diff --git a/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc b/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc index 2f0ecd7..f502bb32 100644 --- a/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc +++ b/chrome/browser/task_manager/providers/per_profile_worker_task_tracker.cc
@@ -20,7 +20,7 @@ DCHECK(profile); content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile); + profile->GetDefaultStoragePartition(); // Dedicated workers: content::DedicatedWorkerService* dedicated_worker_service =
diff --git a/chrome/browser/task_manager/providers/worker_task_provider_browsertest.cc b/chrome/browser/task_manager/providers/worker_task_provider_browsertest.cc index fcef145..a57e1e4a 100644 --- a/chrome/browser/task_manager/providers/worker_task_provider_browsertest.cc +++ b/chrome/browser/task_manager/providers/worker_task_provider_browsertest.cc
@@ -104,8 +104,8 @@ } content::ServiceWorkerContext* GetServiceWorkerContext(Browser* browser) { - return content::BrowserContext::GetDefaultStoragePartition( - browser->profile()) + return browser->profile() + ->GetDefaultStoragePartition() ->GetServiceWorkerContext(); }
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 3eee024..f085469a 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -2030,8 +2030,8 @@ "ash/launcher/shelf_spinner_controller.h", "ash/launcher/shelf_spinner_item_controller.cc", "ash/launcher/shelf_spinner_item_controller.h", - "ash/login_screen_client.cc", - "ash/login_screen_client.h", + "ash/login_screen_client_impl.cc", + "ash/login_screen_client_impl.h", "ash/login_screen_shown_observer.h", "ash/media_client_impl.cc", "ash/media_client_impl.h",
diff --git a/chrome/browser/ui/OWNERS b/chrome/browser/ui/OWNERS index 93c325fe..8cff068 100644 --- a/chrome/browser/ui/OWNERS +++ b/chrome/browser/ui/OWNERS
@@ -23,6 +23,9 @@ per-file avatar_*=file://components/signin/OWNERS per-file signin_*=file://components/signin/OWNERS +# Profiles +per-file profile_*=file://chrome/browser/profiles/OWNERS + per-file ui_features.cc=* per-file ui_features.h=*
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb index 53420d1c..a9815a5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Tik op 'n woord om oombliklik te soek of sien verwante handelinge</translation> <translation id="2760989362628427051">Skakel Donkertema aan wanneer jou toestel se Donkertema of Batterybespaarder aan is</translation> <translation id="2762000892062317888">sopas</translation> +<translation id="276969039800130567">Aangemeld as <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Raadpleeg <ph name="BEGIN_LINK" />Google-dienste<ph name="END_LINK" /> vir meer instellings wat verband hou met privaatheid, sekuriteit en data-insameling</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekondes oor</translation> <translation id="2779651927720337254">misluk</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Bestuur reaksies</translation> <translation id="5626134646977739690">Naam:</translation> <translation id="5628604359369369630">Ongelees – vanlyn beskikbaar</translation> +<translation id="5632627355679805402">Jou data is vanaf <ph name="TIME" /> met jou <ph name="BEGIN_LINK" />Google-wagwoord<ph name="END_LINK" /> geënkripteer. Voer dit in om sinkronisering te begin.</translation> <translation id="5639724618331995626">Laat alle werwe toe</translation> <translation id="5648166631817621825">Afgelope 7 dae</translation> <translation id="5655963694829536461">Deursoek jou aflaaie</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Gister nagegaan</translation> <translation id="6710213216561001401">Vorige</translation> <translation id="671481426037969117">Jou <ph name="FQDN" />-tydteller het uitgetel. Dit sal môre weer begin.</translation> +<translation id="6738516213925468394">Jou data is om <ph name="TIME" /> met jou <ph name="BEGIN_LINK" />sinkroniseringwagfrase<ph name="END_LINK" /> geënkripeer. Voer dit in om sinkronisering te begin.</translation> <translation id="6738867403308150051">Laai tans af …</translation> <translation id="6767294960381293877">Lys toestelle om 'n oortjie mee te deel, is teen halwe hoogte oopgemaak.</translation> <translation id="6783942555455976443">Stoor hierdie bladsy vir later en kry 'n onthounota</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb index b35996bb..009fc72e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">አንድ ቃል በቅጽበት ለመፈለግ ወይም ተዛማጅ እርምጃዎችን ለመመልከት አንድ ቃል መታ ያድርጉ</translation> <translation id="2760989362628427051">የእርስዎ መሣሪያ በጨለማ ገጽታ ላይ ሲሆን ወይም ባትሪ ቆጣሪ ሲበራ የጨለማ ገጽታን አብራ</translation> <translation id="2762000892062317888">አሁን</translation> +<translation id="276969039800130567">እንደ <ph name="USER_EMAIL_ADDRESS" /> ሆነው ገብተዋል።</translation> <translation id="2776236159752647997">ከግላዊነት፣ ደህንነት እና የውሂብ ስብስብ ጋር ለሚዛመዱ ተጨማሪ ቅንብሮች፣ <ph name="BEGIN_LINK" />የGoogle አገልግሎቶች<ph name="END_LINK" />ን ይመልከቱ</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ሰከንዶች ይቀራሉ</translation> <translation id="2779651927720337254">አልተሳካም</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">አጸፋ ምላሾችን ያቀናብሩ</translation> <translation id="5626134646977739690">ስም፦</translation> <translation id="5628604359369369630">ያልተነበበ - ከመስመር ውጪ ይገኛል</translation> +<translation id="5632627355679805402">የእርስዎ ውሂብ ከ<ph name="TIME" /> ጀምሮ በእርስዎ <ph name="BEGIN_LINK" />የGoogle ይለፍ ቃል<ph name="END_LINK" /> የተመሠጠረ ነው። ማሳመር ለመጀመር ያስገቡት።</translation> <translation id="5639724618331995626">ሁሉንም ጣቢያዎች ፍቀድ</translation> <translation id="5648166631817621825">ያለፉት 7 ቀኖች</translation> <translation id="5655963694829536461">የእርስዎን ውርዶች ይፈልጉ</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">ትላንትና ተፈትሿል</translation> <translation id="6710213216561001401">ቀዳሚ</translation> <translation id="671481426037969117">የእርስዎ <ph name="FQDN" /> ሰዓት ቆጣሪ ጊዜ አልቋል። ነገ እንደገና ይጀመራል።</translation> +<translation id="6738516213925468394">የእርስዎ ውሂብ በ<ph name="TIME" /> ላይ በእርስዎ <ph name="BEGIN_LINK" />የስምረት ይለፍ ሐረግ<ph name="END_LINK" /> ተመስጥሯል። ስምረትን ለመጀመር ያስገቡት።</translation> <translation id="6738867403308150051">በማውረድ ላይ…</translation> <translation id="6767294960381293877">በግማሽ ቁመቱ ላይ የተከፈተ ትር የሚጋሩ የመሣሪያዎች ዝርዝር።</translation> <translation id="6783942555455976443">ይህን ገጽ ለበኋላ ያስቀምጡ እና አስታዋሽ ያግኙ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb index b5850169..1dc81421 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">النقر على الكلمة للبحث عنها فورًا أو الاطلاع على الإجراءات ذات الصلة</translation> <translation id="2760989362628427051">تفعيل المظهر الداكن عند تفعيل المظهر الداكن للجهاز أو ميزة "توفير شحن البطارية"</translation> <translation id="2762000892062317888">الآن</translation> +<translation id="276969039800130567">تم تسجيل الدخول بحساب <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">لعرض مزيد من الإعدادات المتعلّقة بالخصوصية والأمان وجمع البيانات، يُرجى الاطّلاع على <ph name="BEGIN_LINK" />خدمات Google<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">عدد الثواني المتبقية: <ph name="SECONDS" /></translation> <translation id="2779651927720337254">تعذَّر التنزيل</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">إدارة التفاعلات</translation> <translation id="5626134646977739690">الاسم:</translation> <translation id="5628604359369369630">الصفحات غير المقروءة المتاحة بلا إنترنت</translation> +<translation id="5632627355679805402">تم ترميز بياناتك باستخدام <ph name="BEGIN_LINK" />كلمة مرور Google<ph name="END_LINK" /> اعتبارًا من. <ph name="TIME" />. يُرجى إدخالها لبدء المزامنة.</translation> <translation id="5639724618331995626">السماح بجميع المواقع</translation> <translation id="5648166631817621825">آخر 7 أيام</translation> <translation id="5655963694829536461">البحث في صفحة عمليات التنزيل</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">تمّ إجراء عملية التحقُّق أمس.</translation> <translation id="6710213216561001401">السابق</translation> <translation id="671481426037969117">انقضى وقت موقّت <ph name="FQDN" />، وسيبدأ عمله مرّةً أخرى غدًا.</translation> +<translation id="6738516213925468394">تم ترميز بياناتك باستخدام <ph name="BEGIN_LINK" />عبارة مرور المزامنة<ph name="END_LINK" /> في <ph name="TIME" />. يُرجى إدخالها لبدء المزامنة.</translation> <translation id="6738867403308150051">جارٍ التنزيل…</translation> <translation id="6767294960381293877">قائمة الأجهزة التي يمكن مشاركة علامة تبويب معها، مفتوحة على طول النصف السفلي من الشاشة.</translation> <translation id="6783942555455976443">حفظ هذه الصفحة لوقتٍ لاحق والحصول على تذكير</translation> @@ -918,7 +921,7 @@ <translation id="6955535239952325894">لقد تم إيقاف هذا الإعداد على متصفّحات مُدارة.</translation> <translation id="6963766334940102469">حذف الإشارات المرجعية</translation> <translation id="6979737339423435258">جميع الأوقات</translation> -<translation id="6981982820502123353">إمكانية الوصول</translation> +<translation id="6981982820502123353">تسهيل الاستخدام</translation> <translation id="6989267951144302301">تعذّر التنزيل</translation> <translation id="6995899638241819463">التحذير إذا تم الكشف عن كلمات المرور في عملية اختراق بيانات</translation> <translation id="7001056293070445572">هذا الملف كبير (<ph name="FILE_SIZE" />)</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb index d6c1b876..13cbeeb1 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -76,6 +76,7 @@ <translation id="147113415845704694">“আজি বতৰ কেনে?” বুলি সুধি চাওক</translation> <translation id="1477626028522505441">ছার্ভাৰৰ সমস্যাৰ বাবে <ph name="FILE_NAME" /> ডাউনল'ড কৰিব পৰা নগ'ল।</translation> <translation id="1492417797159476138">এই ছাইটটোৰ বাবে আপুনি ইতিমধ্যে এই ব্যৱহাৰকাৰীৰ নামটো ছেভ কৰিছে</translation> +<translation id="1493287004536771723">আপুনি <ph name="SITE_NAME" />ক ফ'ল’ কৰি আছে</translation> <translation id="1506061864768559482">সন্ধান ইঞ্জিন</translation> <translation id="1513352483775369820">বুকমার্কবোৰ আৰু ৱেব ইতিহাস</translation> <translation id="1513858653616922153">পাছৱৰ্ড মচক</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">ক্ষিপ্ৰভাৱে সন্ধান কৰিবলৈ আৰু প্ৰাসংগিক কার্যসমূহ চাবলৈ কোনো এটা শব্দত টিপক</translation> <translation id="2760989362628427051">আপোনাৰ ডিভাইচত গাঢ় থীম অথবা বেটাৰী সঞ্চয়কাৰী অন থাকিলে গাঢ় ৰঙৰ থীম অন কৰক</translation> <translation id="2762000892062317888">এইমাত্ৰ</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> হিচাপে ছাইন ইন কৰিছে।</translation> <translation id="2776236159752647997">গোপনীয়তা, সুৰক্ষা আৰু ডেটা সংগ্ৰহ সম্পৰ্কীয় অধিক ছেটিংসমূহৰ বাবে <ph name="BEGIN_LINK" />Google সেৱাসমূহ<ph name="END_LINK" /> চাওক</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ছেকেণ্ড বাকী আছে</translation> <translation id="2779651927720337254">ডাউনল'ড কৰিব পৰা নগ'ল</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">আপোনাৰ <ph name="BEGIN_LINK" />Google Account<ph name="END_LINK" />ত ছেভ কৰি থোৱা পাছৱর্ডসমূহ চাওক আৰু পৰিচালনা কৰক</translation> <translation id="2818669890320396765">আপোনাৰ সকলো ডিভাইচতে নিজৰ বুকমার্কসমূহ পাবলৈ ছাইন ইন কৰি ছিংক কৰা সুবিধাটো অন কৰক</translation> <translation id="2827278682606527653">Feed card menu half height</translation> +<translation id="2830783625999891985">ক্লিপব'ৰ্ডৰ সমল লুকুওৱা হ’ল</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" />ক আনফ’ল’ কৰিলে</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{১ দিনৰ আগত পৰীক্ষা কৰা হৈছিল}one{# দিনৰ আগত পৰীক্ষা কৰা হৈছিল}other{# দিনৰ আগত পৰীক্ষা কৰা হৈছিল}}</translation> <translation id="2842985007712546952">মূল ফ’ল্ডাৰ</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> কে.বি. উপলব্ধ</translation> <translation id="3549657413697417275">আপোনাৰ ব্ৰাউজিং ইতিহাসত সন্ধান কৰক</translation> <translation id="3557336313807607643">সর্ম্পকসূচীত যোগ কৰক</translation> +<translation id="3563767357928833671">ক্লিপব'ৰ্ডৰ সমল দেখুওৱা হৈছে</translation> <translation id="3566923219790363270">Chromeএ এতিয়াও VR সাজু কৰি আছে। Chrome পিছত ৰিষ্টার্ট কৰক।</translation> <translation id="3568688522516854065">আপোনাৰ অন্য ডিভাইচসমূহৰ পৰা নিজৰ টেবসমূহ পাবলৈ ছাইন ইন আৰু ছিংক কৰা সুবিধাটো অন কৰক</translation> <translation id="3587482841069643663">সকলো</translation> @@ -542,6 +546,7 @@ <translation id="4684427112815847243">সকলো ছিংক কৰক</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 আৰু <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />টা}one{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 আৰু <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />টা}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 আৰু <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />টা}}</translation> <translation id="4696983787092045100">আপোনাৰ ডিভাইচসমূহলৈ পাঠ পঠিয়াওক</translation> +<translation id="4697543623252708062">সোনকালে, আপুনি এটা নতুন টেব খুলিলে <ph name="SITE_NAME" />ৰ কাহিনী দেখা পাব। আপুনি ফ'ল' কৰা ছাইট পৰিচালনা কৰকত আপুনি ফ'ল' কৰা ছাইট পৰিচালনা কৰিব পাৰে।</translation> <translation id="4699172675775169585">কেশ্ব প্ৰতিচ্ছবি আৰু ফাইল</translation> <translation id="4714588616299687897">আপোনাৰ ডেটা ৬০% পর্যন্ত ৰাহি কৰক</translation> <translation id="4716066120200945007">ফ’ল’ কৰি থকা হৈছে</translation> @@ -691,6 +696,7 @@ <translation id="562289928968387744">প্ৰতিক্ৰিয়া পৰিচালনা কৰক</translation> <translation id="5626134646977739690">নাম:</translation> <translation id="5628604359369369630">নপঢ়া - অফলাইনত উপলব্ধ</translation> +<translation id="5632627355679805402">আপোনাৰ ডেটা <ph name="BEGIN_LINK" />Google পাছৱৰ্ড<ph name="END_LINK" />ৰ সৈতে <ph name="TIME" /> পর্যন্ত এনক্ৰিপ্ট কৰা হৈছে। ছিংক কৰা আৰম্ভ কৰিবলৈ এইটো দিয়ক।</translation> <translation id="5639724618331995626">সকলো ছাইটকে অনুমতি দিয়ক</translation> <translation id="5648166631817621825">যোৱা ৭ দিনত</translation> <translation id="5655963694829536461">আপোনাৰ ডাউনল’ড সন্ধান কৰক</translation> @@ -883,6 +889,7 @@ <translation id="670498945988402717">কালি পৰীক্ষা কৰা হৈছিল</translation> <translation id="6710213216561001401">পূৰ্বৱৰ্তী</translation> <translation id="671481426037969117">আপোনাৰ <ph name="FQDN" />ৰ টাইমাৰৰ সময় শেষ হ’ল। এইটো কাইলৈ পুনৰ আৰম্ভ হ’ব।</translation> +<translation id="6738516213925468394">আপোনাৰ ডেটাখিনি আপুনি <ph name="BEGIN_LINK" />ছিংক কৰি থোৱা পাছফ্ৰে'জ<ph name="END_LINK" />ৰ সহায়ত <ph name="TIME" />ত এনক্রিপ্ট কৰা হৈছিল। ছিংক আৰম্ভ কৰিবলৈ এইটো দিয়ক।</translation> <translation id="6738867403308150051">ডাউনল’ড কৰি থকা হৈছে…</translation> <translation id="6767294960381293877">টেব এটা শ্বেয়াৰ কৰিবলৈ আধাকৈ খোল খোৱা ডিভাইচসমূহৰ সূচী।</translation> <translation id="6783942555455976443">পৰৱৰ্তী সময়ৰ কাৰণে এই পৃষ্ঠাখন ছেভ কৰি ৰাখক আৰু এটা ৰিমাইণ্ডাৰ পাওক</translation> @@ -1212,6 +1219,7 @@ <translation id="8993760627012879038">ইনক’গনিট’ ম’ডত এটা নতুন টেব খোলক</translation> <translation id="8996847606757455498">অন্য এক প্ৰদানকাৰী বাছনি কৰক</translation> <translation id="8998729206196772491">আপুনি <ph name="MANAGED_DOMAIN" />এ পৰিচালনা কৰা এটা একাউণ্টৰ জৰিয়তে ছাইন ইন কৰিছে আৰু সেইটোৰ প্ৰশাসকে আপোনাৰ Chrome ডেটা নিয়ন্ত্ৰণ কৰিবলৈ সুবিধা দিছে। আপোনাৰ ডেটা এই একাউণ্টটোৰ সৈতে স্থায়ীভাৱে সংযুক্তহৈ থাকিব। Chromeৰ পৰা ছাইন আউট কৰিলে আপোনাৰ ডেটা মচা যাব কিন্ত সেইবোৰ আপোনাৰ Google একাউণ্টত জমা হৈয়ে থাকিব।</translation> +<translation id="9000233047676755924">আপুনি এতিয়া এটা নতুন টেব খুলিলে <ph name="SITE_NAME" />ৰ কাহিনী দেখা পাব। আপুনি ফ'ল' কৰা ছাইট পৰিচালনা কৰকত আপুনি ফ'ল' কৰা ছাইট পৰিচালনা কৰিব পাৰে।</translation> <translation id="9022774213089566801">সঘনাই যোৱা</translation> <translation id="9028914725102941583">সমগ্ৰ ডিভাইচত শ্বেয়াৰ কৰিবলৈ ছিংক অন কৰক</translation> <translation id="9040142327097499898">জাননীৰ অনুমতি দিয়া হৈছে। এই ডিভাইচটোৰ বাবে অৱস্থান অফ কৰা আছে।</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb index 999297d..c174405 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Dərhal axtarmaq və əlaqədar fəaliyyətə baxmaq üçün söz yazın</translation> <translation id="2760989362628427051">Cihazın tünd tema və ya Enerjiyə Qənaət rejimi aktiv olduqda tünd temanı aktiv edin</translation> <translation id="2762000892062317888">indicə</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> olaraq hesaba girdi.</translation> <translation id="2776236159752647997">Məxfilik, təhlükəsizlik və datanın toplanması ilə bağlı daha çox ayarlar üçün <ph name="BEGIN_LINK" />Google xidmətləri<ph name="END_LINK" /> səhifəsinə daxil olun.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> saniyə qaldı</translation> <translation id="2779651927720337254">alınmadı</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Reaksiyalarıi idarə edin</translation> <translation id="5626134646977739690">Ad:</translation> <translation id="5628604359369369630">Oxunmayıb - Oflayn əlçatandır</translation> +<translation id="5632627355679805402">Data <ph name="TIME" /> tarixindən etibarən <ph name="BEGIN_LINK" />Google parolu<ph name="END_LINK" /> ilə şifrələnib. Sinxronizasiyanı başlatmaq üçün daxil edin.</translation> <translation id="5639724618331995626">Bütün saytlara icazə verin</translation> <translation id="5648166631817621825">Son 7 gün</translation> <translation id="5655963694829536461">Endirmələri axtarın</translation> @@ -886,6 +888,7 @@ <translation id="670498945988402717">Dünən yoxlanılıb</translation> <translation id="6710213216561001401">Əvvəlki</translation> <translation id="671481426037969117"><ph name="FQDN" /> taymerinin vaxtı bitir. Sabah yenidən başlayacaq.</translation> +<translation id="6738516213925468394">Data <ph name="TIME" /> tarixində <ph name="BEGIN_LINK" />sinxronizasiya parolu<ph name="END_LINK" /> ilə şifrələnib. Sinxronizasiyanı başlatmaq üçün klikləyin.</translation> <translation id="6738867403308150051">Endirilir...</translation> <translation id="6767294960381293877">Yarı hündürlükdə açılan tabı paylaşa biləcəyiniz cihazların siyahısı.</translation> <translation id="6783942555455976443">Bu səhifəyə daha sonra baxmaq üçün yadda saxlayın və xatırladıcı qəbul edin</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb index 4f72c93a..1bc9682 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Каб выканаць імгненны пошук або паглядзець звязаныя са словам дзеянні, націсніце на яго</translation> <translation id="2760989362628427051">Выкарыстоўваць цёмную тэму, калі на прыладзе ўключаны рэжым эканоміі зараду або цёмная тэма</translation> <translation id="2762000892062317888">толькі што</translation> +<translation id="276969039800130567">Вы ўвайшлі як <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Дадатковыя налады прыватнасці, бяспекі і збору даных глядзіце ў раздзеле <ph name="BEGIN_LINK" />сэрвісы Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Засталося <ph name="SECONDS" /> с</translation> <translation id="2779651927720337254">не выканана</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Кіраваць рэакцыямі</translation> <translation id="5626134646977739690">Назва:</translation> <translation id="5628604359369369630">Непрачытана – Даступна па-за сеткай</translation> +<translation id="5632627355679805402">Вашы даныя былі зашыфраваны <ph name="BEGIN_LINK" />паролем Google<ph name="END_LINK" /> <ph name="TIME" />. Увядзіце яго, каб запусціць сінхранізацыю.</translation> <translation id="5639724618331995626">Дазволіць усе сайты</translation> <translation id="5648166631817621825">За апошнія 7 дзён</translation> <translation id="5655963694829536461">Шукаць у спампоўках</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Праверка праводзілася ўчора</translation> <translation id="6710213216561001401">Назад</translation> <translation id="671481426037969117">Спрацаваў таймер праграмы "<ph name="FQDN" />". Заўтра ён зноў будзе запушчаны.</translation> +<translation id="6738516213925468394">Даныя былі зашыфраваны з дапамогай <ph name="BEGIN_LINK" />фразы-пароля для сінхранізацыі<ph name="END_LINK" /> <ph name="TIME" />. Увядзіце яе, каб пачаць сінхранізацыю.</translation> <translation id="6738867403308150051">Ідзе спампоўка…</translation> <translation id="6767294960381293877">Спіс прылад, з якімі можна абагуліць укладку, разгорнуты на палову экрана.</translation> <translation id="6783942555455976443">Захавайце старонку, каб прагледзець яе пазней. Вы атрымаеце напамін</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb index 6810fe01..d604f5ef 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Докоснете дума, за да извършите незабавно търсене, или вижте свързаните действия</translation> <translation id="2760989362628427051">Включване на тъмната тема, когато тъмната тема на устройството или режимът за запазване на батерията в него са включени</translation> <translation id="2762000892062317888">току-що</translation> +<translation id="276969039800130567">Влезли сте като <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">За още настройки за поверителността, сигурността и събирането на данни вижте <ph name="BEGIN_LINK" />услуги на Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Остават <ph name="SECONDS" /> сек</translation> <translation id="2779651927720337254">неуспешно</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Управление на реакциите</translation> <translation id="5626134646977739690">Име:</translation> <translation id="5628604359369369630">Непрочетено – налице офлайн</translation> +<translation id="5632627355679805402">Данните ви са шифровани с <ph name="BEGIN_LINK" />паролата ви за Google<ph name="END_LINK" /> от <ph name="TIME" />. Въведете я, за да стартирате синхронизирането.</translation> <translation id="5639724618331995626">Разрешаване на всички сайтове</translation> <translation id="5648166631817621825">Последните 7 дни</translation> <translation id="5655963694829536461">Търсете в изтеглянията</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Проверено вчера</translation> <translation id="6710213216561001401">Предишно</translation> <translation id="671481426037969117">Таймерът ви за <ph name="FQDN" /> изтече и ще се стартира отново утре.</translation> +<translation id="6738516213925468394">На <ph name="TIME" /> данните ви бяха шифровани с <ph name="BEGIN_LINK" />пропуска ви за синхронизиране<ph name="END_LINK" />. Въведете го, за да стартирате синхронизирането.</translation> <translation id="6738867403308150051">Изтегля се…</translation> <translation id="6767294960381293877">Списъкът с устройства, с които да се сподели даден раздел, е отворен на половин височина.</translation> <translation id="6783942555455976443">Запазване на тази страница за по-късно и получаване на напомняне</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb index a7b4747..49bd1b3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -76,6 +76,7 @@ <translation id="147113415845704694">বলে দেখুন, "আজকের আবহাওয়া কেমন?"</translation> <translation id="1477626028522505441">সার্ভার সমস্যার কারণে <ph name="FILE_NAME" /> ডাউনলোড করা যায়নি।</translation> <translation id="1492417797159476138">আপনি আগেই এই সাইটের জন্য ইউজারনেমটি সেভ করেছেন</translation> +<translation id="1493287004536771723">আপনি <ph name="SITE_NAME" /> ফলো করছেন</translation> <translation id="1506061864768559482">সার্চ ইঞ্জিন</translation> <translation id="1513352483775369820">বুকমার্কগুলি এবং ওয়েব ইতিহাস</translation> <translation id="1513858653616922153">পাসওয়ার্ড মুছুন</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">ঝটপট সার্চ এবং সম্পর্কিত অ্যাকশন দেখতে একটি শব্দ ট্যাপ করুন</translation> <translation id="2760989362628427051">আপনার ডিভাইসে গাঢ় থিম বা ব্যাটারি সেভার চালু থাকলে, গাঢ় থিম চালু করুন</translation> <translation id="2762000892062317888">এখনই</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> রূপে প্রবেশ করেছেন৷</translation> <translation id="2776236159752647997">আপনার গোপনীয়তা, নিরাপত্তা ও ডেটা সংগ্রহের সাথে সম্পর্কিত আরও সেটিংসের জন্য <ph name="BEGIN_LINK" />Google পরিষেবা<ph name="END_LINK" /> দেখুন</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> সেকেন্ড বাকি আছে</translation> <translation id="2779651927720337254">করা যায়নি</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">আপনার <ph name="BEGIN_LINK" />Google অ্যাকাউন্ট<ph name="END_LINK" />-এ সেভ করা পাসওয়ার্ড দেখুন এবং পরিচালনা করুন</translation> <translation id="2818669890320396765">আপনার সমস্ত ডিভাইসে বুকমার্কগুলি পেতে সাইন-ইন করে সিঙ্ক বিকল্প চালু করুন</translation> <translation id="2827278682606527653">স্ক্রিনের অর্ধেক উচ্চতা পর্যন্ত ফিড কার্ড মেনু খোলা আছে</translation> +<translation id="2830783625999891985">ক্লিপবোর্ডের কন্টেন্ট লুকানো আছে</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" /> ফলো করা বন্ধ করেছেন</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{১ দিন আগে চেক করা হয়েছে}one{# দিন আগে চেক করা হয়েছে}other{# দিন আগে চেক করা হয়েছে}}</translation> <translation id="2842985007712546952">অভিভাবক ফোল্ডার</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> কেবি available</translation> <translation id="3549657413697417275">আপনার ইতিহাস খুঁজুন</translation> <translation id="3557336313807607643">পরিচিতিতে যোগ করুন</translation> +<translation id="3563767357928833671">ক্লিপবোর্ডের কন্টেন্ট দেখানো হয়েছে</translation> <translation id="3566923219790363270">ভি আর সমর্থনের জন্য Chrome-এ এখনও কাজ চলছে। পরে Chrome রিস্টার্ট করুন।</translation> <translation id="3568688522516854065">আপনার অন্যান্য ডিভাইস থেকে ট্যাবগুলি পেতে সাইন-ইন করে সিঙ্ক বিকল্প চালু করুন</translation> <translation id="3587482841069643663">সকল</translation> @@ -544,6 +548,7 @@ <translation id="4684427112815847243">সবকিছু সিঙ্ক করুন</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 এবং <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> আরও অনেক}one{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 এবং <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> আরও অনেক}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 এবং <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> আরও অনেক}}</translation> <translation id="4696983787092045100">আপনার ডিভাইসে টেক্সট পাঠান</translation> +<translation id="4697543623252708062">শীঘ্রই আপনি নতুন কোনও ট্যাব খুললেই, <ph name="SITE_NAME" />-এর গল্প পড়তে পারবেন। 'ফলো করা সাইট ম্যানেজ করুন' বিকল্প থেকে আপনার ফলো করা সাইটগুলি নিয়ন্ত্রণ করতে পারেন।</translation> <translation id="4699172675775169585">ক্যাশে করা ছবি এবং ফাইলগুলি</translation> <translation id="4714588616299687897">আপনার ডেটা ৬০% পর্যন্ত সেভ করুন</translation> <translation id="4716066120200945007">ফলো করছেন</translation> @@ -693,6 +698,7 @@ <translation id="562289928968387744">প্রতিক্রিয়া ম্যানেজ করুন</translation> <translation id="5626134646977739690">নাম:</translation> <translation id="5628604359369369630">পড়া হয়নি - অফলাইনে উপলভ্য</translation> +<translation id="5632627355679805402"><ph name="TIME" />-এ আপনার <ph name="BEGIN_LINK" />Google পাসওয়ার্ড<ph name="END_LINK" /> দিয়ে ডেটা এনক্রিপ্ট করা হয়েছিল। সিঙ্ক শুরু করতে এটি লিখুন।</translation> <translation id="5639724618331995626">সমস্ত সাইটকে অনুমতি দিন</translation> <translation id="5648166631817621825">গত ৭ দিন</translation> <translation id="5655963694829536461">আপনার ডাউনলোডগুলি খুঁজুন</translation> @@ -886,6 +892,7 @@ <translation id="670498945988402717">গতকাল চেক করা হয়েছে</translation> <translation id="6710213216561001401">আগের</translation> <translation id="671481426037969117">আপনার <ph name="FQDN" /> টাইমারের মেয়াদ পেরিয়ে গেছে। আগামীকাল আবার এটি শুরু হবে।</translation> +<translation id="6738516213925468394"><ph name="TIME" />-এ আপনার <ph name="BEGIN_LINK" />সিঙ্ক পাসফ্রেজ<ph name="END_LINK" /> দিয়ে ডেটা এনক্রিপ্ট করা হয়েছিল। সিঙ্ক শুরু করতে সেটি লিখুন।</translation> <translation id="6738867403308150051">ডাউনলোড হচ্ছে...</translation> <translation id="6767294960381293877">ট্যাব শেয়ার করা যাবে এমন ডিভাইসের সূচি অর্ধেক স্ক্রিন জুড়ে খোলা হয়েছে।</translation> <translation id="6783942555455976443">পরে দেখার জন্য এই পৃষ্ঠা সেভ করে রাখুন ও রিমাইন্ডার পান</translation> @@ -1216,6 +1223,7 @@ <translation id="8993760627012879038">ছদ্মবেশী মোডে একটি নতুন ট্যাব খুলুন</translation> <translation id="8996847606757455498">অন্য একটি পরিষেবা প্রদানকারী বেছে নিন</translation> <translation id="8998729206196772491">আপনি <ph name="MANAGED_DOMAIN" /> দ্বারা পরিচালিত একটি অ্যাকাউন্টের মাধ্যমে সাইন-ইন করছেন এবং এর অ্যাডমিনিস্ট্রেটরকে আপনার Chrome ডেটা নিয়ন্ত্রণ করতে দিচ্ছেন৷ আপনার ডেটা এই অ্যাকাউন্টের সাথে স্থায়ীভাবে আবদ্ধ হবে৷ Chrome থেকে সাইন-আউট করলে এই ডিভাইস থেকে আপনার ডেটা মুছে ফেলা হবে, কিন্তু এটা আপনার Google অ্যাকাউন্টে সঞ্চিত থাকবে।</translation> +<translation id="9000233047676755924">এখন আপনি নতুন কোনও ট্যাব খুললেই, <ph name="SITE_NAME" />-এর গল্প পড়তে পারবেন। 'ফলো করা সাইট ম্যানেজ করুন' বিকল্প থেকে আপনার ফলো করা সাইটগুলি নিয়ন্ত্রণ করতে পারেন।</translation> <translation id="9022774213089566801">আপনি প্রায়ই দেখেন</translation> <translation id="9028914725102941583">বিভিন্ন ডিভাইসের জুড়ে শেয়ার করার জন্য সিঙ্ক ফিচার চালু করুন</translation> <translation id="9040142327097499898">বিজ্ঞপ্তির অনুমতি দেওয়া আছে। এই ডিভাইসে লোকেশন বন্ধ করা আছে।</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb index 089a8e7..d5ecd7b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Dodirnite riječ za instant pretraživanje ili pogledajte srodne radnje</translation> <translation id="2760989362628427051">Uključuje tamnu temu kada je na uređaju uključena tamna tema ili Ušteda baterije</translation> <translation id="2762000892062317888">maloprije</translation> +<translation id="276969039800130567">Prijavljeni ste s računom <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Više postavki koje se odnose na privatnost, sigurnost i prikupljanje podataka možete pronaći u odjeljku <ph name="BEGIN_LINK" />Googleove usluge<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Preostalo je <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">neuspjelo</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Upravljajte reakcijama</translation> <translation id="5626134646977739690">Naziv:</translation> <translation id="5628604359369369630">Nepročitano – Dostupno offline</translation> +<translation id="5632627355679805402">Vaši podaci su šifrirani vašom <ph name="BEGIN_LINK" />lozinkom za Google<ph name="END_LINK" /> od <ph name="TIME" />. Unesite je da počnete sinhronizaciju.</translation> <translation id="5639724618331995626">Dozvoli sve web lokacije</translation> <translation id="5648166631817621825">Posljednjih 7 dana</translation> <translation id="5655963694829536461">Pretražite svoja preuzimanja</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Provjereno jučer</translation> <translation id="6710213216561001401">Nazad</translation> <translation id="671481426037969117">Tajmer aplikacije <ph name="FQDN" /> je istekao. Počet će ponovo sutra.</translation> +<translation id="6738516213925468394">Vaši podaci su šifrirani vašim <ph name="BEGIN_LINK" />izrazom za pristup sinhroniziranju<ph name="END_LINK" /> u <ph name="TIME" />. Unesite ga da započnete sinhronizaciju.</translation> <translation id="6738867403308150051">Preuzimanje…</translation> <translation id="6767294960381293877">Spisak uređaja s kojim će se dijeliti kartica je otvoren na pola visine.</translation> <translation id="6783942555455976443">Sačuvajte ovu stranicu za kasnije i primite podsjetnik</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb index be3b1a5..9b7f90b2 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Toca una paraula per fer una cerca a l'instant o per veure accions relacionades</translation> <translation id="2760989362628427051">Activa el tema fosc quan el teu dispositiu tingui activat aquest tema o el mode d'estalvi de bateria</translation> <translation id="2762000892062317888">ara mateix</translation> +<translation id="276969039800130567">Inici de sessió com a <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Per trobar més opcions de configuració relacionades amb la privadesa, la seguretat i la recollida de dades, consulta els <ph name="BEGIN_LINK" />serveis de Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Queden <ph name="SECONDS" /> segons</translation> <translation id="2779651927720337254">ha fallat</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Gestiona les reaccions</translation> <translation id="5626134646977739690">Nom:</translation> <translation id="5628604359369369630">No llegits - Disponible sense connexió</translation> +<translation id="5632627355679805402">Les teves dades s'han encriptat amb la <ph name="BEGIN_LINK" />contrasenya de Google<ph name="END_LINK" /> a partir del dia <ph name="TIME" />. Introdueix-la per començar la sincronització.</translation> <translation id="5639724618331995626">Permet tots els llocs</translation> <translation id="5648166631817621825">7 darrers dies</translation> <translation id="5655963694829536461">Cerca a les baixades</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Es va comprovar ahir</translation> <translation id="6710213216561001401">Anterior</translation> <translation id="671481426037969117">S'ha esgotat el temps definit al temporitzador per a <ph name="FQDN" />. Es tornarà a iniciar demà.</translation> +<translation id="6738516213925468394">Les teves dades es van encriptar el dia <ph name="TIME" /> amb la teva <ph name="BEGIN_LINK" />frase de contrasenya de sincronització<ph name="END_LINK" />. Introdueix-la per començar la sincronització.</translation> <translation id="6738867403308150051">S'està baixant...</translation> <translation id="6767294960381293877">La llista de dispositius amb què es compartirà una pestanya s'ha obert a mitja alçada.</translation> <translation id="6783942555455976443">Desa aquesta pàgina per a més tard i rep un recordatori</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb index 9f4290e8f..9aea36d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Klepnutím na slovo můžete okamžitě vyhledávat nebo zobrazit související akce</translation> <translation id="2760989362628427051">Zapnout tmavý motiv, když je na zařízení zapnutý tmavý motiv nebo spořič baterie</translation> <translation id="2762000892062317888">právě teď</translation> +<translation id="276969039800130567">Jste přihlášeni pomocí účtu <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Další nastavení související s ochranou soukromí, zabezpečením a shromažďováním dat najdete v části <ph name="BEGIN_LINK" />Služby Google<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">Zbývá: <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">nezdařilo se</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Spravovat reakce</translation> <translation id="5626134646977739690">Jméno:</translation> <translation id="5628604359369369630">Nepřečteno – k dispozici offline</translation> +<translation id="5632627355679805402">Vaše údaje byly zašifrovány pomocí <ph name="BEGIN_LINK" />hesla účtu Google<ph name="END_LINK" /> ze dne <ph name="TIME" />. Chcete-li spustit synchronizaci, zadejte jej.</translation> <translation id="5639724618331995626">Povolit všechny weby</translation> <translation id="5648166631817621825">Posledních 7 dní</translation> <translation id="5655963694829536461">Hledat ve stažených souborech</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Zkontrolováno včera</translation> <translation id="6710213216561001401">Předchozí</translation> <translation id="671481426037969117">Časovač <ph name="FQDN" /> vypršel. Spustí se zase zítra.</translation> +<translation id="6738516213925468394">Vaše data byla <ph name="TIME" /> zašifrována pomocí <ph name="BEGIN_LINK" />heslové fráze pro synchronizaci<ph name="END_LINK" />. Chcete-li zahájit synchronizaci, zadejte ji.</translation> <translation id="6738867403308150051">Stahování…</translation> <translation id="6767294960381293877">Seznam zařízení, se kterými se má karta sdílet, otevřený na poloviční výšku.</translation> <translation id="6783942555455976443">Uložit stránku na později a odeslat připomenutí</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb index 15f778a..b032f3e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Tryk på et ord for at søge øjeblikkeligt eller se relaterede handlinger</translation> <translation id="2760989362628427051">Aktivér mørkt tema, når enhedens mørke tema eller batterisparefunktion er aktiveret</translation> <translation id="2762000892062317888">lige nu</translation> +<translation id="276969039800130567">Logget ind som <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Du kan finde flere indstillinger vedrørende privatliv, sikkerhed og dataindsamling under <ph name="BEGIN_LINK" />Google-tjenester<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder tilbage</translation> <translation id="2779651927720337254">mislykkedes</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Administrer reaktioner</translation> <translation id="5626134646977739690">Navn:</translation> <translation id="5628604359369369630">Ulæst – Tilgængelig offline</translation> +<translation id="5632627355679805402">Dine data er krypteret med din <ph name="BEGIN_LINK" />Google-adgangskode<ph name="END_LINK" /> fra <ph name="TIME" />. Angiv den for at starte synkroniseringen.</translation> <translation id="5639724618331995626">Tillad alle websites</translation> <translation id="5648166631817621825">De seneste syv dage</translation> <translation id="5655963694829536461">Søg i dine downloads</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Tjekket i går</translation> <translation id="6710213216561001401">Forrige</translation> <translation id="671481426037969117">Din timer for <ph name="FQDN" /> udløb. Den starter igen i morgen.</translation> +<translation id="6738516213925468394">Dine data blev krypteret med din <ph name="BEGIN_LINK" />adgangssætning til synkronisering<ph name="END_LINK" /> <ph name="TIME" />. Indtast adgangssætningen for at starte synkroniseringen.</translation> <translation id="6738867403308150051">Downloader…</translation> <translation id="6767294960381293877">Åben liste i halv højde over enheder, der skal deles en fane med.</translation> <translation id="6783942555455976443">Gem denne side til senere, og få en påmindelse</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb index 6109faf..3dc11e5f 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
@@ -76,7 +76,7 @@ <translation id="147113415845704694">Sagen Sie zum Beispiel „Wie ist das Wetter heute?“</translation> <translation id="1477626028522505441"><ph name="FILE_NAME" /> konnte aufgrund von Serverproblemen nicht heruntergeladen werden.</translation> <translation id="1492417797159476138">Sie haben diesen Nutzernamen für diese Website bereits gespeichert</translation> -<translation id="1493287004536771723">Sie folgen <ph name="SITE_NAME" /></translation> +<translation id="1493287004536771723">Sie folgen „<ph name="SITE_NAME" />“</translation> <translation id="1506061864768559482">Suchmaschine</translation> <translation id="1513352483775369820">Lesezeichen und Webprotokoll</translation> <translation id="1513858653616922153">Passwort löschen</translation> @@ -266,6 +266,7 @@ <translation id="2744248271121720757">Tippen Sie auf ein Wort, um eine Sofortsuche zu starten oder weitere Aktionen anzuzeigen</translation> <translation id="2760989362628427051">Dunkles Design verwenden, wenn beim Gerät das dunkle Design oder der Energiesparmodus aktiviert ist</translation> <translation id="2762000892062317888">gerade eben</translation> +<translation id="276969039800130567">Angemeldet als <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="2776236159752647997">Weitere Einstellungen in Verbindung mit Datenschutz, Sicherheit und der Erhebung von Daten finden Sie unter <ph name="BEGIN_LINK" />Google-Dienste<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> Sekunden übrig</translation> <translation id="2779651927720337254">fehlgeschlagen</translation> @@ -392,7 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB verfügbar</translation> <translation id="3549657413697417275">Im Verlauf suchen</translation> <translation id="3557336313807607643">Zu Kontakten hinzufügen</translation> -<translation id="3563767357928833671">Inhalte in der Zwischenablage werden angezeigt</translation> +<translation id="3563767357928833671">Inhalte der Zwischenablage werden angezeigt</translation> <translation id="3566923219790363270">VR ist noch nicht bereit. Starten Sie Chrome später neu.</translation> <translation id="3568688522516854065">Melden Sie sich an und aktivieren Sie die Synchronisierung, um Ihre Tabs von Ihren anderen Geräten abzurufen</translation> <translation id="3587482841069643663">Alle</translation> @@ -545,7 +546,7 @@ <translation id="4684427112815847243">Alles synchronisieren</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 und <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> weitere}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 und <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> weitere}}</translation> <translation id="4696983787092045100">SMS an meine Geräte senden</translation> -<translation id="4697543623252708062">Bald werden Sie <ph name="SITE_NAME" />-Artikel sehen, wenn Sie einen neuen Tab öffnen. Unter „Gefolgte Websites verwalten“ können Sie festlegen, welchen Websites Sie folgen.</translation> +<translation id="4697543623252708062">Bald werden Sie beim Öffnen eines neuen Tabs „<ph name="SITE_NAME" />“-Artikel sehen. Wenn Sie die Websites verwalten möchten, denen Sie folgen, gehen Sie zu „Gefolgte Websites verwalten“.</translation> <translation id="4699172675775169585">Bilder und Dateien im Cache</translation> <translation id="4714588616299687897">Reduzieren Sie Ihre Daten um bis zu 60 %</translation> <translation id="4716066120200945007">FOLGE ICH</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Reaktionen verwalten</translation> <translation id="5626134646977739690">Name:</translation> <translation id="5628604359369369630">Ungelesen – offline verfügbar</translation> +<translation id="5632627355679805402">Ihre Daten sind seit dem <ph name="TIME" /> mit Ihrem <ph name="BEGIN_LINK" />Google-Passwort<ph name="END_LINK" /> verschlüsselt. Geben Sie dieses ein, um die Synchronisierung zu starten.</translation> <translation id="5639724618331995626">Alle Websites zulassen</translation> <translation id="5648166631817621825">Letzte 7 Tage</translation> <translation id="5655963694829536461">In Downloads suchen</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Gestern geprüft</translation> <translation id="6710213216561001401">Zurück</translation> <translation id="671481426037969117">Ihr <ph name="FQDN" />-Timer ist abgelaufen. Morgen startet er neu.</translation> +<translation id="6738516213925468394">Ihre Daten wurden am <ph name="TIME" /> mit Ihrer <ph name="BEGIN_LINK" />Synchronisierungspassphrase<ph name="END_LINK" /> verschlüsselt. Geben Sie diese ein, um die Synchronisierung zu starten.</translation> <translation id="6738867403308150051">Wird heruntergeladen...</translation> <translation id="6767294960381293877">Die Liste von Geräten, mit denen ein Tab geteilt werden kann, ist halb geöffnet.</translation> <translation id="6783942555455976443">Diese Seite für später speichern und eine Erinnerung erhalten</translation> @@ -1218,7 +1221,7 @@ <translation id="8993760627012879038">Neuen Tab im Inkognitomodus öffnen</translation> <translation id="8996847606757455498">Anderen Anbieter auswählen</translation> <translation id="8998729206196772491">Sie melden sich mit einem von <ph name="MANAGED_DOMAIN" /> verwalteten Konto an und geben dem Administrator der Domain Kontrolle über Ihre Chrome-Daten. Die Daten werden diesem Konto dauerhaft zugeordnet. Wenn Sie sich von Chrome abmelden, werden Ihre Daten auf dem Gerät gelöscht, bleiben jedoch in Ihrem Google-Konto erhalten.</translation> -<translation id="9000233047676755924">Ab jetzt werden Sie <ph name="SITE_NAME" />-Artikel sehen, wenn Sie einen neuen Tab öffnen. Unter „Gefolgte Websites verwalten“ können Sie festlegen, welchen Websites Sie folgen.</translation> +<translation id="9000233047676755924">Ab jetzt werden Sie beim Öffnen eines neuen Tabs „<ph name="SITE_NAME" />“-Artikel sehen. Wenn Sie die Websites verwalten möchten, denen Sie folgen, gehen Sie zu „Gefolgte Websites verwalten“.</translation> <translation id="9022774213089566801">Häufig besucht</translation> <translation id="9028914725102941583">Synchronisierung aktivieren, um geräteübergreifend zu teilen</translation> <translation id="9040142327097499898">Benachrichtigungen sind erlaubt. Der Standortzugriff ist für dieses Gerät deaktiviert.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb index f09b61ea..e99836e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Πατήστε μια λέξη για άμεση αναζήτηση ή για να δείτε τις σχετικές ενέργειες</translation> <translation id="2760989362628427051">Να ενεργοποιείται το σκούρο θέμα όταν το σκούρο θέμα ή η Εξοικονόμηση μπαταρίας της συσκευής σας έχουν ενεργοποιηθεί.</translation> <translation id="2762000892062317888">μόλις τώρα</translation> +<translation id="276969039800130567">Συνδεδεμένος ως <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Για περισσότερες ρυθμίσεις που σχετίζονται με το απόρρητο, την ασφάλεια και τη συλλογή δεδομένων, ανατρέξτε στην ενότητα <ph name="BEGIN_LINK" />Υπηρεσίες Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Απομένουν <ph name="SECONDS" /> δευτερόλεπτα</translation> <translation id="2779651927720337254">απέτυχε</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Διαχείριση αντιδράσεων</translation> <translation id="5626134646977739690">Όνομα:</translation> <translation id="5628604359369369630">Μη αναγνωσμένα - Διαθέσιμα εκτός σύνδεσης</translation> +<translation id="5632627355679805402">Τα δεδομένα σας κρυπτογραφήθηκαν με τον <ph name="BEGIN_LINK" />κωδικό πρόσβασης Google<ph name="END_LINK" /> στις <ph name="TIME" />. Καταχωρίστε τον, για να ξεκινήσει ο συγχρονισμός.</translation> <translation id="5639724618331995626">Να επιτρέπονται όλοι οι ιστότοποι</translation> <translation id="5648166631817621825">Τελευταίες 7 ημέρες</translation> <translation id="5655963694829536461">Αναζήτηση λήψεων</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Ελέγχθηκε χθες</translation> <translation id="6710213216561001401">Προηγούμενο</translation> <translation id="671481426037969117">Η αντίστροφη μέτρηση <ph name="FQDN" /> εξαντλήθηκε. Θα ξεκινήσει ξανά αύριο.</translation> +<translation id="6738516213925468394">Τα δεδομένα σας κρυπτογραφήθηκαν με τη <ph name="BEGIN_LINK" />φράση πρόσβασης συγχρονισμού<ph name="END_LINK" /> στις <ph name="TIME" />. Καταχωρίστε την, για να ξεκινήσει ο συγχρονισμός.</translation> <translation id="6738867403308150051">Λήψη…</translation> <translation id="6767294960381293877">Άνοιγμα σε μισό ύψος της λίστας συσκευών στις οποίες θα κοινοποιηθεί μια καρτέλα.</translation> <translation id="6783942555455976443">Αποθηκεύστε αυτήν τη σελίδα για αργότερα και λάβετε σχετική υπενθύμιση.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb index 768c573..f03feb4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -62,6 +62,7 @@ <translation id="1376578503827013741">Computing…</translation> <translation id="1383876407941801731">Search</translation> <translation id="1384704387250346179">Translate image with Google Lens <ph name="BEGIN_NEW" />New<ph name="END_NEW" /></translation> +<translation id="1385855801883526502">Stylise highlight</translation> <translation id="1386674309198842382">Active <ph name="LAST_UPDATED" /> days ago</translation> <translation id="1397811292916898096">Search with <ph name="PRODUCT_NAME" /></translation> <translation id="1406000523432664303">‘Do Not Track’</translation> @@ -266,6 +267,7 @@ <translation id="2744248271121720757">Tap a word to search instantly or see related actions</translation> <translation id="2760989362628427051">Turn on dark theme when your device's dark theme or Battery Saver is on</translation> <translation id="2762000892062317888">just now</translation> +<translation id="276969039800130567">Signed in as <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">For more settings that relate to privacy, security and data collection, see <ph name="BEGIN_LINK" />Google services<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> secs left</translation> <translation id="2779651927720337254">failed</translation> @@ -695,6 +697,7 @@ <translation id="562289928968387744">Manage reactions</translation> <translation id="5626134646977739690">Name:</translation> <translation id="5628604359369369630">Unread – available offline</translation> +<translation id="5632627355679805402">Your data was encrypted with your <ph name="BEGIN_LINK" />Google password<ph name="END_LINK" /> as of <ph name="TIME" />. Enter it to start sync.</translation> <translation id="5639724618331995626">Allow all sites</translation> <translation id="5648166631817621825">Last 7 days</translation> <translation id="5655963694829536461">Search your downloads</translation> @@ -888,6 +891,7 @@ <translation id="670498945988402717">Checked yesterday</translation> <translation id="6710213216561001401">Previous</translation> <translation id="671481426037969117">Your <ph name="FQDN" /> timer ran out. It will start again tomorrow.</translation> +<translation id="6738516213925468394">Your data was encrypted with your <ph name="BEGIN_LINK" />sync passphrase<ph name="END_LINK" /> on <ph name="TIME" />. Enter it to start sync.</translation> <translation id="6738867403308150051">Downloading…</translation> <translation id="6767294960381293877">List of devices to share a tab with, opened at half height.</translation> <translation id="6783942555455976443">Save this page for later and get a reminder</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb index a3add843..4a9d401 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Presiona una palabra para realizar una búsqueda instantánea o ver acciones relacionadas</translation> <translation id="2760989362628427051">Activa el tema oscuro cuando esté activado el Ahorro de batería o el tema oscuro de tu dispositivo</translation> <translation id="2762000892062317888">recién</translation> +<translation id="276969039800130567">Se accedió como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Para ver más opciones de configuración relacionadas con la privacidad, seguridad y recopilación de datos, visita <ph name="BEGIN_LINK" />Servicios de Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> segundos restantes</translation> <translation id="2779651927720337254">error</translation> @@ -545,7 +546,7 @@ <translation id="4684427112815847243">Sincronizar todo</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" /> y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}other{<ph name="SHIPPING_OPTION_PREVIEW" /> y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}}</translation> <translation id="4696983787092045100">Enviar texto a tus dispositivos</translation> -<translation id="4697543623252708062">Pronto, cuando abras una nueva pestaña, verás historias de <ph name="SITE_NAME" />. Puedes controlar lo que se te muestra en Administrar sitios que sigues.</translation> +<translation id="4697543623252708062">Pronto, cuando abras una nueva pestaña, verás historias de <ph name="SITE_NAME" />. Puedes administrar los sitios que sigues en el menú Siguiendo.</translation> <translation id="4699172675775169585">Imágenes y archivos almacenados en caché</translation> <translation id="4714588616299687897">Ahorra hasta un 60% de tus datos</translation> <translation id="4716066120200945007">SIGUIENDO</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Administrar reacciones</translation> <translation id="5626134646977739690">Nombre:</translation> <translation id="5628604359369369630">Sin leer: Disponible sin conexión</translation> +<translation id="5632627355679805402">Tus datos se encriptaron con tu <ph name="BEGIN_LINK" />contraseña de Google<ph name="END_LINK" /> el <ph name="TIME" />. Ingresa la contraseña para iniciar la sincronización.</translation> <translation id="5639724618331995626">Permitir todos los sitios</translation> <translation id="5648166631817621825">Últimos 7 días</translation> <translation id="5655963694829536461">Buscar tus descargas</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Se verificó ayer</translation> <translation id="6710213216561001401">Anterior</translation> <translation id="671481426037969117">Se agotó el temporizador de <ph name="FQDN" />. Volverá a empezar mañana.</translation> +<translation id="6738516213925468394">Tus datos se encriptaron con la <ph name="BEGIN_LINK" />frase de contraseña de sincronización<ph name="END_LINK" /> el <ph name="TIME" />. Ingresa la frase para iniciar la sincronización.</translation> <translation id="6738867403308150051">Descargando…</translation> <translation id="6767294960381293877">La lista de dispositivos con los que se puede compartir una pestaña está abierta a media altura.</translation> <translation id="6783942555455976443">Guarda esta página para verla más tarde y establece un recordatorio.</translation> @@ -1218,7 +1221,7 @@ <translation id="8993760627012879038">Abrir ventana nueva en modo de navegación incógnito</translation> <translation id="8996847606757455498">Elegir otro proveedor</translation> <translation id="8998729206196772491">Estás accediendo con una cuenta administrada por <ph name="MANAGED_DOMAIN" /> y dándole permiso a su administrador para que controle tus datos de Chrome. Tus datos se vincularán de forma permanente a esta cuenta. Si sales de Chrome, tus datos se borrarán en este dispositivo, pero quedarán guardados en tu cuenta de Google.</translation> -<translation id="9000233047676755924">Ahora, cuando abras una nueva pestaña, verás historias de <ph name="SITE_NAME" />. Puedes controlar lo que se te muestra en Administrar sitios que sigues.</translation> +<translation id="9000233047676755924">Ahora, cuando abras una nueva pestaña, verás historias de <ph name="SITE_NAME" />. Puedes administrar los sitios que sigues en el menú Siguiendo.</translation> <translation id="9022774213089566801">Visitados con frecuencia</translation> <translation id="9028914725102941583">Activa la sincronización para compartir contenido entre dispositivos</translation> <translation id="9040142327097499898">Las notificaciones están habilitadas. La ubicación está desactivada en este dispositivo.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb index 16712b6..8bb4743 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Toca una palabra para buscarla de forma instantánea o ver acciones relacionadas</translation> <translation id="2760989362628427051">Habilita el tema oscuro cuando esté activado el tema oscuro del dispositivo o el dispositivo esté en modo de ahorro de batería</translation> <translation id="2762000892062317888">justo ahora</translation> +<translation id="276969039800130567">Has iniciado sesión como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Para ver más ajustes relacionados con la privacidad, la seguridad y la recogida de datos, consulta <ph name="BEGIN_LINK" />Servicios de Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Quedan <ph name="SECONDS" /> segundos</translation> <translation id="2779651927720337254">ha fallado</translation> @@ -545,7 +546,7 @@ <translation id="4684427112815847243">Sincronizar todo</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}}</translation> <translation id="4696983787092045100">Enviar mensaje de texto a tus dispositivos</translation> -<translation id="4697543623252708062">Pronto verás historias de <ph name="SITE_NAME" /> cuando abras una pestaña nueva. Puedes gestionar los sitios que sigues en Gestionar sitios seguidos.</translation> +<translation id="4697543623252708062">Pronto verás historias de <ph name="SITE_NAME" /> cuando abras una pestaña nueva. Puedes gestionar los sitios que sigues en el menú Siguiendo.</translation> <translation id="4699172675775169585">Archivos e imágenes almacenados en caché</translation> <translation id="4714588616299687897">Ahorra hasta un 60% de tus datos</translation> <translation id="4716066120200945007">SIGUIENDO</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Gestionar reacciones</translation> <translation id="5626134646977739690">Nombre:</translation> <translation id="5628604359369369630">No leído: disponible sin conexión</translation> +<translation id="5632627355679805402">Tus datos están cifrados con tu <ph name="BEGIN_LINK" />contraseña de Google<ph name="END_LINK" /> desde el <ph name="TIME" />. Introdúcela para iniciar la sincronización.</translation> <translation id="5639724618331995626">Permitir todos los sitios</translation> <translation id="5648166631817621825">Últimos 7 días</translation> <translation id="5655963694829536461">Busca en las descargas</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Comprobado ayer</translation> <translation id="6710213216561001401">Anterior</translation> <translation id="671481426037969117">Se ha agotado el temporizador de <ph name="FQDN" />. Se reiniciará mañana.</translation> +<translation id="6738516213925468394">Tus datos están cifrados con tu <ph name="BEGIN_LINK" />frase de contraseña de sincronización<ph name="END_LINK" /> desde el <ph name="TIME" />. Introdúcela para iniciar la sincronización.</translation> <translation id="6738867403308150051">Descargando…</translation> <translation id="6767294960381293877">La lista de dispositivos con los que puedes compartir una pestaña está abierta y ocupa la mitad inferior de la pantalla.</translation> <translation id="6783942555455976443">Guardar esta página para después y recibir un recordatorio</translation> @@ -1218,7 +1221,7 @@ <translation id="8993760627012879038">Abre una nueva pestaña en modo de incógnito</translation> <translation id="8996847606757455498">Elegir otro proveedor</translation> <translation id="8998729206196772491">Estás iniciando sesión con una cuenta gestionada por <ph name="MANAGED_DOMAIN" />, lo que significa que vas a proporcionar a su administrador el control sobre tus datos de Chrome. Los datos se vincularán de forma permanente a esta cuenta. Si cierras sesión en Chrome, se eliminarán los datos de este dispositivo, pero permanecerán almacenados en tu cuenta de Google.</translation> -<translation id="9000233047676755924">Ahora verás historias de <ph name="SITE_NAME" /> cuando abras una pestaña nueva. Puedes gestionar los sitios que sigues en Gestionar sitios seguidos.</translation> +<translation id="9000233047676755924">Ahora verás historias de <ph name="SITE_NAME" /> cuando abras una pestaña nueva. Puedes gestionar los sitios que sigues en el menú Siguiendo.</translation> <translation id="9022774213089566801">Visitados con frecuencia</translation> <translation id="9028914725102941583">Activar la sincronización para compartir con otros dispositivos</translation> <translation id="9040142327097499898">Las notificaciones están permitidas. La ubicación está desactivada en este dispositivo.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb index 205c826..03f91b35 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Puudutage sõna, et kohe otsida või seotud toiminguid näha</translation> <translation id="2760989362628427051">Aktiveeri tume teema, kui tume teema või akusäästja on seadmes sisse lülitatud</translation> <translation id="2762000892062317888">just praegu</translation> +<translation id="276969039800130567">Sisse logitud kui <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Privaatsuse, turvalisuse ning andmete kogumisega seotud lisaseadete nägemiseks vaadake jaotist <ph name="BEGIN_LINK" />Google'i teenused<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Jäänud on <ph name="SECONDS" /> sekundit</translation> <translation id="2779651927720337254">ebaõnnestus</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Reaktsioonide haldamine</translation> <translation id="5626134646977739690">Nimi:</translation> <translation id="5628604359369369630">Lugemata – võrguühenduseta saadaval</translation> +<translation id="5632627355679805402">Teie andmed krüpteeriti viimati teie <ph name="BEGIN_LINK" />Google’i parooliga<ph name="END_LINK" /> kuupäeva <ph name="TIME" /> seisuga. Sisestage see sünkroonimise alustamiseks.</translation> <translation id="5639724618331995626">Luba kõik saidid</translation> <translation id="5648166631817621825">Viimased seitse päeva</translation> <translation id="5655963694829536461">Otsige oma allalaadimiste hulgast</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Kontrolliti eile</translation> <translation id="6710213216561001401">Eelmine</translation> <translation id="671481426037969117">Teie rakenduse <ph name="FQDN" /> taimeri aeg sai otsa. See alustab uuesti homme.</translation> +<translation id="6738516213925468394">Teie andmed krüpteeriti teie <ph name="BEGIN_LINK" />sünkroonimisparooliga<ph name="END_LINK" /> kuupäeval <ph name="TIME" />. Sisestage see sünkroonimise alustamiseks.</translation> <translation id="6738867403308150051">Allalaadimine ...</translation> <translation id="6767294960381293877">Vahelehe jagamise seadmete loend (poolel kõrgusel avatud).</translation> <translation id="6783942555455976443">Salvestage see leht hiljem kasutamiseks ja laske saata meeldetuletus</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb index cacc7fb..41467e7 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Sakatu hitz bat bilaketa egiteko edo lotutako ekintzak ikusteko</translation> <translation id="2760989362628427051">Aktibatu gai iluna gailuaren gai iluna edo bateria-aurrezlea aktibatuta dagoenean</translation> <translation id="2762000892062317888">oraintxe</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> gisa dauka saioa hasita.</translation> <translation id="2776236159752647997">Pribatutasunarekin, segurtasunarekin eta datu-bilketarekin lotutako ezarpen gehiago ikusteko, joan <ph name="BEGIN_LINK" />Google-ren zerbitzuak<ph name="END_LINK" /> atalera.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> segundo gelditzen dira</translation> <translation id="2779651927720337254">huts egin du</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Kudeatu erreakzioak</translation> <translation id="5626134646977739690">Izena:</translation> <translation id="5628604359369369630">Irakurri gabeak (konexiorik gabe erabilgarri)</translation> +<translation id="5632627355679805402">Data honetan hasi ziren enkriptatzen zure datuak <ph name="BEGIN_LINK" />Google pasahitzaren<ph name="END_LINK" /> bidez: <ph name="TIME" />. Idatz ezazu sinkronizatzen hasteko.</translation> <translation id="5639724618331995626">Onartu webgune guztiak</translation> <translation id="5648166631817621825">Azken zazpi egunetakoak</translation> <translation id="5655963694829536461">Bilatu deskargatutako fitxategietan</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Atzo egiaztatu zuen</translation> <translation id="6710213216561001401">Aurrekoa</translation> <translation id="671481426037969117">Agortu da <ph name="FQDN" /> tenporizadorearen denbora. Bihar hasiko da berriro.</translation> +<translation id="6738516213925468394">Data honetan hasi ziren enkriptatzen zure datuak <ph name="BEGIN_LINK" />Sinkronizatzeko pasaesaldiaren<ph name="END_LINK" /> bidez: <ph name="TIME" />. Idatz ezazu sinkronizatzen hasteko.</translation> <translation id="6738867403308150051">Deskargatzen…</translation> <translation id="6767294960381293877">Fitxa partekatzeko hautatutako gailuen zerrenda irekita dago, eta altuera erdia hartzen du.</translation> <translation id="6783942555455976443">Gorde orri hau gerorako eta jaso abisu bat</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb index ac6b29f..b379d2f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">برای جستجوی فوری، روی کلمهای ضربه بزنید یا اقدامهای مرتبط را ببینید</translation> <translation id="2760989362628427051">روشن شدن طرح زمینه تیره وقتی طرح زمینه تیره دستگاه یا «بهینهسازی باتری» روشن است</translation> <translation id="2762000892062317888">هماکنون</translation> +<translation id="276969039800130567">با <ph name="USER_EMAIL_ADDRESS" /> وارد سیستم شد.</translation> <translation id="2776236159752647997">برای تنظیمات بیشتر مرتبط با حریمخصوصی، امنیت، و جمعآوری داده، <ph name="BEGIN_LINK" />سرویسهای Google<ph name="END_LINK" /> را ببینید.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ثانیه باقیمانده است</translation> <translation id="2779651927720337254">انجام نشد</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">مدیریت واکنشها</translation> <translation id="5626134646977739690">نام:</translation> <translation id="5628604359369369630">خواندهنشده - دردسترس درحالت آفلاین</translation> +<translation id="5632627355679805402">دادهها با <ph name="BEGIN_LINK" />گذرواژه Google<ph name="END_LINK" /> شما از <ph name="TIME" /> رمز میشود. برای شروع همگامسازی، آن را وارد کنید.</translation> <translation id="5639724618331995626">همه سایتها مجاز هستند</translation> <translation id="5648166631817621825">۷ روز گذشته</translation> <translation id="5655963694829536461">بارگیریهایتان را جستجو کنید</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">آخرین بررسی: دیروز</translation> <translation id="6710213216561001401">قبلی</translation> <translation id="671481426037969117">تایمر <ph name="FQDN" /> شما متوقف شد. دوباره فردا شروع به کار میکند.</translation> +<translation id="6738516213925468394">دادهها با <ph name="BEGIN_LINK" />گذرنویسه همگامسازیشده<ph name="END_LINK" /> شما در <ph name="TIME" /> رمز میشود. برای شروع همگامسازی، آن را وارد کنید.</translation> <translation id="6738867403308150051">در حال بارگیری…</translation> <translation id="6767294960381293877">فهرست نیمهباز دستگاههایی که میتوان با آنها برگه همرسانی کرد.</translation> <translation id="6783942555455976443">این صفحه را برای خواندن در فرصتی دیگر ذخیره کنید و یادآوری دریافت کنید</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb index 45108ef..c2dc853 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Napauta sanaa etsiäksesi välittömästi tai nähdäksesi asiaan liittyviä toimia.</translation> <translation id="2760989362628427051">Ota tumma teema käyttöön, kun laitteen tumma teema tai virransäästö on käytössä</translation> <translation id="2762000892062317888">äsken</translation> +<translation id="276969039800130567">Kirjautunut osoitteella <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Näet lisää yksityisyyteen, tietoturvaan ja datankeruuseen liittyviä asetuksia <ph name="BEGIN_LINK" />Googlen palvelut<ph name="END_LINK" /> ‑kohdasta.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekuntia jäljellä</translation> <translation id="2779651927720337254">epäonnistui</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Ylläpidä reaktioita</translation> <translation id="5626134646977739690">Nimi:</translation> <translation id="5628604359369369630">Lukematon – luettavissa ilman verkkoyhteyttä</translation> +<translation id="5632627355679805402">Datasi salattiin <ph name="BEGIN_LINK" />Google-salasanallasi<ph name="END_LINK" /> <ph name="TIME" />. Aloita synkronointi antamalla salasana.</translation> <translation id="5639724618331995626">Salli kaikki sivustot</translation> <translation id="5648166631817621825">Viimeiset seitsemän päivää</translation> <translation id="5655963694829536461">Hae omista latauksistasi</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Tarkistettu eilen</translation> <translation id="6710213216561001401">Edellinen</translation> <translation id="671481426037969117">Ajastimesta (<ph name="FQDN" />) loppui aika. Se alkaa alusta huomenna.</translation> +<translation id="6738516213925468394">Datasi salattiin <ph name="BEGIN_LINK" />synkronoinnin tunnuslauseella<ph name="END_LINK" /> <ph name="TIME" />. Aloita synkronointi antamalla tunnuslause.</translation> <translation id="6738867403308150051">Ladataan…</translation> <translation id="6767294960381293877">Välilehden jakamisen laiteluettelo avataan puolen näytön korkeudella.</translation> <translation id="6783942555455976443">Tallenna sivu myöhemmin luettavaksi, saat muistutuksen</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb index bc4c387..569ab2e6 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Mag-tap ng salita upang hanapin agad ito o tingnan ang mga nauugnay na pagkilos</translation> <translation id="2760989362628427051">I-on ang madilim na tema kapag naka-on ang madilim na tema o Pantipid ng Baterya ng iyong device</translation> <translation id="2762000892062317888">ngayon lang</translation> +<translation id="276969039800130567">Naka-sign in bilang <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Para sa higit pang setting na nauugnay sa privacy, seguridad, at pagkolekta ng data, tingnan ang <ph name="BEGIN_LINK" />Mga serbisyo ng Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> (na) segundo na lang ang natitira</translation> <translation id="2779651927720337254">nabigo</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Pamahalaan ang mga reaksyon</translation> <translation id="5626134646977739690">Pangalan:</translation> <translation id="5628604359369369630">Hindi pa nabasa - Available offline</translation> +<translation id="5632627355679805402">Na-encrypt ang data mo gamit ang iyong <ph name="BEGIN_LINK" />password sa Google<ph name="END_LINK" /> simula noong <ph name="TIME" />. Ilagay ito para simulan ang pag-sync.</translation> <translation id="5639724618331995626">Payagan ang lahat ng site</translation> <translation id="5648166631817621825">Nakalipas na 7 araw</translation> <translation id="5655963694829536461">Maghanap sa iyong mga download</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Nagsuri kahapon</translation> <translation id="6710213216561001401">Nauna</translation> <translation id="671481426037969117">Natapos na ang iyong timer ng <ph name="FQDN" />. Magsisimula itong muli bukas.</translation> +<translation id="6738516213925468394">Na-encrypt ang data mo gamit ang iyong <ph name="BEGIN_LINK" />passphrase sa pag-sync<ph name="END_LINK" /> noong <ph name="TIME" />. Ilagay ito para simulan ang pag-sync.</translation> <translation id="6738867403308150051">Nagda-download...</translation> <translation id="6767294960381293877">Nakabukas ang listahan ng mga device kung saan magbabahagi ng tab nang kalahati ang taas.</translation> <translation id="6783942555455976443">I-save ang page na ito para sa ibang pagkakataon at makatanggap ng paalala</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb index ec6d31c..1c1f09b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Touchez un mot pour lancer une recherche instantanée ou afficher les actions associées</translation> <translation id="2760989362628427051">Activer le thème sombre lorsque le thème sombre ou la fonction Économiseur de pile de votre appareil est activé</translation> <translation id="2762000892062317888">à l'instant</translation> +<translation id="276969039800130567">Connecté en tant que <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Pour accéder à d'autres paramètres liés à la confidentialité, à la sécurité et à la collecte de données, consultez la rubrique <ph name="BEGIN_LINK" />Services Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Il reste <ph name="SECONDS" /> secondes</translation> <translation id="2779651927720337254">échec</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Gérer les réactions</translation> <translation id="5626134646977739690">Nom :</translation> <translation id="5628604359369369630">Non lus : accessibles hors ligne</translation> +<translation id="5632627355679805402">Vos données ont été chiffrées avec votre <ph name="BEGIN_LINK" />mot de passe Google<ph name="END_LINK" /> à compter du <ph name="TIME" />. Entrez votre mot de passe pour démarrer la synchronisation.</translation> <translation id="5639724618331995626">Autoriser tous les sites</translation> <translation id="5648166631817621825">Sept derniers jours</translation> <translation id="5655963694829536461">Rechercher vos téléchargements</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Dernière vérification : hier</translation> <translation id="6710213216561001401">Précédent</translation> <translation id="671481426037969117">Votre minuterie <ph name="FQDN" /> a expiré. Elle recommencera demain.</translation> +<translation id="6738516213925468394">Vos données ont été chiffrées avec votre <ph name="BEGIN_LINK" />phrase de passe de synchronisation<ph name="END_LINK" /> le <ph name="TIME" />. Veuillez l'entrer pour commencer la synchronisation.</translation> <translation id="6738867403308150051">Téléchargement en cours…</translation> <translation id="6767294960381293877">La liste d'appareils avec lesquels partager un onglet est ouverte à la mi-hauteur.</translation> <translation id="6783942555455976443">Enregistrer cette page pour plus tard et recevoir un rappel</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb index 25269ee..5d0673d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Appuyez sur un mot pour lancer une recherche instantanée ou afficher les actions associées</translation> <translation id="2760989362628427051">Activer le thème sombre lorsque le thème sombre ou l'économiseur de batterie de votre appareil est activé</translation> <translation id="2762000892062317888">à l'instant</translation> +<translation id="276969039800130567">Connecté en tant que <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Pour accéder à d'autres paramètres liés à la confidentialité, à la sécurité et à la collecte de données, consultez la page <ph name="BEGIN_LINK" />Services Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> secondes restantes</translation> <translation id="2779651927720337254">échec</translation> @@ -545,7 +546,7 @@ <translation id="4684427112815847243">Tout synchroniser</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 et <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> de plus}one{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 et <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> de plus}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 et <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> de plus}}</translation> <translation id="4696983787092045100">Envoyer le SMS à vos appareils</translation> -<translation id="4697543623252708062">Vous verrez bientôt les stories de <ph name="SITE_NAME" /> en ouvrant un nouvel onglet. Pour contrôler les sites que vous suivez, accédez à "Gérer les abonnements".</translation> +<translation id="4697543623252708062">Vous verrez bientôt les stories de <ph name="SITE_NAME" /> quand vous ouvrirez un onglet. Vous pouvez gérer les sites que vous suivez sur la page "Suivi".</translation> <translation id="4699172675775169585">Images et fichiers en cache</translation> <translation id="4714588616299687897">Économisez jusqu'à 60 % de vos données</translation> <translation id="4716066120200945007">SUIVI</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Gérer les réactions</translation> <translation id="5626134646977739690">Nom :</translation> <translation id="5628604359369369630">Non lu - Disponible hors connexion</translation> +<translation id="5632627355679805402">Vos données ont été chiffrées avec votre <ph name="BEGIN_LINK" />mot de passe Google<ph name="END_LINK" /> depuis le <ph name="TIME" />. Saisissez-le pour lancer la synchronisation.</translation> <translation id="5639724618331995626">Autoriser tous les sites</translation> <translation id="5648166631817621825">7 derniers jours</translation> <translation id="5655963694829536461">Recherchez dans les téléchargements</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Vérification effectuée hier</translation> <translation id="6710213216561001401">Précédent</translation> <translation id="671481426037969117">Votre minuteur <ph name="FQDN" /> a expiré. Il redémarrera demain.</translation> +<translation id="6738516213925468394">Vos données ont été chiffrées avec votre <ph name="BEGIN_LINK" />phrase secrète de synchronisation<ph name="END_LINK" /> le <ph name="TIME" />. Saisissez-la pour lancer la synchronisation.</translation> <translation id="6738867403308150051">Téléchargement en cours…</translation> <translation id="6767294960381293877">La liste des appareils avec lesquels vous pouvez partager un onglet est ouverte à mi-hauteur.</translation> <translation id="6783942555455976443">Enregistrer cette page pour plus tard et recevoir un rappel</translation> @@ -1218,7 +1221,7 @@ <translation id="8993760627012879038">Ouvrir un nouvel onglet en mode navigation privée</translation> <translation id="8996847606757455498">Sélectionner un autre fournisseur</translation> <translation id="8998729206196772491">Vous vous connectez avec un compte géré par <ph name="MANAGED_DOMAIN" />, ce qui permettra à son administrateur de contrôler vos données Chrome. Celles-ci seront définitivement associées à ce compte. Si vous vous déconnectez de Chrome, vos données seront supprimées de cet appareil, mais elles seront conservées dans votre compte Google.</translation> -<translation id="9000233047676755924">Vous verrez désormais les stories de <ph name="SITE_NAME" /> en ouvrant un nouvel onglet. Pour contrôler les sites que vous suivez, accédez à "Gérer les abonnements".</translation> +<translation id="9000233047676755924">Vous verrez les stories de <ph name="SITE_NAME" /> quand vous ouvrirez un onglet. Vous pouvez gérer les sites que vous suivez sur la page "Suivi".</translation> <translation id="9022774213089566801">Consultés régulièrement</translation> <translation id="9028914725102941583">Activer la synchronisation pour partager des contenus entre des appareils</translation> <translation id="9040142327097499898">Les notifications sont autorisées. La localisation est désactivée pour cet appareil.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb index c4e5416b..5636162 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Toca unha palabra para realizar buscas de forma instantánea ou ver accións relacionadas</translation> <translation id="2760989362628427051">Activa o tema escuro cando o teu dispositivo teña activado o tema escuro ou a función Aforro de batería</translation> <translation id="2762000892062317888">agora</translation> +<translation id="276969039800130567">Sesión iniciada como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Para ver máis opcións relacionadas coa configuración da privacidade, seguranza e recompilación de datos, consulta <ph name="BEGIN_LINK" />Servizos de Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Quedan <ph name="SECONDS" /> segundos</translation> <translation id="2779651927720337254">produciuse un erro</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Xestionar reaccións</translation> <translation id="5626134646977739690">Nome:</translation> <translation id="5628604359369369630">Sen ler: dispoñibles sen conexión</translation> +<translation id="5632627355679805402">Os datos encriptáronse co teu <ph name="BEGIN_LINK" />contrasinal de Google<ph name="END_LINK" /> a partir do <ph name="TIME" />. Introdúceo para iniciar a sincronización.</translation> <translation id="5639724618331995626">Permitir todos os sitios</translation> <translation id="5648166631817621825">Últimos 7 días</translation> <translation id="5655963694829536461">Buscar as túas descargas</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">A comprobación realizouse onte</translation> <translation id="6710213216561001401">Anterior</translation> <translation id="671481426037969117">O temporizador de <ph name="FQDN" /> chegou ao final. Volverá comezar mañá.</translation> +<translation id="6738516213925468394">Os teus datos encriptáronse coa túa <ph name="BEGIN_LINK" />frase de acceso de sincronización<ph name="END_LINK" /> o <ph name="TIME" />. Introdúcea para comezar a sincronización.</translation> <translation id="6738867403308150051">Descargando...</translation> <translation id="6767294960381293877">A lista de dispositivos cos que compartir unha pestana está aberta a media pantalla.</translation> <translation id="6783942555455976443">Garda esta páxina para acceder a ela máis tarde e recibe un recordatorio</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb index 85b415b2..0f18507 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -76,6 +76,7 @@ <translation id="147113415845704694">“આજે હવામાન કેવું છે?" પૂછવાનો પ્રયાસ કરો</translation> <translation id="1477626028522505441">સર્વર સમસ્યાઓને કારણે <ph name="FILE_NAME" /> ડાઉનલોડ નિષ્ફળ થયું.</translation> <translation id="1492417797159476138">તમે આ સાઇટ માટે પહેલેથી જ વપરાશકર્તા નામ સાચવ્યું છે</translation> +<translation id="1493287004536771723">તમે <ph name="SITE_NAME" />ને ફૉલો કરી રહ્યાં છો</translation> <translation id="1506061864768559482">શોધ એન્જિન</translation> <translation id="1513352483775369820">બુકમાર્ક્સ અને વેબ ઇતિહાસ</translation> <translation id="1513858653616922153">પાસવર્ડ ડિલીટ કરો</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">ઝટપટ શોધ કરવા માટે શબ્દ પર ટૅપ કરો અથવા સંબંધિત ક્રિયાઓ જુઓ</translation> <translation id="2760989362628427051">જ્યારે તમારા ડિવાઇસની ઘેરી થીમ અથવા બૅટરી સેવર ચાલુ હોય ત્યારે ઘેરી થીમ ચાલુ કરો</translation> <translation id="2762000892062317888">હમણાં જ</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> તરીકે સાઇન ઇન કરો.</translation> <translation id="2776236159752647997">પ્રાઇવસી, સુરક્ષા અને ડેટા સંગ્રહથી સંબંધિત વધુ સેટિંગ માટે, <ph name="BEGIN_LINK" />Googleની સેવાઓ<ph name="END_LINK" /> જુઓ</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> સેકંડ બાકી</translation> <translation id="2779651927720337254">નિષ્ફળ થયું</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">સાચવેલા પાસવર્ડ તમારા <ph name="BEGIN_LINK" />Google એકાઉન્ટ<ph name="END_LINK" />માં જુઓ અને મેનેજ કરો</translation> <translation id="2818669890320396765">તમારા બધા ઉપકરણો પર તમારા બુકમાર્ક મેળવવા માટે, સાઇન ઇન કરો અને સિંક કરવાનું ચાલુ કરો</translation> <translation id="2827278682606527653">Feed card menu half height</translation> +<translation id="2830783625999891985">ક્લિપબોર્ડનું કન્ટેન્ટ છુપાવેલું છે</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" />ને અનફૉલો કર્યુ</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 દિવસ પહેલાં ચેક કર્યું}one{# દિવસ પહેલાં ચેક કર્યું}other{# દિવસ પહેલાં ચેક કર્યું}}</translation> <translation id="2842985007712546952">પેરન્ટ ફોલ્ડર</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB ઉપલબ્ધ</translation> <translation id="3549657413697417275">તમારો ઇતિહાસ શોધો</translation> <translation id="3557336313807607643">સંપર્કોમાં ઉમેરો</translation> +<translation id="3563767357928833671">ક્લિપબોર્ડનું કન્ટેન્ટ બતાવેલું છે</translation> <translation id="3566923219790363270">Chrome હજી પણ VR માટે તૈયારી કરી રહ્યું છે. Chromeને પછી ફરી શરૂ કરો.</translation> <translation id="3568688522516854065">તમારા અન્ય ઉપકરણો પરથી તમારા ટૅબ મેળવવા માટે, સાઇન ઇન કરો અને સિંક કરવાનું ચાલુ કરો.</translation> <translation id="3587482841069643663">બધા</translation> @@ -542,6 +546,7 @@ <translation id="4684427112815847243">દરેક વસ્તુ સમન્વયિત કરો</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 અને વધુ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}one{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 અને વધુ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 અને વધુ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation> <translation id="4696983787092045100">તમારા ડિવાઇસ પર ટેક્સ્ટ મોકલો</translation> +<translation id="4697543623252708062">ટૂંક સમયમાં, જ્યારે તમે નવી ટૅબ ખોલશો ત્યારે તમને <ph name="SITE_NAME" /> પરથી સ્ટોરી દેખાશે. તમે ફૉલો કરો છો તે સાઇટ તમે 'ફૉલો મેનેજ કરો'માં નિયંત્રિત કરી શકો છો.</translation> <translation id="4699172675775169585">કેશ કરેલ છબીઓ અને ફાઇલો</translation> <translation id="4714588616299687897">તમારો 60% જેટલો ડેટા બચાવો</translation> <translation id="4716066120200945007">ફૉલો કરી રહ્યાં છીએ</translation> @@ -691,6 +696,7 @@ <translation id="562289928968387744">પ્રતિક્રિયાઓ મેનેજ કરો</translation> <translation id="5626134646977739690">નામ:</translation> <translation id="5628604359369369630">વાંચ્યા વગરનું - ઑફલાઇન ઉપલબ્ધ</translation> +<translation id="5632627355679805402">તમારો ડેટા <ph name="TIME" />ના રોજ તમારા <ph name="BEGIN_LINK" />Google પાસવર્ડ<ph name="END_LINK" /> સાથે એન્ક્રિપ્ટ કરવામાં આવ્યો હતો. સિંક શરૂ કરવા માટે તે દાખલ કરો.</translation> <translation id="5639724618331995626">તમામ સાઇટની મંજૂરી આપો</translation> <translation id="5648166631817621825">છેલ્લા 7 દિવસ</translation> <translation id="5655963694829536461">તમારા ડાઉનલોડમાં શોધો</translation> @@ -884,6 +890,7 @@ <translation id="670498945988402717">ગઈકાલે ચેક કર્યું</translation> <translation id="6710213216561001401">પાછલી</translation> <translation id="671481426037969117">તમારું <ph name="FQDN" /> ટાઇમર સમાપ્ત થયું. તે આવતી કાલે ફરી શરૂ થશે.</translation> +<translation id="6738516213925468394">તમારો ડેટા <ph name="TIME" />ના રોજ તમારા <ph name="BEGIN_LINK" />સિંક પાસફ્રેઝ<ph name="END_LINK" /> સાથે એન્ક્રિપ્ટ કરવામાં આવ્યો હતો. સિંક શરૂ કરવા માટે એ દાખલ કરો.</translation> <translation id="6738867403308150051">ડાઉનલોડ કરી રહ્યું છે...</translation> <translation id="6767294960381293877">કોઈ ટૅબ સાથે શેર કરવાના ડિવાઇસની સૂચિ અડધી ઊંચાઈએ ખૂલે છે.</translation> <translation id="6783942555455976443">આ પેજને ભવિષ્ય માટે સાચવો અને રિમાઇન્ડર મેળવો</translation> @@ -1214,6 +1221,7 @@ <translation id="8993760627012879038">છુપા મોડમાં એક નવું ટૅબ ખોલો</translation> <translation id="8996847606757455498">કોઈ અન્ય પ્રદાતા પસંદ કરો</translation> <translation id="8998729206196772491">તમે <ph name="MANAGED_DOMAIN" /> દ્વારા મેનેજ એકાઉન્ટમાં સાઇન ઇન કરી રહ્યાં છો અને તમારા Chrome ડેટા પર એનું એડમિન નિયંત્રણ આપી રહ્યાં છો. તમારો ડેટા આ એકાઉન્ટ સાથે કાયમીરૂપે જોડાયેલું રહેશે. Chromeમાંથી સાઇન આઉટ કરવું આ ડિવાઇસ પરથી તમારો ડેટા ડિલીટ કરશે, પરંતુ એ તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે.</translation> +<translation id="9000233047676755924">હવે જ્યારે તમે નવી ટૅબ ખોલશો ત્યારે તમને <ph name="SITE_NAME" /> પરથી સ્ટોરી દેખાશે. તમે ફૉલો કરો છો તે સાઇટ તમે 'ફૉલો મેનેજ કરો'માં નિયંત્રિત કરી શકો છો.</translation> <translation id="9022774213089566801">વારંવાર મુલાકાત લેવાયેલ</translation> <translation id="9028914725102941583">બધા ડિવાઇસ પર શેર કરવા માટે 'સિંક કરો'ની સુવિધા ચાલુ કરો</translation> <translation id="9040142327097499898">નોટિફિકેશનની મંજૂરી છે. આ ઉપકરણ માટે સ્થાન ઍક્સેસ બંધ છે.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb index 6e105bf..a1050ae 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">इंस्टैंट सर्च या मिलती-जुलती कार्रवाई देखने के लिए किसी शब्द पर टैप करें</translation> <translation id="2760989362628427051">अपने डिवाइस की गहरे रंग वाली थीम या 'बैटरी सेवर' चालू होने पर गहरे रंग वाली थीम चालू करें</translation> <translation id="2762000892062317888">अभी-अभी</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> के रूप में प्रवेश किया गया.</translation> <translation id="2776236159752647997">निजता, सुरक्षा और डेटा इकट्ठा करने से जुड़ी ज़्यादा सेटिंग के लिए, <ph name="BEGIN_LINK" />Google की सेवाएं<ph name="END_LINK" /> देखें</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> सेकंड शेष</translation> <translation id="2779651927720337254">डाउनलोड नहीं हो सका</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">प्रतिक्रियाओं को मैनेज करें</translation> <translation id="5626134646977739690">नाम:</translation> <translation id="5628604359369369630">यह नहीं पढ़ा गया - ऑफ़लाइन उपलब्ध है</translation> +<translation id="5632627355679805402">आपका डेटा <ph name="TIME" /> से आपके <ph name="BEGIN_LINK" />Google पासवर्ड<ph name="END_LINK" /> के साथ सुरक्षित किया गया था. सिंक करना शुरू करने के लिए पासवर्ड डालें.</translation> <translation id="5639724618331995626">सभी साइटों को अनुमति दें</translation> <translation id="5648166631817621825">पिछले 7 दिन</translation> <translation id="5655963694829536461">अपने डाउनलोड में खोजें</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">कल जांच की गई</translation> <translation id="6710213216561001401">पिछला</translation> <translation id="671481426037969117"><ph name="FQDN" /> इस्तेमाल करने का समय खत्म हो गया. यह कल फिर से शुरू होगा.</translation> +<translation id="6738516213925468394">आपका डेटा <ph name="TIME" /> को <ph name="BEGIN_LINK" />सिंक करने के लिए लंबा पासवर्ड बनाकर<ph name="END_LINK" /> सुरक्षित किया गया था. सिंक शुरू करने के लिए पासवर्ड डालें.</translation> <translation id="6738867403308150051">डाउनलोड हो रहे हैं...</translation> <translation id="6767294960381293877">टैब शेयर करने के लिए चुने जाने वाले डिवाइस की सूची आधी खुली हुई है.</translation> <translation id="6783942555455976443">इस पेज को बाद के लिए सेव करें और रिमाइंडर पाएं</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb index 59dcea9..0e371df 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Dodirnite riječ da biste je odmah pretražili ili vidjeli povezane radnje</translation> <translation id="2760989362628427051">Uključite tamnu temu kada je na uređaju uključena tamna tema ili Štednja baterije</translation> <translation id="2762000892062317888">upravo sada</translation> +<translation id="276969039800130567">Prijavljeni ste kao <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Više postavki koje se odnose na privatnost, sigurnost i prikupljanje podataka dostupno je u odjeljku <ph name="BEGIN_LINK" />Googleove usluge<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Preostalo sekundi: <ph name="SECONDS" /></translation> <translation id="2779651927720337254">nije uspjelo</translation> @@ -694,6 +695,7 @@ <translation id="562289928968387744">Upravljanje reakcijama</translation> <translation id="5626134646977739690">Naziv:</translation> <translation id="5628604359369369630">Nepročitano – dostupno izvanmrežno</translation> +<translation id="5632627355679805402">Vaši su podaci kriptirani vašom <ph name="BEGIN_LINK" />Google zaporkom<ph name="END_LINK" /> od <ph name="TIME" />. Unesite je da biste pokrenuli sinkronizaciju.</translation> <translation id="5639724618331995626">Dopusti sve web-lokacije</translation> <translation id="5648166631817621825">Posljednjih 7 dana</translation> <translation id="5655963694829536461">Pretražite preuzimanja</translation> @@ -887,6 +889,7 @@ <translation id="670498945988402717">Provjera je izvršena jučer</translation> <translation id="6710213216561001401">Prethodno</translation> <translation id="671481426037969117">Isteklo je odbrojavanje za aplikaciju <ph name="FQDN" />. Ponovo će se pokrenuti sutra.</translation> +<translation id="6738516213925468394">Vaši su podaci kriptirani vašom <ph name="BEGIN_LINK" />šifrom za sinkronizaciju<ph name="END_LINK" /> <ph name="TIME" />. Unesite je da biste pokrenuli sinkronizaciju.</translation> <translation id="6738867403308150051">Preuzimanje...</translation> <translation id="6767294960381293877">Popis za odabir uređaja s kojim će se dijeliti kartica otvoren na pola visine.</translation> <translation id="6783942555455976443">Spremite stranicu za kasnije i postavite podsjetnik</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb index 3b4ac90..6645e9fe 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Az azonnali kereséshez koppintson a kívánt szóra, vagy tekintse meg a kapcsolódó műveleteket</translation> <translation id="2760989362628427051">Sötét téma bekapcsolása, amikor az eszköz sötét témája vagy Akkumulátorkímélő módja be van kapcsolva</translation> <translation id="2762000892062317888">éppen most</translation> +<translation id="276969039800130567">Bejelentkezve a következőként: <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">A <ph name="BEGIN_LINK" />Google-szolgáltatások<ph name="END_LINK" /> részben további beállításokat talál az adatvédelemre, biztonságra és adatgyűjtésre vonatkozóan.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> másodperc van hátra</translation> <translation id="2779651927720337254">sikertelen</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Reakciók kezelése</translation> <translation id="5626134646977739690">Név:</translation> <translation id="5628604359369369630">Olvasatlan (Offline hozzáférhető)</translation> +<translation id="5632627355679805402">Adatai titkosítva lettek <ph name="BEGIN_LINK" />Google-jelszavával<ph name="END_LINK" /> ekkor: <ph name="TIME" />. Adja meg a jelszót a szinkronizálás megkezdéséhez.</translation> <translation id="5639724618331995626">Minden webhely engedélyezése</translation> <translation id="5648166631817621825">Az elmúlt 7 napból</translation> <translation id="5655963694829536461">Keresés a letöltések között</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Tegnap volt ellenőrizve</translation> <translation id="6710213216561001401">Előző</translation> <translation id="671481426037969117">A(z) <ph name="FQDN" /> alkalmazás időzítése lejárt. Holnap újraindul.</translation> +<translation id="6738516213925468394">Adatai titkosítva lettek <ph name="BEGIN_LINK" />összetett szinkronizálási jelszavával<ph name="END_LINK" /> a következő időpontban: <ph name="TIME" />. Adja meg a jelszót a szinkronizálás megkezdéséhez.</translation> <translation id="6738867403308150051">Letöltés…</translation> <translation id="6767294960381293877">Lap megosztására szolgáló eszközök listája félmagasságban megnyitva.</translation> <translation id="6783942555455976443">Az oldal mentése későbbre, és emlékeztető kérése</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb index 9950772..361dddf 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Հպեք բառին՝ ակնթարթորեն որոնելու կամ առնչվող գործողությունները տեսնելու համար</translation> <translation id="2760989362628427051">Միացնել մուգ թեման, երբ սարքի մուգ թեման կամ մարտկոցի տնտեսման ռեժիմը միացված է</translation> <translation id="2762000892062317888">հենց նոր</translation> +<translation id="276969039800130567">Դուք մուտք եք գործել <ph name="USER_EMAIL_ADDRESS" /> հաշիվ:</translation> <translation id="2776236159752647997">Գաղտնիության, անվտանգության և տվյալների հավաքման հետ կապված լրացուցիչ կարգավորումներին կարող եք ծանոթանալ <ph name="BEGIN_LINK" />Google-ի ծառայություններ<ph name="END_LINK" /> բաժնում։</translation> <translation id="2777555524387840389">Մնացել է <ph name="SECONDS" /> վրկ</translation> <translation id="2779651927720337254">չհաջողվեց ներբեռնել</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Կառավարել արձագանքները</translation> <translation id="5626134646977739690">Անուն՝</translation> <translation id="5628604359369369630">Չկարդացված – Հասանելի է անցանց ռեժիմում</translation> +<translation id="5632627355679805402">Ձեր տվյալները գաղտնագրվել են ձեր <ph name="BEGIN_LINK" />Google գաղտնաբառի<ph name="END_LINK" /> միջոցով (<ph name="TIME" />): Համաժամացումը սկսելու համար մուտքագրեք գաղտնաբառը:</translation> <translation id="5639724618331995626">Թույլատրել բոլոր կայքերը</translation> <translation id="5648166631817621825">Վերջին 7 օրվա</translation> <translation id="5655963694829536461">Որոնեք ձեր ներբեռնած տարրերում</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Ստուգվել է երեկ</translation> <translation id="6710213216561001401">Նախորդը</translation> <translation id="671481426037969117"><ph name="FQDN" />-ի համար նախատեսված ժամանակը լրացել է։ Վաղը այն նորից կաշխատի:</translation> +<translation id="6738516213925468394">Ձեր տվյալները գաղտնագրվել են <ph name="BEGIN_LINK" />համաժամացման ձեր անցաբառի<ph name="END_LINK" /> միջոցով (<ph name="TIME" />): Համաժամացումը սկսելու համար մուտքագրեք անցաբառը:</translation> <translation id="6738867403308150051">Ներբեռնում…</translation> <translation id="6767294960381293877">Սարքերը, որոնց հետ կիսվելու եք ներդիրով, ցուցադրված են էկրանի կեսով:</translation> <translation id="6783942555455976443">Պահել այս էջը հետագայի համար և ստանալ հիշեցում</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb index 66f1474f..002f5d5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Ketuk sebuah kata untuk menelusuri secara instan atau melihat tindakan terkait</translation> <translation id="2760989362628427051">Mengaktifkan tema gelap ketika tema gelap perangkat atau Penghemat Baterai aktif</translation> <translation id="2762000892062317888">baru saja</translation> +<translation id="276969039800130567">Login sebagai <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Untuk setelan lainnya yang berkaitan dengan privasi, keamanan, dan pengumpulan data, lihat <ph name="BEGIN_LINK" />Layanan Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> detik lagi</translation> <translation id="2779651927720337254">gagal</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Kelola reaksi</translation> <translation id="5626134646977739690">Nama:</translation> <translation id="5628604359369369630">Belum dibaca - Tersedia secara offline</translation> +<translation id="5632627355679805402">Data Anda dienkripsi dengan <ph name="BEGIN_LINK" />sandi Google<ph name="END_LINK" /> mulai <ph name="TIME" />. Masukkan frasa sandi untuk memulai sinkronisasi.</translation> <translation id="5639724618331995626">Izinkan semua situs</translation> <translation id="5648166631817621825">7 hari terakhir</translation> <translation id="5655963694829536461">Telusuri file download</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Diperiksa kemarin</translation> <translation id="6710213216561001401">Sebelumnya</translation> <translation id="671481426037969117">Timer <ph name="FQDN" /> Anda telah berakhir. Timer akan dimulai lagi besok.</translation> +<translation id="6738516213925468394">Data Anda dienkripsi dengan <ph name="BEGIN_LINK" />frasa sandi sinkronisasi<ph name="END_LINK" /> pada tanggal <ph name="TIME" />. Masukkan frasa sandi untuk memulai sinkronisasi.</translation> <translation id="6738867403308150051">Mendownload…</translation> <translation id="6767294960381293877">Daftar perangkat yang dapat digunakan untuk berbagi tab terbuka dalam setengah layar.</translation> <translation id="6783942555455976443">Simpan halaman ini untuk dilihat nanti dan dapatkan pengingat</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb index 30652e4d..a886a21 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Ýttu á orð til að leita að því eða sjá tengdar aðgerðir</translation> <translation id="2760989362628427051">Kveikja á dökku þema þegar kveikt er á dökku þema eða rafhlöðusparnaði í tækinu</translation> <translation id="2762000892062317888">rétt í þessu</translation> +<translation id="276969039800130567">Skráð(ur) inn sem <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Fleiri stillingar sem tengjast persónuvernd, öryggi og gagnasöfnun má finna í <ph name="BEGIN_LINK" />Google þjónustur<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sek. eftir</translation> <translation id="2779651927720337254">mistókst</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Stjórna viðbrögðum</translation> <translation id="5626134646977739690">Nafn:</translation> <translation id="5628604359369369630">Ólesið – aðgengilegt án nettengingar</translation> +<translation id="5632627355679805402">Gögnin þín voru dulkóðuð með <ph name="BEGIN_LINK" />aðgangsorði Google<ph name="END_LINK" /> frá <ph name="TIME" />. Sláðu það inn til að hefja samstillingu.</translation> <translation id="5639724618331995626">Leyfa öll vefsvæði</translation> <translation id="5648166631817621825">Síðastliðna sjö daga</translation> <translation id="5655963694829536461">Leita í niðurhali</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Athugað í gær</translation> <translation id="6710213216561001401">Til baka</translation> <translation id="671481426037969117">Tímamælir <ph name="FQDN" /> rann út. Hann byrjar aftur á morgun.</translation> +<translation id="6738516213925468394">Gögnin þín voru dulkóðuð með <ph name="BEGIN_LINK" />aðgangsorði samstillingar<ph name="END_LINK" /> <ph name="TIME" />. Sláðu það inn til að hefja samstillingu.</translation> <translation id="6738867403308150051">Sækir…</translation> <translation id="6767294960381293877">Tækjalisti fyrir deilingu flipa opinn á hálfum skjánum.</translation> <translation id="6783942555455976443">Vistaðu þessa síðu svo þú getir notað hana síðar og fáðu áminningu um hana</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb index 438192c..404bc11 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Tocca una parola per eseguire una ricerca immediata o visualizzare le azioni correlate</translation> <translation id="2760989362628427051">Attiva il tema scuro quando sul dispositivo è attivo il tema scuro o il risparmio energetico</translation> <translation id="2762000892062317888">in questo istante</translation> +<translation id="276969039800130567">Accesso eseguito come <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Per altre impostazioni relative a privacy, sicurezza e raccolta dei dati, consulta la sezione <ph name="BEGIN_LINK" />Servizi Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sec rimanenti</translation> <translation id="2779651927720337254">non riuscito</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Gestisci reazioni</translation> <translation id="5626134646977739690">Nome:</translation> <translation id="5628604359369369630">Da leggere - Disponibili offline</translation> +<translation id="5632627355679805402">I tuoi dati sono stati criptati con la tua <ph name="BEGIN_LINK" />password Google<ph name="END_LINK" /> in data <ph name="TIME" />. Inserisci la password per avviare la sincronizzazione.</translation> <translation id="5639724618331995626">Consenti tutti i siti</translation> <translation id="5648166631817621825">Ultima settimana</translation> <translation id="5655963694829536461">Ricerca nei download</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Eseguito ieri</translation> <translation id="6710213216561001401">Precedente</translation> <translation id="671481426037969117">Il timer di <ph name="FQDN" /> è scaduto. Verrà riavviato domani.</translation> +<translation id="6738516213925468394">I tuoi dati sono stati criptati con la tua <ph name="BEGIN_LINK" />passphrase di sincronizzazione<ph name="END_LINK" /> in data <ph name="TIME" />. Inseriscila per avviare la sincronizzazione.</translation> <translation id="6738867403308150051">Download in corso…</translation> <translation id="6767294960381293877">Elenco di dispositivi con cui condividere una scheda aperto nella parte inferiore dello schermo.</translation> <translation id="6783942555455976443">Salva questa pagina per un secondo momento e ricevi un promemoria</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb index 6097d26a..b1c07bb 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">כדי לחפש באופן מיידי או לראות פעולות קשורות, צריך להקיש על מילה</translation> <translation id="2760989362628427051">עיצוב כהה מופעל כשבמכשיר פועלת האפשרות 'עיצוב כהה' או 'חיסכון בסוללה'</translation> <translation id="2762000892062317888">ברגע זה</translation> +<translation id="276969039800130567">מחובר באמצעות חשבון <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">אפשר למצוא הגדרות נוספות בנושא פרטיות, אבטחה ואיסוף נתונים בדף <ph name="BEGIN_LINK" />שירותי Google<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">נותרו <ph name="SECONDS" /> שניות</translation> <translation id="2779651927720337254">נכשל</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">ניהול התגובות</translation> <translation id="5626134646977739690">שם:</translation> <translation id="5628604359369369630">לא נקראו – זמינים במצב אופליין</translation> +<translation id="5632627355679805402">החל מ-<ph name="TIME" /> הנתונים שלך מוצפנים בעזרת <ph name="BEGIN_LINK" />הסיסמה שלך ל-Google<ph name="END_LINK" />. יש להזין את הסיסמה כדי להתחיל את הסנכרון.</translation> <translation id="5639724618331995626">התרת גישה לכל האתרים</translation> <translation id="5648166631817621825">מהשבוע האחרון</translation> <translation id="5655963694829536461">חיפוש ההורדות שלך</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">התבצעה בדיקה אתמול</translation> <translation id="6710213216561001401">הקודם</translation> <translation id="671481426037969117">זמן השימוש באפליקציה <ph name="FQDN" /> הסתיים. הטיימר יופעל מחדש מחר ואז אפשר יהיה להשתמש שוב באפליקציה.</translation> +<translation id="6738516213925468394">הנתונים שלך הוצפנו באמצעות <ph name="BEGIN_LINK" />ביטוי סיסמה לסנכרון<ph name="END_LINK" /> בתאריך <ph name="TIME" />. צריך להזין אותו כדי להתחיל את הסנכרון.</translation> <translation id="6738867403308150051">ההורדה מתבצעת...</translation> <translation id="6767294960381293877">רשימת המכשירים שאפשר לשתף איתם כרטיסייה נפתחה בחצי גובה המסך.</translation> <translation id="6783942555455976443">שמירת הדף לקריאה במועד מאוחר יותר והגדרת תזכורת</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb index 25fe14c..41583f69 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">単語をタップすると、検索をすばやく実行したり、関連する操作メニューを確認したりできます</translation> <translation id="2760989362628427051">デバイスのダークテーマまたはバッテリー セーバーがオンのときにダークテーマをオンにする</translation> <translation id="2762000892062317888">たった今</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> としてログインしています。</translation> <translation id="2776236159752647997">プライバシー、セキュリティ、データ収集に関連するその他の設定については、<ph name="BEGIN_LINK" />Google サービス<ph name="END_LINK" />をご覧ください</translation> <translation id="2777555524387840389">残り <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失敗</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">リアクションを管理</translation> <translation id="5626134646977739690">名前:</translation> <translation id="5628604359369369630">未読 - オフラインで閲覧可能</translation> +<translation id="5632627355679805402">データは <ph name="TIME" />に <ph name="BEGIN_LINK" />Google パスワード<ph name="END_LINK" />で暗号化されました。同期を開始するにはパスフレーズを入力してください。</translation> <translation id="5639724618331995626">すべてのサイトを許可</translation> <translation id="5648166631817621825">過去 7 日間</translation> <translation id="5655963694829536461">ダウンロードしたアイテムを検索</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">前回の確認: 昨日</translation> <translation id="6710213216561001401">前へ</translation> <translation id="671481426037969117"><ph name="FQDN" /> のタイマーが切れました。タイマーはまた明日開始されます。</translation> +<translation id="6738516213925468394">データは <ph name="TIME" />に<ph name="BEGIN_LINK" />同期パスフレーズ<ph name="END_LINK" />で暗号化されました。同期を開始するには、同期パスフレーズを入力してください。</translation> <translation id="6738867403308150051">ダウンロードしています…</translation> <translation id="6767294960381293877">タブを共有するデバイスのリストが画面の下半分に表示されました。</translation> <translation id="6783942555455976443">このページを後で読めるように保存してリマインダーを受け取ります</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb index 9f54a1c..d26699e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">შეეხეთ სიტყვას მყისიერი ძიებისთვის ან დაკავშირებული ქმედებების სანახავად</translation> <translation id="2760989362628427051">მუქი თემის ჩართვა მოწყობილობაზე მუქი თემის ან ბატარეის დამზოგის გააქტიურებისას</translation> <translation id="2762000892062317888">ახლახან</translation> +<translation id="276969039800130567">შესულია, როგორც <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">კონფიდენციალურობასთან, უსაფრთხოებასთან და მონაცემთა შეგროვებასთან დაკავშირებული სხვა პარამეტრებისთვის იხილეთ <ph name="BEGIN_LINK" />Google სერვისები<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">დარჩენილია <ph name="SECONDS" /> წმ</translation> <translation id="2779651927720337254">ვერ მოხერხდა</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">რეაქციების მართვა</translation> <translation id="5626134646977739690">სახელი:</translation> <translation id="5628604359369369630">წაუკითხავი — ხაზგარეშე რეჟიმში ხელმისაწვდომი</translation> +<translation id="5632627355679805402"><ph name="TIME" />-დან თქვენი მონაცემები დაშიფრულია <ph name="BEGIN_LINK" />Google პაროლით<ph name="END_LINK" />. შეიყვანეთ ის სინქრონიზაციის დასაწყებად.</translation> <translation id="5639724618331995626">ყველა საიტის დაშვება</translation> <translation id="5648166631817621825">ბოლო 7 დღე</translation> <translation id="5655963694829536461">თქვენს ჩამოტვირთვებში ძიება</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">შემოწმდა გუშინ</translation> <translation id="6710213216561001401">წინა</translation> <translation id="671481426037969117">თქვენი <ph name="FQDN" />-ის ტაიმერი ამოიწურა. ხვალ ის ხელახლა დაიწყება.</translation> +<translation id="6738516213925468394"><ph name="TIME" />-დან თქვენი მონაცემები დაშიფრულია <ph name="BEGIN_LINK" />სინქრონიზაციის საიდუმლო ფრაზით<ph name="END_LINK" />. შეიყვანეთ ის სინქრონიზაციის დასაწყებად.</translation> <translation id="6738867403308150051">ჩამოტვირთვა…</translation> <translation id="6767294960381293877">მოწყობილობების სია, რომლებთანაც უნდა გაზიარდეს ჩანართი, გახსნილია ნახევარ სიმაღლეზე.</translation> <translation id="6783942555455976443">შეინახეთ ეს გვერდი მოგვიანებით წასაკითხად და მიიღეთ შეხსენება</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 53c72a1c..ee7898f 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
@@ -253,7 +253,7 @@ <translation id="2647434099613338025">Тіл қосу</translation> <translation id="2650751991977523696">Файл қайта жүктеп алынсын ба?</translation> <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# аудиофайл}other{# аудиофайл}}</translation> -<translation id="2656405586795711023">Вебқолданбалар</translation> +<translation id="2656405586795711023">Веб-қолданбалар</translation> <translation id="2689830683995595741">Chrome браузерін пайдалану арқылы <ph name="BEGIN_LINK1" />Google Қызмет көрсету шарттарына<ph name="END_LINK1" /> және <ph name="BEGIN_LINK2" />Google Chrome және Chrome OS Қосымша қызмет көрсету шарттарына<ph name="END_LINK2" /> келісім бересіз. <ph name="BEGIN_LINK3" />Family Link арқылы басқарылатын Google есептік жазбаларына арналған Құпиялылық мәлімдемесі<ph name="END_LINK3" /> де қолданылады.</translation> <translation id="2704606927547763573">Көшірілген</translation> <translation id="2707726405694321444">Бетті жаңарту</translation> @@ -266,6 +266,7 @@ <translation id="2744248271121720757">Бірден іздеу үшін сөзді түртіңіз не ұқсас әрекеттерді қараңыз</translation> <translation id="2760989362628427051">Құрылғыдағы қараңғы тақырып немесе Батареяны үнемдеу режимі қосылып тұрғанда, қараңғы тақырыпты қосу</translation> <translation id="2762000892062317888">жаңа ғана</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ретінде кірген.</translation> <translation id="2776236159752647997">Құпиялылыққа, қауіпсіздікке және дерек жинауға қатысты басқа да параметрлерді <ph name="BEGIN_LINK" />Google қызметтері<ph name="END_LINK" /> бөлімінен қараңыз.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> сек қалды</translation> <translation id="2779651927720337254">қате шықты</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Жауап қайтаруды басқару</translation> <translation id="5626134646977739690">Аты:</translation> <translation id="5628604359369369630">Оқылмаған – Офлайн режимде қолжетімді</translation> +<translation id="5632627355679805402">Деректеріңіз <ph name="TIME" /> кезінде <ph name="BEGIN_LINK" />Google құпия сөзімен<ph name="END_LINK" /> шифрланған. Оны енгізіп, синхрондауды бастаңыз.</translation> <translation id="5639724618331995626">Барлық сайттарға рұқсат беру</translation> <translation id="5648166631817621825">Соңғы 7 күн</translation> <translation id="5655963694829536461">Жүктеп алынған файлдардан іздеу</translation> @@ -804,7 +806,7 @@ <translation id="6297765934698848803">Құрылғыңызды басқаратын ұйым камерыңызды өшірді.</translation> <translation id="6301525844455696527">Оқылмаған тізімді ашу</translation> <translation id="6303969859164067831">Есептік жазбадан шығу және синхрондау функциясын өшіру</translation> -<translation id="6312687380483398334">Вебқолданбалар (дыбыссыз)</translation> +<translation id="6312687380483398334">Веб-қолданбалар (дыбыссыз)</translation> <translation id="6316139424528454185">Android: қолдау көрсетілмейді</translation> <translation id="6324034347079777476">Android жүйесін синхрондау өшірілді</translation> <translation id="6324977638108296054">Бөлектелген мәтіннің сілтемесі жасалмады.</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Кеше тексерілді.</translation> <translation id="6710213216561001401">Алдыңғы</translation> <translation id="671481426037969117"><ph name="FQDN" /> таймерінің уақыты бітті. Ол ертең қайта басталады.</translation> +<translation id="6738516213925468394">Деректеріңіз <ph name="TIME" /> күні <ph name="BEGIN_LINK" />синхрондаудың құпия фразасымен<ph name="END_LINK" /> шифрланған. Синхрондау үшін оны енгізіңіз.</translation> <translation id="6738867403308150051">Жүктелуде…</translation> <translation id="6767294960381293877">Қойынды жіберілетін құрылғылар тізімі жарты экранға ашылған.</translation> <translation id="6783942555455976443">Бұл бетті кейінірек көруге сақтап, еске салғыш алыңыз.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb index 9830f1f..bba81b3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -62,6 +62,7 @@ <translation id="1376578503827013741">កំពុងគណនា...</translation> <translation id="1383876407941801731">ស្វែងរក</translation> <translation id="1384704387250346179">បកប្រែរូបភាពដោយប្រើ Google Lens <ph name="BEGIN_NEW" />ថ្មី<ph name="END_NEW" /></translation> +<translation id="1385855801883526502">កំណត់រចនាប័ទ្មការរំលេច</translation> <translation id="1386674309198842382">ដំណើរការ <ph name="LAST_UPDATED" /> ថ្ងៃមុន</translation> <translation id="1397811292916898096">ស្វែងរកដោយប្រើ <ph name="PRODUCT_NAME" /></translation> <translation id="1406000523432664303">“កុំតាមដាន”</translation> @@ -266,6 +267,7 @@ <translation id="2744248271121720757">ចុចពាក្យណាមួយដើម្បីស្វែងរកភ្លាមៗ ឬមើលសកម្មភាពដែលទាក់ទង</translation> <translation id="2760989362628427051">បើករចនាប័ទ្មងងឹត ពេលបើកកម្មវិធីសន្សំថ្ម ឬរចនាប័ទ្មងងឹតនៅលើឧបករណ៍របស់អ្នក</translation> <translation id="2762000892062317888">អំបាញ់មិញនេះ</translation> +<translation id="276969039800130567">បានចូលជា <ph name="USER_EMAIL_ADDRESS" />។</translation> <translation id="2776236159752647997">សម្រាប់ការកំណត់ជាច្រើនទៀត ដែលពាក់ព័ន្ធនឹងឯកជនភាព សុវត្ថិភាព និងការប្រមូលទិន្នន័យ សូមមើល<ph name="BEGIN_LINK" />សេវាកម្ម Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">នៅសល់ <ph name="SECONDS" /> វិនាទីទៀត</translation> <translation id="2779651927720337254">បានបរាជ័យ</translation> @@ -695,6 +697,7 @@ <translation id="562289928968387744">គ្រប់គ្រងប្រតិកម្ម</translation> <translation id="5626134646977739690">ឈ្មោះ៖</translation> <translation id="5628604359369369630">មិនទាន់អាន - អាចប្រើបានពេលគ្មានអ៊ីនធឺណិត</translation> +<translation id="5632627355679805402">ទិន្នន័យរបស់អ្នកត្រូវបានអ៊ីនគ្រីបដោយប្រើ<ph name="BEGIN_LINK" />ពាក្យសម្ងាត់ Google<ph name="END_LINK" /> របស់អ្នក នៅថ្ងៃទី <ph name="TIME" />។ បញ្ចូលពាក្យសម្ងាត់ ដើម្បីចាប់ផ្ដើមធ្វើសមកាលកម្ម។</translation> <translation id="5639724618331995626">អនុញ្ញាតទំព័រទាំងអស់</translation> <translation id="5648166631817621825">7 ថ្ងៃមុន</translation> <translation id="5655963694829536461">ស្វែងរកការទាញយករបស់អ្នក</translation> @@ -888,6 +891,7 @@ <translation id="670498945988402717">បានពិនិត្យមើលកាលពីម្សិលមិញ</translation> <translation id="6710213216561001401">មុន</translation> <translation id="671481426037969117">កម្មវិធីកំណត់ម៉ោង <ph name="FQDN" /> របស់អ្នកបានបញ្ចប់ហើយ។ វានឹងចាប់ផ្ដើមឡើងវិញនៅថ្ងៃស្អែក។</translation> +<translation id="6738516213925468394">ទិន្នន័យរបស់អ្នកត្រូវបានអ៊ីនគ្រីប ដោយប្រើ<ph name="BEGIN_LINK" />ឃ្លាសម្ងាត់សមកាលកម្ម<ph name="END_LINK" /> របស់អ្នក នៅថ្ងៃទី <ph name="TIME" />។ សូមបញ្ចូលឃ្លាសម្ងាត់ ដើម្បីចាប់ផ្ដើមធ្វើសមកាលកម្ម។</translation> <translation id="6738867403308150051">កំពុងទាញយក…</translation> <translation id="6767294960381293877">បានបើកពាក់កណ្ដាលអេក្រង់នូវបញ្ជីឧបករណ៍ដែលត្រូវចែករំលែកផ្ទាំងជាមួយ។</translation> <translation id="6783942555455976443">រក្សាទុកទំព័រនេះសម្រាប់ពេលក្រោយ និងទទួលការរំលឹក</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb index ba240dd..88bf142e5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
@@ -267,6 +267,7 @@ <translation id="2744248271121720757">ತತ್ಕ್ಷಣ ಹುಡುಕಲು ಅಥವಾ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಪದವನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation> <translation id="2760989362628427051">ನಿಮ್ಮ ಸಾಧನದ ಡಾರ್ಕ್ ಥೀಮ್ ಅಥವಾ ಬ್ಯಾಟರಿ ಸೇವರ್ ಆನ್ ಆಗಿರುವಾಗ, ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡಿ</translation> <translation id="2762000892062317888">ಈಗತಾನೇ</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ಹೆಸರಿನಲ್ಲಿ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗಿದೆ.</translation> <translation id="2776236159752647997">ಗೌಪ್ಯತೆ, ಸುರಕ್ಷತೆ ಮತ್ತು ಡೇಟಾ ಸಂಗ್ರಹಣೆಗೆ ಸಂಬಂಧಿಸಿದ ಹೆಚ್ಚಿನ ಸೆಟ್ಟಿಂಗ್ಗಳಿಗಾಗಿ <ph name="BEGIN_LINK" />Google ಸೇವೆಗಳನ್ನು<ph name="END_LINK" /> ನೋಡಿ.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ಸೆಕೆಂಡುಗಳು ಉಳಿದಿವೆ</translation> <translation id="2779651927720337254">ವಿಫಲವಾಗಿದೆ</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">ನಿರ್ಬಂಧಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="5626134646977739690">ಹೆಸರು:</translation> <translation id="5628604359369369630">ಓದಿಲ್ಲ - ಆಫ್ಲೈನ್ನಲ್ಲಿ ಲಭ್ಯವಿದೆ</translation> +<translation id="5632627355679805402">ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="TIME" /> ಸಮಯಕ್ಕೆ ನಿಮ್ಮ <ph name="BEGIN_LINK" />Google ಪಾಸ್ವರ್ಡ್<ph name="END_LINK" /> ನೊಂದಿಗೆ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ಅದನ್ನು ನಮೂದಿಸಿ.</translation> <translation id="5639724618331995626">ಎಲ್ಲ ಸೈಟ್ಗಳನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="5648166631817621825">ಕಳೆದ 7 ದಿನಗಳು</translation> <translation id="5655963694829536461">ನಿಮ್ಮ ಡೌನ್ಲೋಡ್ಗಳನ್ನು ಹುಡುಕಿ</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">ನಿನ್ನೆ ಪರಿಶೀಲಿಸಲಾಗಿದೆ</translation> <translation id="6710213216561001401">ಹಿಂದಿನದು</translation> <translation id="671481426037969117">ನಿಮ್ಮ <ph name="FQDN" /> ಟೈಮರ್ ಅವಧಿ ಮುಗಿದಿದೆ. ಅದು ನಾಳೆ ಮತ್ತೊಮ್ಮೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.</translation> +<translation id="6738516213925468394">ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="TIME" /> ಸಮಯಕ್ಕೆ ನಿಮ್ಮ <ph name="BEGIN_LINK" />ಸಿಂಕ್ ಪಾಸ್ಫ್ರೇಸ್<ph name="END_LINK" /> ನೊಂದಿಗೆ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ಅದನ್ನು ನಮೂದಿಸಿ.</translation> <translation id="6738867403308150051">ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…</translation> <translation id="6767294960381293877">ಟ್ಯಾಬ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕಾದ ಸಾಧನಗಳ ಪಟ್ಟಿಯನ್ನು ಅರ್ಧ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation> <translation id="6783942555455976443">ನಂತರದ ಬಳಕೆಗಾಗಿ ಈ ಪುಟವನ್ನು ಉಳಿಸಿ ಮತ್ತು ಜ್ಞಾಪನೆಯನ್ನು ಪಡೆಯಿರಿ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb index c9565a3..d408c4dd 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">단어를 탭하여 즉시 검색하거나 관련 작업을 확인하세요</translation> <translation id="2760989362628427051">기기의 어두운 테마 또는 절전 모드가 켜지면 어두운 테마를 사용 설정합니다.</translation> <translation id="2762000892062317888">방금 전</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" />(으)로 로그인되었습니다.</translation> <translation id="2776236159752647997">개인정보 보호, 보안, 데이터 수집에 관한 추가 설정을 보려면 <ph name="BEGIN_LINK" />Google 서비스<ph name="END_LINK" />를 참고하세요.</translation> <translation id="2777555524387840389"><ph name="SECONDS" />초 남음</translation> <translation id="2779651927720337254">실패</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">반응 관리</translation> <translation id="5626134646977739690">이름:</translation> <translation id="5628604359369369630">읽지 않음 - 오프라인에서 사용 가능</translation> +<translation id="5632627355679805402"><ph name="TIME" />자로 데이터가 <ph name="BEGIN_LINK" />Google 비밀번호<ph name="END_LINK" />를 통해 암호화되었습니다. 동기화를 시작하려면 비밀번호를 입력하세요.</translation> <translation id="5639724618331995626">모든 사이트 허용</translation> <translation id="5648166631817621825">지난 7일</translation> <translation id="5655963694829536461">다운로드 항목 검색</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">어제 확인됨</translation> <translation id="6710213216561001401">이전</translation> <translation id="671481426037969117"><ph name="FQDN" /> 타이머가 종료되었습니다. 타이머는 내일 다시 시작됩니다.</translation> +<translation id="6738516213925468394"><ph name="TIME" />자로 <ph name="BEGIN_LINK" />동기화 암호<ph name="END_LINK" />를 통해 데이터가 암호화되었습니다. 동기화를 시작하려면 암호를 입력하세요.</translation> <translation id="6738867403308150051">다운로드 중...</translation> <translation id="6767294960381293877">탭을 공유할 기기 목록이 절반 높이로 열렸습니다.</translation> <translation id="6783942555455976443">나중에 읽을 수 있게 페이지를 저장하여 알림을 받으세요.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb index c49d5af..2005160 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Сөздү ыкчам издөө же окшош аракеттерди көрүү үчүн таптап коюңуз</translation> <translation id="2760989362628427051">Түзмөгүңүз кубатты үнөмдөө режиминде иштегенде, Батареяны үнөмдөгүчтү күйгүзүңүз</translation> <translation id="2762000892062317888">жаңы эле</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> катары кирди.</translation> <translation id="2776236159752647997">Купуялыкка, коопсуздукка жана дайындарды чогултууга байланыштуу дагы башка жөндөөлөрдү көрүү үчүн, <ph name="BEGIN_LINK" />Google кызматтары<ph name="END_LINK" /> бөлүмүнө өтүңүз</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> сек. калды</translation> <translation id="2779651927720337254">ката</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Реакцияларды башкаруу</translation> <translation id="5626134646977739690">Аты:</translation> <translation id="5628604359369369630">Окула элек – Оффлайн режиминде жеткиликтүү</translation> +<translation id="5632627355679805402">Дайын-даректериңиз <ph name="BEGIN_LINK" />Google сырсөзүңүз<ph name="END_LINK" /> менен <ph name="TIME" /> шифрленген. Шайкештирип баштоо үчүн, сырсөзүңүздү киргизиңиз.</translation> <translation id="5639724618331995626">Бардык сайттарга кирүүгө уруксат</translation> <translation id="5648166631817621825">Акыркы 7 күн</translation> <translation id="5655963694829536461">Жүктөп алган нерселериңизди издеңиз</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Кечээ текшерилди</translation> <translation id="6710213216561001401">Мурунку</translation> <translation id="671481426037969117"><ph name="FQDN" /> таймериңиздин убакыты бүттү. Ал эртең кайра башталат.</translation> +<translation id="6738516213925468394">Дайын-даректериңиз <ph name="BEGIN_LINK" />шайкештирүүчү өткөрүүчү сүйлөм<ph name="END_LINK" /> менен <ph name="TIME" /> шифрлеген. Шайкештирип баштоо үчүн, аны киргизиңиз.</translation> <translation id="6738867403308150051">Жүктөлүп алынууда…</translation> <translation id="6767294960381293877">Жалпы түзмөктөрдүн тизмеси көрсөтүлгөн өтмөк экрандын жарымында ачылды.</translation> <translation id="6783942555455976443">Бул баракты кийинчерээк көрүү үчүн сактоо жана эскертме алуу</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb index b08fb3a6..317fe0ae 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">ແຕະຄຳສັບໃດໜຶ່ງເພື່ອຊອກຫາໃນທັນທີ ຫຼື ເບິ່ງການດຳເນີນການທີ່ກ່ຽວຂ້ອງ</translation> <translation id="2760989362628427051">ເປີດຮູບແບບສີສັນມືດເມື່ອຮູບແບບສີສັນມືດ ຫຼື ຕົວປະຢັດແບັດເຕີຣີຂອງອຸປະກອນຂອງທ່ານເປີດຢູ່</translation> <translation id="2762000892062317888">ຕອນນີ້</translation> +<translation id="276969039800130567">ລົງຊື່ເຂົ້າໃຊ້ເປັນ <ph name="USER_EMAIL_ADDRESS" /> ແລ້ວ.</translation> <translation id="2776236159752647997">ສຳລັບການຕັ້ງຄ່າເພີ່ມເຕີມທີ່ກ່ຽວຂ້ອງກັບຄວາມເປັນສ່ວນຕົວ, ຄວາມປອດໄພ ແລະ ການເກັບກຳຂໍ້ມູນ, ກະລຸນາເບິ່ງ <ph name="BEGIN_LINK" />ການບໍລິການຂອງ Google<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">ຍັງເຫຼືອ <ph name="SECONDS" /> ວິ</translation> <translation id="2779651927720337254">ບໍ່ສໍາເລັດ</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">ຈັດການການໂຕ້ຕອບ</translation> <translation id="5626134646977739690">ຊື່:</translation> <translation id="5628604359369369630">ຍັງບໍ່ໄດ້ອ່ານ - ອ່ານແບບອອບລາຍໄດ້</translation> +<translation id="5632627355679805402">ຂໍ້ມູນຂອງທ່ານຖືກເຂົ້າລະຫັດໄວ້ດ້ວຍ <ph name="BEGIN_LINK" />ລະຫັດຜ່ານ Google<ph name="END_LINK" /> ຂອງທ່ານມາຮອດ <ph name="TIME" />. ປ້ອນມັນເພື່ອເລີ່ມການຊິ້ງຂໍ້ມູນ.</translation> <translation id="5639724618331995626">ອະນຸຍາດທຸກເວັບໄຊ</translation> <translation id="5648166631817621825">7 ມື້ທີ່ຜ່ານມາ</translation> <translation id="5655963694829536461">ຊອກຫາການດາວໂຫຼດຂອງທ່ານ</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">ກວດແລ້ວມື້ວານນີ້</translation> <translation id="6710213216561001401">ຜ່ານມາ</translation> <translation id="671481426037969117">ເວລາແອັບ <ph name="FQDN" /> ຂອງທ່ານໝົດແລ້ວ. ມັນຈະເລີ່ມໃໝ່ໃນມື້ອື່ນ.</translation> +<translation id="6738516213925468394">ຂໍ້ມູນຂອງທ່ານຖືກເຂົ້າລະຫັດໄວ້ດ້ວຍ <ph name="BEGIN_LINK" />ລະຫັດຜ່ານການຊິ້ງຂໍ້ມູນ<ph name="END_LINK" /> ເມື່ອ <ph name="TIME" />. ກະລຸນາປ້ອນມັນເພື່ອເລີ່ມການຊິ້ງຂໍ້ມູນ</translation> <translation id="6738867403308150051">ກໍາລັງດາວໂຫຼດ...</translation> <translation id="6767294960381293877">ລາຍການອຸປະກອນທີ່ຈະແບ່ງປັນແຖບນຳໂດຍເປີດຢູ່ທີ່ລະດັບລວງສູງເຄິ່ງຈໍ.</translation> <translation id="6783942555455976443">ບັນທຶກໜ້ານີ້ໄວ້ອ່ານພາຍຫຼັງ ແລະ ຮັບການແຈ້ງເຕືອນ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb index 8b383288..8644c479 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Palieskite žodį ir ieškokite akimirksniu arba peržiūrėkite susijusius veiksmus</translation> <translation id="2760989362628427051">Įjungti tamsiąją temą, kai įjungta įrenginio tamsioji tema arba akumuliatoriaus tausojimo priemonė</translation> <translation id="2762000892062317888">ką tik</translation> +<translation id="276969039800130567">Prisijungta kaip <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Daugiau nustatymų, susijusių su privatumu, sauga ir duomenų rinkimu, žr. skiltyje <ph name="BEGIN_LINK" />„Google“ paslaugos“<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Liko <ph name="SECONDS" /> sek.</translation> <translation id="2779651927720337254">nepavyko</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Tvarkyti reakcijas</translation> <translation id="5626134646977739690">Pavadinimas:</translation> <translation id="5628604359369369630">Neskaityta – pasiekiama neprisijungus</translation> +<translation id="5632627355679805402">Nuo <ph name="TIME" /> duomenys užšifruoti naudojant <ph name="BEGIN_LINK" />„Google“ slaptažodį<ph name="END_LINK" />. Įveskite jį, kad pradėtumėte sinchronizuoti.</translation> <translation id="5639724618331995626">Leisti visas svetaines</translation> <translation id="5648166631817621825">Pastarosios 7 dienos</translation> <translation id="5655963694829536461">Ieškokite atsisiųstų elementų</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Tikrinta vakar</translation> <translation id="6710213216561001401">Ankstesnė</translation> <translation id="671481426037969117"><ph name="FQDN" /> laikmatis sustojo. Jis vėl bus paleistas rytoj.</translation> +<translation id="6738516213925468394"><ph name="TIME" /> duomenys buvo užšifruoti naudojant <ph name="BEGIN_LINK" />sinchronizavimo slaptafrazę<ph name="END_LINK" />. Įveskite ją, kad pradėtumėte sinchronizuoti.</translation> <translation id="6738867403308150051">Atsisiunčiama...</translation> <translation id="6767294960381293877">Įrenginių, su kuriais reikia bendrinti skirtuką, sąrašas atidarytas (pusė aukščio).</translation> <translation id="6783942555455976443">Išsaugokite šį puslapį, jei norite peržiūrėti vėliau, ir gaukite priminimą</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb index 62c9bfa..2d523bf 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Pieskarieties vārdam, lai meklētu tūlīt vai skatītu saistītas darbības.</translation> <translation id="2760989362628427051">Ieslēgt tumšo motīvu, kad ierīcē ir ieslēgts tumšais motīvs vai akumulatora enerģijas taupīšanas režīms</translation> <translation id="2762000892062317888">tikko</translation> +<translation id="276969039800130567">Pierakstīts ar adresi <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Papildu iestatījumus, kas attiecas uz konfidencialitāti, drošību un datu vākšanu, skatiet sadaļā <ph name="BEGIN_LINK" />Google pakalpojumi<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">Atlikušas <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">neizdevās</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Pārvaldīt reakcijas</translation> <translation id="5626134646977739690">Nosaukums:</translation> <translation id="5628604359369369630">Nelasītas — pieejamas bezsaistē</translation> +<translation id="5632627355679805402">Jūsu dati tika šifrēti, izmantojot jūsu <ph name="BEGIN_LINK" />Google paroli<ph name="END_LINK" />, no šāda datuma: <ph name="TIME" />. Ievadiet paroli, lai sāktu sinhronizāciju.</translation> <translation id="5639724618331995626">Atļaut apmeklēt visas vietnes</translation> <translation id="5648166631817621825">Pēdējās 7 dienas</translation> <translation id="5655963694829536461">Meklējiet savas lejupielādes</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Pārbaudīts: vakar</translation> <translation id="6710213216561001401">Iepriekšējais</translation> <translation id="671481426037969117">Jūsu lietotnes <ph name="FQDN" /> taimera laiks ir beidzies. Tas atkal sāksies rīt.</translation> +<translation id="6738516213925468394">Jūsu dati tika šifrēti, izmantojot jūsu <ph name="BEGIN_LINK" />sinhronizācijas ieejas frāzi<ph name="END_LINK" />šādā datumā: <ph name="TIME" />. Lai sāktu sinhronizāciju, ievadiet ieejas frāzi.</translation> <translation id="6738867403308150051">Notiek lejupielāde…</translation> <translation id="6767294960381293877">Ierīču saraksts, ar ko kopīgot cilni, ir atvērts pusekrāna augstumā.</translation> <translation id="6783942555455976443">Saglabājiet šo lapu lasīšanai vēlāk un saņemiet atgādinājumu</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb index 272d881..41fa8a7 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Допрете даден збор за да пребарувате веднаш или за да видите слични дејства</translation> <translation id="2760989362628427051">Вклучува темна тема кога е вклучена темната тема или „Штедачот на батерија“ на уредот</translation> <translation id="2762000892062317888">пред малку</translation> +<translation id="276969039800130567">Најавени сте како <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">За повеќе поставки што се однесуваат на приватноста, безбедноста и прибирањето податоци, одете на <ph name="BEGIN_LINK" />Услуги на Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Останаа <ph name="SECONDS" /> секунди</translation> <translation id="2779651927720337254">не успеа</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Управувајте со реакциите</translation> <translation id="5626134646977739690">Име:</translation> <translation id="5628604359369369630">Непрочитани - Достапни офлајн</translation> +<translation id="5632627355679805402">Податоците се шифрирани со вашата <ph name="BEGIN_LINK" />лозинка за Google<ph name="END_LINK" /> почнувајќи од <ph name="TIME" />. Внесете ја за да започне синхронизацијата.</translation> <translation id="5639724618331995626">Дозволи ги сите сајтови</translation> <translation id="5648166631817621825">Изминатите 7 дена</translation> <translation id="5655963694829536461">Пребарајте ги преземањата</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Проверено вчера</translation> <translation id="6710213216561001401">Претходно</translation> <translation id="671481426037969117">Тајмерот за <ph name="FQDN" /> истече. Ќе започне одново утре.</translation> +<translation id="6738516213925468394">Податоците се шифрирани со вашата <ph name="BEGIN_LINK" />лозинка за синхронизација<ph name="END_LINK" /> на <ph name="TIME" />. Внесете ја за да започне синхронизацијата.</translation> <translation id="6738867403308150051">Се презема…</translation> <translation id="6767294960381293877">Списокот со уреди за споделување картичка е отворен на половина екран.</translation> <translation id="6783942555455976443">Зачувајте ја страницава за подоцна и добијте потсетник</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb index f13b261..88c9cab1 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">പെട്ടെന്ന് തിരയാനോ ബന്ധപ്പെട്ട പ്രവർത്തനങ്ങൾ കാണാനോ ഒരു വാക്കിൽ ടാപ്പ് ചെയ്യുക</translation> <translation id="2760989362628427051">നിങ്ങളുടെ ഉപകരണത്തിന്റെ ഡാർക്ക് തീമോ ബാറ്ററി ലാഭിക്കലോ ഓണായിരിക്കുമ്പോൾ ഡാർക്ക് തീം ഓണാക്കുക</translation> <translation id="2762000892062317888">ഇപ്പോൾ</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> എന്നായി സൈൻ ഇൻ ചെയ്തു.</translation> <translation id="2776236159752647997">സ്വകാര്യത, സുരക്ഷ, ഡാറ്റാ ശേഖരണം എന്നിവയുമായി ബന്ധപ്പെട്ട കൂടുതൽ ക്രമീകരണത്തിന്, <ph name="BEGIN_LINK" />Google സേവനങ്ങൾ<ph name="END_LINK" /> കാണുക</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> സെക്കൻഡ് ശേഷിക്കുന്നു</translation> <translation id="2779651927720337254">പരാജയപ്പെട്ടു</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">പ്രതികരണങ്ങൾ മാനേജ് ചെയ്യുക</translation> <translation id="5626134646977739690">നാമം:</translation> <translation id="5628604359369369630">വായിക്കാത്തവ - ഓഫ്ലൈനിൽ ലഭ്യമാണ്</translation> +<translation id="5632627355679805402"><ph name="TIME" />-ന് <ph name="BEGIN_LINK" />Google പാസ്വേഡ്<ph name="END_LINK" /> ഉപയോഗിച്ച് നിങ്ങളുടെ ഡാറ്റ എൻക്രിപ്റ്റ് ചെയ്തു. സമന്വയിപ്പിക്കൽ തുടങ്ങുന്നതിന് ഇത് നൽകുക.</translation> <translation id="5639724618331995626">എല്ലാ സൈറ്റുകളെയും അനുവദിക്കുക</translation> <translation id="5648166631817621825">കഴിഞ്ഞ 7 ദിവസം</translation> <translation id="5655963694829536461">നിങ്ങളുടെ ഡൗൺലോഡുകൾ തിരയുക</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">ഇന്നലെ പരിശോധിച്ചു</translation> <translation id="6710213216561001401">മുമ്പത്തേത്</translation> <translation id="671481426037969117">നിങ്ങളുടെ <ph name="FQDN" /> ടൈമർ അവസാനിച്ചു. ഇത് നാളെ വീണ്ടും ആരംഭിക്കും.</translation> +<translation id="6738516213925468394"><ph name="TIME" />-ന് നിങ്ങളുടെ <ph name="BEGIN_LINK" />സമന്വയ പാസ്ഫ്രെയ്സ്<ph name="END_LINK" /> ഉപയോഗിച്ച് ഡാറ്റ എൻക്രിപ്റ്റ് ചെയ്തു. സമന്വയം ആരംഭിക്കുന്നതിന് ഇത് നൽകുക.</translation> <translation id="6738867403308150051">ഡൗൺലോഡുചെയ്യുന്നു...</translation> <translation id="6767294960381293877">പകുതി ഉയരത്തിൽ ടാബ് പങ്കിടാനാകുന്ന ഉപകരണങ്ങളുടെ ലിസ്റ്റ്.</translation> <translation id="6783942555455976443">പിന്നീട് വായിക്കുന്നതിന് ഈ പേജ് സംരക്ഷിച്ച് റിമൈൻഡർ നേടുക</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb index 06d53c6..67e4945 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -62,6 +62,7 @@ <translation id="1376578503827013741">Тооцоолж байна...</translation> <translation id="1383876407941801731">Хайлт</translation> <translation id="1384704387250346179">Google Дурангаар зураг орчуул <ph name="BEGIN_NEW" />Шинэ<ph name="END_NEW" /></translation> +<translation id="1385855801883526502">Тодруулгыг стильжүүлэх</translation> <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> өдрийн өмнөөс идэвхтэй</translation> <translation id="1397811292916898096"><ph name="PRODUCT_NAME" />-р хайх</translation> <translation id="1406000523432664303">“Бүү дага”</translation> @@ -266,6 +267,7 @@ <translation id="2744248271121720757">Шууд хайх эсвэл холбоотой үйлдлийг харахын тулд үгийг товшино уу</translation> <translation id="2760989362628427051">Таны төхөөрөмжийн бараан загвар эсвэл Батарей хэмнэгч асаалттай үед бараан загварыг асаах</translation> <translation id="2762000892062317888">дөнгөж сая</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" />-н нэрээр нэвтэрсэн байна.</translation> <translation id="2776236159752647997">Нууцлал, аюулгүй байдал болон өгөгдөл цуглуулахтай холбоотой бусад тохиргоог <ph name="BEGIN_LINK" />Google-н үйлчилгээнүүд<ph name="END_LINK" />-ээс харна уу</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> секунд үлдсэн</translation> <translation id="2779651927720337254">татаж чадсангүй</translation> @@ -694,6 +696,7 @@ <translation id="562289928968387744">Хариу үйлдлийг удирдах</translation> <translation id="5626134646977739690">Нэр:</translation> <translation id="5628604359369369630">Уншаагүй - Офлайнаар боломжтой</translation> +<translation id="5632627355679805402">Таны өгөгдлийг таны <ph name="BEGIN_LINK" />Google нууц үгтэй<ph name="END_LINK" /> <ph name="TIME" />-с эхлэн шифрлэсэн байна. Синкийг эхлүүлэхийн тулд үүнийг оруулна уу.</translation> <translation id="5639724618331995626">Бүх сайтыг зөвшөөрөх</translation> <translation id="5648166631817621825">Сүүлийн 7 хоног</translation> <translation id="5655963694829536461">Татаж авсан файлаа хайх</translation> @@ -887,6 +890,7 @@ <translation id="670498945988402717">Өчигдөр шалгасан</translation> <translation id="6710213216561001401">Өмнөх</translation> <translation id="671481426037969117">Таны <ph name="FQDN" />-н цаг хэмжигчийн хугацаа дууссан байна. Энэ нь маргааш дахин эхэлнэ.</translation> +<translation id="6738516213925468394">Таны өгөгдлийг таны <ph name="BEGIN_LINK" />синкийн нэвтрэх үгтэй<ph name="END_LINK" /> <ph name="TIME" />-д синк хийсэн байна. Синкийг эхлүүлэхийн тулд үүнийг оруулна уу.</translation> <translation id="6738867403308150051">Татаж байна…</translation> <translation id="6767294960381293877">Таб хуваалцах төхөөрөмжийн жагсаалтыг хагас өндрөөр нээлээ.</translation> <translation id="6783942555455976443">Энэ хуудсыг дараа зочлохоор хадгалж, сануулагч аваарай</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb index edc79b7bd..407c1b3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -76,6 +76,7 @@ <translation id="147113415845704694">“आजचे हवामान कसे आहे?” असे म्हणून पाहा</translation> <translation id="1477626028522505441">सर्व्हर समस्यांमुळे <ph name="FILE_NAME" /> डाउनलोड अयशस्वी झाले.</translation> <translation id="1492417797159476138">तुम्ही या साइटसाठी आधीच वापरकर्ता नाव सेव्ह केले आहे</translation> +<translation id="1493287004536771723">तुम्ही <ph name="SITE_NAME" /> ला फॉलो करत आहात</translation> <translation id="1506061864768559482">शोध इंजीन</translation> <translation id="1513352483775369820">बुकमार्क आणि वेब इतिहास</translation> <translation id="1513858653616922153">पासवर्ड हटवा</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">झटपट शोधण्यासाठी किंवा संबंधित ॲक्शन पाहण्यासाठी एखाद्या शब्दावर टॅप करा</translation> <translation id="2760989362628427051">तुमच्या डिव्हाइसची गडद थीम किंवा बॅटरी सेव्हर सुरू असताना गडद थीम सुरू करा</translation> <translation id="2762000892062317888">आत्ताच</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> म्हणून साइन इन केले</translation> <translation id="2776236159752647997">गोपनीयता, सुरक्षा आणि डेटा संग्रह यांच्याशी संबंधित आणखी सेटिंग्जसाठी, <ph name="BEGIN_LINK" />Google सेवा<ph name="END_LINK" /> पाहा</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> सेकंद शिल्लक</translation> <translation id="2779651927720337254">अयशस्वी झाले</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">तुमच्या <ph name="BEGIN_LINK" />Google खात्यामध्ये<ph name="END_LINK" /> सेव्ह केलेले पासवर्ड पाहा आणि व्यवस्थापित करा</translation> <translation id="2818669890320396765">तुमच्या सर्व डिव्हाइसवर तुमचे बुकमार्क मिळवण्यासाठी, साइन इन करा आणि सिंक सुरू करा</translation> <translation id="2827278682606527653">फीड कार्ड मेनू अर्ध्या उंचीवर आहे</translation> +<translation id="2830783625999891985">क्लिपबोर्डचा आशय लपवला</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" /> ला अनफॉलो करा</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{एका दिवसापूर्वी तपासले}other{# दिवसांपूर्वी तपासले}}</translation> <translation id="2842985007712546952">मुख्य फोल्डर</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB उपलब्ध</translation> <translation id="3549657413697417275">तुमचा इतिहास शोधा</translation> <translation id="3557336313807607643">संपर्कांमध्ये जोडा</translation> +<translation id="3563767357928833671">क्लिपबोर्डचा आशय दाखवला</translation> <translation id="3566923219790363270">Chrome अजूनही VR ची तयारी करत आहे. Chrome नंतर रीस्टार्ट करा.</translation> <translation id="3568688522516854065">तुमच्या इतर डिव्हाइसवरून तुमचे टॅब मिळविण्यासाठी, साइन इन करा आणि सिंक सुरू करा</translation> <translation id="3587482841069643663">सर्व</translation> @@ -542,6 +546,7 @@ <translation id="4684427112815847243">सर्वकाही संंकालित करा</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 आणि <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> अधिक}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 आणि <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> अधिक}}</translation> <translation id="4696983787092045100">तुमच्या डिव्हाइसवर एसएमएस पाठवा</translation> +<translation id="4697543623252708062">लवकरच, तुम्ही नवीन टॅब उघडल्यानंतर तुम्हाला <ph name="SITE_NAME" /> वरील स्टोरी दिसतील. तुम्ही फॉलो करता त्या साइट, फॉलो व्यवस्थापित करा यामध्ये नियंत्रित करू शकता.</translation> <translation id="4699172675775169585">कॅशे इमेज आणि फाइल</translation> <translation id="4714588616299687897">तुमचा सुमारे 60% डेटा वाचवा</translation> <translation id="4716066120200945007">फॉलो करत आहे</translation> @@ -691,6 +696,7 @@ <translation id="562289928968387744">प्रतिक्रिया व्यवस्थापित करा</translation> <translation id="5626134646977739690">नाव:</translation> <translation id="5628604359369369630">न वाचलेले - ऑफलाइन उपलब्ध आहे</translation> +<translation id="5632627355679805402">तुमचा डेटा तुमच्या <ph name="BEGIN_LINK" />Google पासवर्ड <ph name="END_LINK" /> ने <ph name="TIME" /> वाजता एंक्रिप्ट केला गेला होता. सिंक सुरू करण्यासाठी तो एंटर करा.</translation> <translation id="5639724618331995626">सर्व साइटना अनुमती द्या</translation> <translation id="5648166631817621825">अखेरच्या 7 दिवसांमधील</translation> <translation id="5655963694829536461">तुमचे डाउनलोड शोधा</translation> @@ -884,6 +890,7 @@ <translation id="670498945988402717">काल तपासले</translation> <translation id="6710213216561001401">मागील</translation> <translation id="671481426037969117">तुमचा <ph name="FQDN" /> टायमर झाला आहे. तो उद्या पुन्हा सुरू होईल.</translation> +<translation id="6738516213925468394">तुमचा डेटा तुमच्या <ph name="BEGIN_LINK" />सिंक पासफ्रेज<ph name="END_LINK" /> ने <ph name="TIME" /> वाजता एंक्रिप्ट केला गेला होता. सिंक सुरू करण्यासाठी तो एंटर करा.</translation> <translation id="6738867403308150051">डाउनलोड करीत आहे…</translation> <translation id="6767294960381293877">अर्ध्या उंचीवर उघडलेल्या टॅबसह शेअर करण्यासाठी डिव्हाइसची सूची.</translation> <translation id="6783942555455976443">हे पेज नंतर वाचण्यासाठी सेव्ह करा आणि रिमाइंडर मिळवा</translation> @@ -1214,6 +1221,7 @@ <translation id="8993760627012879038">गुप्त मोडमध्ये एक नवीन टॅब उघडा</translation> <translation id="8996847606757455498">दुसरा पुरवठादार निवडा</translation> <translation id="8998729206196772491">तुम्ही <ph name="MANAGED_DOMAIN" /> ने व्यवस्थापित केलेल्या खात्यासह साइन इन करत आहात आणि त्याच्या ॲडमिनिस्ट्रेटरला तुमच्या Chrome डेटाचे नियंत्रण देत आहात. तुमचा डेटा कायमचा या खात्यामध्ये असेल. Chrome मधून साइन आउट केल्याने तुमचा डेटा या डिव्हाइस वरून हटवला जाईल परंतु तो तुमच्या Google खात्यामध्ये स्टोअर केलेला असेल.</translation> +<translation id="9000233047676755924">आता, तुम्ही नवीन टॅब उघडल्यानंतर तुम्हाला <ph name="SITE_NAME" /> वरील स्टोरी दिसतील. तुम्ही फॉलो करता त्या साइट, फॉलो व्यवस्थापित करा यामध्ये नियंत्रित करू शकता.</translation> <translation id="9022774213089566801">वारंवार भेट दिलेल्या</translation> <translation id="9028914725102941583">संपूर्ण डिव्हाइसवर शेअर करण्यासाठी सिंक सुरू करा</translation> <translation id="9040142327097499898">सूचनांना अनुमती आहे. या डिव्हाइससाठी स्थान बंद आहे.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb index b22daab..ef45da3f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Ketik perkataan untuk mencari dengan serta-merta atau melihat tindakan yang berkaitan</translation> <translation id="2760989362628427051">Hidupkan tema gelap apabila tema gelap atau Penjimat Bateri peranti anda dihidupkan</translation> <translation id="2762000892062317888">sebentar tadi</translation> +<translation id="276969039800130567">Log masuk sebagai <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Untuk mendapatkan pelbagai lagi tetapan yang berkaitan dengan privasi, keselamatan dan pengumpulan data, lihat <ph name="BEGIN_LINK" />perkhidmatan Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> saat lagi</translation> <translation id="2779651927720337254">gagal</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Urus reaksi</translation> <translation id="5626134646977739690">Nama:</translation> <translation id="5628604359369369630">Belum dibaca - Tersedia di luar talian</translation> +<translation id="5632627355679805402">Data anda disulitkan dengan <ph name="BEGIN_LINK" />kata laluan Google<ph name="END_LINK" /> anda pada <ph name="TIME" />. Masukkan kata laluan itu untuk memulakan penyegerakan.</translation> <translation id="5639724618331995626">Benarkan semua tapak</translation> <translation id="5648166631817621825">7 hari lalu</translation> <translation id="5655963694829536461">Cari muat turun anda</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Disemak semalam</translation> <translation id="6710213216561001401">Sebelumnya</translation> <translation id="671481426037969117">Pemasa <ph name="FQDN" /> anda sudah tamat. Pemasa akan bermula lagi esok.</translation> +<translation id="6738516213925468394">Data anda disulitkan dengan <ph name="BEGIN_LINK" />ungkapan laluan segerak<ph name="END_LINK" /> anda pada <ph name="TIME" />. Masukkannya untuk memulakan penyegerakan.</translation> <translation id="6738867403308150051">Memuat turun…</translation> <translation id="6767294960381293877">Senarai peranti untuk berkongsi tab dibuka pada ketinggian separuh.</translation> <translation id="6783942555455976443">Simpan halaman ini untuk kemudian dan dapatkan peringatan</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb index 1d74a61..b9c334d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">ချက်ချင်းရှာဖွေရန် သို့မဟုတ် သက်ဆိုင်သည့် လုပ်ဆောင်ချက်များကို ကြည့်ရန် စာလုံးတစ်လုံးကို တို့ပါ</translation> <translation id="2760989362628427051">သင့်စက်၏ မှောင်သည့်အပြင်အဆင် သို့မဟုတ် ဘက်ထရီအားထိန်းကို ဖွင့်ထားသည့်အခါ မှောင်သည့် အပြင်အဆင်ကို ဖွင့်ပါ</translation> <translation id="2762000892062317888">ယခုလေးတင်</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> သုံး၍ ၐင်ပါ။</translation> <translation id="2776236159752647997">ပုဂ္ဂိုလ်ရေးဆိုင်ရာ၊ လုံခြုံရေး၊ ဒေတာစုဆောင်းမှုတို့နှင့် ဆက်စပ်နေသည့် နောက်ထပ် ဆက်တင်များအတွက် <ph name="BEGIN_LINK" />Google ဝန်ဆောင်မှုများ<ph name="END_LINK" /> ကို ကြည့်ပါ</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> စက္ကန့် ကျန်သည်</translation> <translation id="2779651927720337254">ဒေါင်းလုဒ် မပြီးဆုံးပါ</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">တုံ့ပြန်မှုများကို စီမံရန်</translation> <translation id="5626134646977739690">အမည်:</translation> <translation id="5628604359369369630">မဖတ်ရသေး - အော့ဖ်လိုင်းရနိုင်သည်</translation> +<translation id="5632627355679805402">သင့်ဒေတာများကို သင်၏ <ph name="BEGIN_LINK" />Google စကားဝှက်<ph name="END_LINK" />ဖြင့် <ph name="TIME" /> တွင် အသွင်ဝှက်ထားပါသည်။ စင့်ခ်စလုပ်ရန် ၎င်းကိုထည့်ပါ။</translation> <translation id="5639724618331995626">ဆိုက်အားလုံးကို ခွင့်ပြုရန်</translation> <translation id="5648166631817621825">ပြီးခဲ့သည့် ၇ ရက်</translation> <translation id="5655963694829536461">ဒေါင်းလုဒ်များကို ရှာဖွေပါ</translation> @@ -887,6 +889,7 @@ <translation id="670498945988402717">မနေ့က စစ်ဆေးခဲ့သည်</translation> <translation id="6710213216561001401">အရင်</translation> <translation id="671481426037969117">သင်၏ <ph name="FQDN" /> တိုင်မာ အချိန်ကုန်သွားပါပြီ။ မနက်ဖြန် ထပ်မံစတင်ပါမည်။</translation> +<translation id="6738516213925468394">သင့်ဒေတာများကို သင်၏ <ph name="BEGIN_LINK" />စင့်ခ်စကားဝှက်စာ<ph name="END_LINK" />ဖြင့် <ph name="TIME" /> တွင် အသွင်ဝှက်ထားပါသည်။ စင့်ခ်စလုပ်ရန် ၎င်းကိုထည့်ပါ။</translation> <translation id="6738867403308150051">ဒေါင်းလုဒ် လုပ်နေ…</translation> <translation id="6767294960381293877">တဘ်မျှဝေရန် စက်ပစ္စည်းစာရင်း၏ အမြင့်ကို တစ်ဝက်ဖွင့်ထားသည်။</translation> <translation id="6783942555455976443">ဤစာမျက်နှာကို နောင်အတွက်သိမ်းပြီး သတိပေးချက် ရယူပါ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb index 22a88dea..bf855f09 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -76,6 +76,7 @@ <translation id="147113415845704694">“आज मौसम कस्तो छ?” भनी हेर्नुहोस्</translation> <translation id="1477626028522505441"><ph name="FILE_NAME" /> डाउनलोड सर्भरको समस्याको कारण असफल भयो।</translation> <translation id="1492417797159476138">तपाईंले यो साइटका लागि यो युजरनेम सुरक्षित गरिसक्नुभएको छ</translation> +<translation id="1493287004536771723">तपाईं <ph name="SITE_NAME" /> फलो गर्दै हुनुहुन्छ</translation> <translation id="1506061864768559482">सर्च इन्जिन</translation> <translation id="1513352483775369820">बुकमार्कहरू र वेब इतिहास</translation> <translation id="1513858653616922153">पासवर्ड मेट्नुहोस्</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">तत्कालै खोज्नका लागि कुनै शब्दमा ट्याप गर्नुहोस् वा सम्बन्धित कारबाहीहरू हेर्नुहोस्</translation> <translation id="2760989362628427051">तपाईंको डिभाइसमा अँध्यारो थिम वा ब्याट्री सेभर मोड सक्रिय हुँदा अँध्यारो थिम सक्रिय गर्नुहोस्</translation> <translation id="2762000892062317888">भर्खरै</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> को रूपमा साइन इन गरिएको।</translation> <translation id="2776236159752647997">गोपनीयता, सुरक्षा र डेटाको सङ्कलनसँग सम्बन्धित थप सेटिङका लागि <ph name="BEGIN_LINK" />Google का सेवाहरू<ph name="END_LINK" /> नामक खण्ड हेर्नुहोस्</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> सेकेन्ड बाँकी छ</translation> <translation id="2779651927720337254">डाउनलोड गर्न सकिएन</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">आफ्नो <ph name="BEGIN_LINK" />Google खाता<ph name="END_LINK" /> मा सुरक्षित गरिएका पासवर्डहरू हेर्नुहोस् र व्यवस्थापन गर्नुहोस्</translation> <translation id="2818669890320396765">आफ्ना सबै डिभाइसमा पुस्तक चिन्हहरू प्राप्त गर्न साइन इन गरी सिंक गर्ने सुविधा सक्रिय गर्नुहोस्</translation> <translation id="2827278682606527653">फिड कार्ड मेनु आधा उचाइमा खुला छ</translation> +<translation id="2830783625999891985">क्लिपबोर्डमा भएका सामग्री लुकाइए</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" /> अनफलो गरियो</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{१ दिनअघि जाँच गरिएको}other{# दिनअघि जाँच गरिएको}}</translation> <translation id="2842985007712546952">अभिभावक फोल्डर</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> के.बि. उपलब्ध छ</translation> <translation id="3549657413697417275">आफ्नो ब्राउजिङको इतिहासमा खोज्नुहोस्।</translation> <translation id="3557336313807607643">सम्पर्क ठेगानामा थप्नुहोस्</translation> +<translation id="3563767357928833671">क्लिपबोर्डमा भएका सामग्री देखाइए</translation> <translation id="3566923219790363270">Chrome ले अझै VR का लागि तयारी गर्दै छ। Chrome पछि पुनः सुरु गर्नुहोस्।</translation> <translation id="3568688522516854065">आफ्ना अन्य यन्त्रहरूबाट आफ्ना ट्याबहरू प्राप्त गर्न साइन इन गरी सिंक गर्ने सुविधा सक्रिय गर्नुहोस्</translation> <translation id="3587482841069643663">सबै</translation> @@ -541,6 +545,7 @@ <translation id="4684427112815847243">सबै सिंक गर्नुहोस्</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 र <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> थप}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 र <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> थप}}</translation> <translation id="4696983787092045100">आफ्ना यन्त्रहरूमा टेक्स्ट म्यासेज पठाउनुहोस्</translation> +<translation id="4697543623252708062">चाँडै नै, तपाईंले नयाँ ट्याब खोल्दा <ph name="SITE_NAME" /> सम्बन्धी लेखहरू देखाइने छन्। तपाईं 'फलो गरिएका साइटहरू व्यवस्थापन गर्नुहोस्' नामक खण्डमा गई आफूले फलो गरिरहेका साइटहरू व्यवस्थापन गर्न सक्नुहुन्छ।</translation> <translation id="4699172675775169585">क्यास गरिएका छविहरू र फाइलहरू</translation> <translation id="4714588616299687897">आफ्नो डेटाको ६०% सम्म जोगाउनुहोस्</translation> <translation id="4716066120200945007">फलो गरिरहेको</translation> @@ -690,6 +695,7 @@ <translation id="562289928968387744">प्रतिक्रियाहरू व्यवस्थापन गर्नुहोस्</translation> <translation id="5626134646977739690">नाम:</translation> <translation id="5628604359369369630">नपढिएको - अफलाइन उपलब्ध छ</translation> +<translation id="5632627355679805402">तपाईंको डेटालाई <ph name="TIME" /> मा तपाईंको<ph name="BEGIN_LINK" />Google पासवर्ड<ph name="END_LINK" /> मार्फत इन्क्रिप्ट गरियो। सिंक सुरु गर्न उक्त पासवर्ड प्रविष्टि गर्नुहोस्।</translation> <translation id="5639724618331995626">सबै साइटहरूलाई अनुमति दिनुहोस्</translation> <translation id="5648166631817621825">पछिल्ला ७ दिन</translation> <translation id="5655963694829536461">आफ्ना डाउनलोडहरू खोज्नुहोस्</translation> @@ -883,6 +889,7 @@ <translation id="670498945988402717">हिजो जाँच गरिएको</translation> <translation id="6710213216561001401">अघिल्लो</translation> <translation id="671481426037969117">तपाईंको <ph name="FQDN" /> टाइमरको समय सकियो। यो भोलि फेरि सुरु हुने छ।</translation> +<translation id="6738516213925468394">तपाईंको डेटा तपाईंको <ph name="BEGIN_LINK" />पासफ्रेज सिंक गर्नुहोस्<ph name="END_LINK" /> मार्फत <ph name="TIME" /> मा इन्क्रिप्ट गरियो। सिंक प्रक्रिया सुरु गर्न उक्स पासफ्रेज प्रविष्टि गर्नुहोस्।</translation> <translation id="6738867403308150051">डाउनलोड गर्दैछ…</translation> <translation id="6767294960381293877">ट्याब आदान प्रदान गरिनु पर्ने डिभाइसहरूको सूची आधा उचाइमा खोलिएको छ।</translation> <translation id="6783942555455976443">यो पृष्ठ पछि पढ्ने प्रयोजनका लागि सेभ गर्नुहोस् र रिमाइन्डर प्राप्त गर्नुहोस्</translation> @@ -1213,6 +1220,7 @@ <translation id="8993760627012879038">इनकोग्निटो मोडमा एउटा नयाँ ट्याब खोल्नुहोस्</translation> <translation id="8996847606757455498">अर्को सेवा प्रदायक छनौट गर्नुहोस्</translation> <translation id="8998729206196772491">तपाईं <ph name="MANAGED_DOMAIN" /> द्वारा व्यवस्थापन गरिएको खाता मार्फत साइन इन गर्दै हुनुहुन्छ र त्यसको प्रशासकलाई तपाईंको Chrome को डेटालाई नियन्त्रण गर्न दिँदै हुनुहुन्छ। तपाईंको डेटा सदाका लागि यस खातामा बाँधिनेछ। Chrome बाट साइन आउट गर्नाले तपाईंको डेटा यस डिभाइसबाट मेटिनेछ तर यो तपाईंको Google खातामा भण्डारण गरिएको अवस्थामा रहनेछ।</translation> +<translation id="9000233047676755924">तपाईंले नयाँ ट्याब खोल्दा अब <ph name="SITE_NAME" /> सम्बन्धी लेखहरू देखाइने छन्। तपाईं 'फलो गरिएका साइटहरू व्यवस्थापन गर्नुहोस्' नामक खण्डमा गई आफूले फलो गरिरहेका साइटहरू व्यवस्थापन गर्न सक्नुहुन्छ।</translation> <translation id="9022774213089566801">बारम्बार हेरिएका</translation> <translation id="9028914725102941583">यन्त्रहरूभरि आदान प्रदान गर्न सिंक गर्ने सुविधा सक्रिय गर्नुहोस्</translation> <translation id="9040142327097499898">सूचनाहरूलाई अनुमति दिइएको छ। यो डिभाइसमा स्थानसम्बन्धी सुविधा निष्क्रिय पारिएको छ।</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb index 02f8b0ee..15765c75 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Tik op een woord om meteen te zoeken of gerelateerde acties te bekijken</translation> <translation id="2760989362628427051">Zet het donkere thema aan als het donkere thema of de batterijbesparing van je apparaat aanstaat</translation> <translation id="2762000892062317888">zojuist</translation> +<translation id="276969039800130567">Ingelogd als <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Bekijk <ph name="BEGIN_LINK" />Google-services<ph name="END_LINK" /> voor meer instellingen over privacy, beveiliging en gegevensverzameling.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> seconden resterend</translation> <translation id="2779651927720337254">mislukt</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Reacties beheren</translation> <translation id="5626134646977739690">Naam:</translation> <translation id="5628604359369369630">Ongelezen: offline beschikbaar</translation> +<translation id="5632627355679805402">Je gegevens zijn vanaf <ph name="TIME" /> versleuteld met je <ph name="BEGIN_LINK" />Google-wachtwoord<ph name="END_LINK" />. Geef het wachtwoord op om de synchronisatie te starten.</translation> <translation id="5639724618331995626">Alle sites toestaan</translation> <translation id="5648166631817621825">Afgelopen 7 dagen</translation> <translation id="5655963694829536461">Zoek in je downloads</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Gisteren gecheckt</translation> <translation id="6710213216561001401">Vorige</translation> <translation id="671481426037969117">Je <ph name="FQDN" />-timer is afgelopen. Deze begint morgen opnieuw.</translation> +<translation id="6738516213925468394">Je gegevens zijn op <ph name="TIME" /> versleuteld met je <ph name="BEGIN_LINK" />wachtwoordzin voor synchronisatie<ph name="END_LINK" />. Geef deze op om de synchronisatie te starten.</translation> <translation id="6738867403308150051">Downloaden...</translation> <translation id="6767294960381293877">De lijst met apparaten om een tabblad mee te delen, is op halve hoogte geopend.</translation> <translation id="6783942555455976443">Deze pagina voor later opslaan en een herinnering ontvangen</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb index c5ba717..2f0808e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Trykk på et ord for å søke umiddelbart eller se relaterte handlinger</translation> <translation id="2760989362628427051">Slå på mørkt tema når batterisparing eller enhetsinnstillingen for mørkt tema er på</translation> <translation id="2762000892062317888">akkurat nå</translation> +<translation id="276969039800130567">Pålogget som <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Se <ph name="BEGIN_LINK" />Google-tjenester<ph name="END_LINK" /> for flere innstillinger knyttet til personvern, sikkerhet og datainnsamling.</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder igjen</translation> <translation id="2779651927720337254">mislyktes</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Administrer reaksjoner</translation> <translation id="5626134646977739690">Navn:</translation> <translation id="5628604359369369630">Ulest – tilgjengelig uten nett</translation> +<translation id="5632627355679805402">Dataene dine har blitt kryptert med <ph name="BEGIN_LINK" />Google-passordet<ph name="END_LINK" /> ditt siden <ph name="TIME" />. Skriv det inn for å starte synkroniseringen.</translation> <translation id="5639724618331995626">Tillat alle nettsteder</translation> <translation id="5648166631817621825">Siste 7 dager</translation> <translation id="5655963694829536461">Søk i nedlastingene dine</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Sjekket i går</translation> <translation id="6710213216561001401">Forrige</translation> <translation id="671481426037969117">Tidtakeren for <ph name="FQDN" /> gikk ut. Den starter igjen i morgen.</translation> +<translation id="6738516213925468394">Dataene dine ble kryptert med <ph name="BEGIN_LINK" />passordfrasen for synkronisering<ph name="END_LINK" /> <ph name="TIME" />. Skriv den inn for å starte synkroniseringen.</translation> <translation id="6738867403308150051">Laster ned …</translation> <translation id="6767294960381293877">Listen over enheter du kan dele faner med, er åpnet i halv høyde.</translation> <translation id="6783942555455976443">Lagre denne siden til senere, og få en påminnelse</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb index dec6cab..9fc3ecda 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -76,6 +76,7 @@ <translation id="147113415845704694">“ଆଜିର ପାଣିପାଗ କିପରି ଅଛି?” ପଚାରି ଦେଖନ୍ତୁ</translation> <translation id="1477626028522505441">ସର୍ଭର୍ ସମସ୍ୟା ଯୋଗୁଁ <ph name="FILE_NAME" /> ଡାଉନ୍ଲୋଡ୍ ହେବାରେ ବିଫଳ ହେଲା।</translation> <translation id="1492417797159476138">ଆପଣ ଏହି ସାଇଟ୍ ପାଇଁ ଏହି ଉପଯୋଗକର୍ତ୍ତାନାମ ପୂର୍ବରୁ ସେଭ୍ କରିଛନ୍ତି</translation> +<translation id="1493287004536771723">ଆପଣ <ph name="SITE_NAME" />କୁ ଅନୁସରଣ କରୁଛନ୍ତି</translation> <translation id="1506061864768559482">ସନ୍ଧାନ ଇଞ୍ଜିନ୍</translation> <translation id="1513352483775369820">ବୁକ୍ମାର୍କ ଏବଂ ୱେବ୍ ଇତିବୃତ୍ତି</translation> <translation id="1513858653616922153">ପାସ୍ୱାର୍ଡକୁ ଡିଲିଟ୍ କରନ୍ତୁ</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">ତତ୍କ୍ଷଣାତ୍ ସର୍ଚ୍ଚ କରିବାକୁ କିମ୍ବା ସେହି ସମ୍ବନ୍ଧିତ କାର୍ଯ୍ୟ ଦେଖିବାକୁ ଏକ ଶଦ୍ଦ ଟାପ୍ କରନ୍ତୁ</translation> <translation id="2760989362628427051">ଆପଣଙ୍କ ଡିଭାଇସ୍ର ଗାଢା ଥିମ୍ ବା ବ୍ୟାଟେରୀ ସେଭର୍ ଚାଲୁଥିବା ସମୟରେ ଗାଢା ଥିମ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="2762000892062317888">ଏହିକ୍ଷଣି</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ଭାବରେ ସାଇନ୍-ଇନ୍ କରିଛନ୍ତି।</translation> <translation id="2776236159752647997">ଗୋପନୀୟତା, ସୁରକ୍ଷା ଏବଂ ଡାଟା ସଂଗ୍ରହ ସମ୍ବନ୍ଧିତ ଅଧିକ ସେଟିଂସ୍ ପାଇଁ <ph name="BEGIN_LINK" />Google ସେବାଗୁଡ଼ିକୁ<ph name="END_LINK" /> ଦେଖନ୍ତୁ</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ସେକେଣ୍ଡ ଅବଶିଷ୍ଟ ଅଛି</translation> <translation id="2779651927720337254">ବିଫଳ ହେଲା</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">ଆପଣଙ୍କର <ph name="BEGIN_LINK" />Google ଆକାଉଣ୍ଟ<ph name="END_LINK" />ରେ ସେଭ୍ ହୋଇଥିବା ପାସ୍ୱର୍ଡଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ ଓ ପରିଚାଳନା କରନ୍ତୁ।</translation> <translation id="2818669890320396765">ଆପଣଙ୍କର ସମସ୍ତ ଡିଭାଇସ୍ରେ ବୁକ୍ମାର୍କଗୁଡ଼ିକ ପ୍ରାପ୍ତ କରିବାକୁ, ସାଇନ୍ ଇନ୍ କରନ୍ତୁ ଏବଂ ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="2827278682606527653">Feed card menu half height</translation> +<translation id="2830783625999891985">କ୍ଲିପବୋର୍ଡର ବିଷୟବସ୍ତୁଗୁଡ଼ିକ ଲୁକ୍କାୟିତ ଅଛି</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" />କୁ ଅନୁସରଣ କରିବା ବନ୍ଦ କରାଯାଇଛି</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 ଦିନ ପୂର୍ବେ ଯାଞ୍ଚ କରାଯାଇଛି}other{# ଦିନ ପୂର୍ବେ ଯାଞ୍ଚ କରାଯାଇଛି}}</translation> <translation id="2842985007712546952">ମୁଖ୍ୟ ଫୋଲ୍ଡର୍</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB ଉପଲବ୍ଧ ଅଛି</translation> <translation id="3549657413697417275">ଆପଣଙ୍କର ଇତିବୃତ୍ତି ସନ୍ଧାନ କରନ୍ତୁ</translation> <translation id="3557336313807607643">ଯୋଗାଯୋଗରେ ଯୋଗ କରନ୍ତୁ</translation> +<translation id="3563767357928833671">କ୍ଲିପବୋର୍ଡର ବିଷୟବସ୍ତୁଗୁଡ଼ିକ ଦେଖାଯାଇଛି</translation> <translation id="3566923219790363270">Chrome ଏବେ ମଧ୍ୟ VR ପାଇଁ ପ୍ରସ୍ତୁତ ହେଉଛି। ପରେ Chrome ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ।</translation> <translation id="3568688522516854065">ଆପଣଙ୍କର ଅନ୍ୟ ଡିଭାଇସ୍ଗୁଡ଼ିକରୁ ନିଜର ଟାବ୍ ପ୍ରାପ୍ତ କରିବା ପାଇଁ, ସାଇନ୍ ଇନ୍ କରି ସିଙ୍କ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="3587482841069643663">ସମସ୍ତ</translation> @@ -542,6 +546,7 @@ <translation id="4684427112815847243">ସବୁକିଛି ସିଙ୍କ୍ କରନ୍ତୁ</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 ଏବଂ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ଅଧିକ}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 ଏବଂ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ଅଧିକ}}</translation> <translation id="4696983787092045100">ଆପଣଙ୍କର ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ଟେକ୍ସଟ୍ ପଠାନ୍ତୁ</translation> +<translation id="4697543623252708062">ଶୀଘ୍ର, ଆପଣ ଏକ ନୂଆ ଟାବ୍ ଖୋଲିଲେ <ph name="SITE_NAME" />ରୁ ଷ୍ଟୋରୀଗୁଡ଼ିକୁ ଦେଖିବେ। ଆପଣ ଅନୁସରଣ କରୁଥିବା ସାଇଟଗୁଡ଼ିକୁ "ଅନୁସରଣ କରୁଥିବା ସାଇଟଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ"ରେ ନିୟନ୍ତ୍ରଣ କରିପାରିବେ।</translation> <translation id="4699172675775169585">କେଚ୍ ଛବି ଏବଂ ଫାଇଲ୍</translation> <translation id="4714588616299687897">ଆପଣଙ୍କ ଡାଟାର 60% ପର୍ଯ୍ୟନ୍ତ ସେଭ୍ କରନ୍ତୁ</translation> <translation id="4716066120200945007">ଅନୁସରଣ କରୁଛନ୍ତି</translation> @@ -691,6 +696,7 @@ <translation id="562289928968387744">ପ୍ରତିକ୍ରିୟାଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="5626134646977739690">ନାମ:</translation> <translation id="5628604359369369630">ପଢ଼ାଯାଇନଥିବା - ଅଫଲାଇନରେ ଉପଲବ୍ଧ ଅଛି</translation> +<translation id="5632627355679805402">ଆପଣଙ୍କର ଡାଟା <ph name="BEGIN_LINK" />Google ପାସ୍ୱର୍ଡ<ph name="END_LINK" /> ସହିତ <ph name="TIME" />ରେ ଏନ୍କ୍ରିପ୍ଟ କରାଯାଇଥିଲା। ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ ଏହାକୁ ଲେଖନ୍ତୁ।</translation> <translation id="5639724618331995626">ସମସ୍ତ ସାଇଟ୍କୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="5648166631817621825">ବିଗତ 7 ଦିନ</translation> <translation id="5655963694829536461">ଆପଣଙ୍କର ଡାଉନ୍ଲୋଡ୍ଗୁଡ଼ିକରେ ସନ୍ଧାନ କରନ୍ତୁ</translation> @@ -884,6 +890,7 @@ <translation id="670498945988402717">ଗତକାଲି ଯାଞ୍ଚ କରାଯାଇଛି</translation> <translation id="6710213216561001401">ପୂର୍ବବର୍ତ୍ତୀ</translation> <translation id="671481426037969117">ଆପଣଙ୍କର <ph name="FQDN" /> ଟାଇମର୍ର ସମୟ ସମାପ୍ତ ହୋଇଗଲା। ଏହା ଆସନ୍ତାକାଲି କାର୍ଯ୍ୟାରମ୍ଭ କରିବ।</translation> +<translation id="6738516213925468394">ଆପଣଙ୍କର ଡାଟା <ph name="TIME" />ଟାରେ ଆପଣଙ୍କ <ph name="BEGIN_LINK" />ସିଙ୍କ୍ ପାସ୍ଫ୍ରେଜ୍<ph name="END_LINK" /> ମାଧ୍ୟମରେ ଏନ୍କ୍ରିପ୍ଟ କରାଯାଇଥିଲା। ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ ଏହାକୁ ଲେଖନ୍ତୁ।</translation> <translation id="6738867403308150051">ଡାଉନ୍ଲୋଡ୍ ହେଉଛି…</translation> <translation id="6767294960381293877">ଏକ ଟାବ୍ ସେୟାର୍ କରିବା ପାଇଁ ଡିଭାଇସ୍ର ତାଲିକା ଅଧା ସ୍କ୍ରିନ୍ରେ ଖୋଲାଯାଇଛି।</translation> <translation id="6783942555455976443">ଏହି ପୃଷ୍ଠାକୁ ପରବର୍ତ୍ତୀ ସମୟ ପାଇଁ ସେଭ୍ କରନ୍ତୁ ଏବଂ ଏକ ରିମାଇଣ୍ଡର୍ ପାଆନ୍ତୁ</translation> @@ -1214,6 +1221,7 @@ <translation id="8993760627012879038">ଇନ୍କଗ୍ନିଟୋ ମୋଡ୍ରେ ଏକ ନୂଆ ଟାବ୍ ଖୋଲନ୍ତୁ</translation> <translation id="8996847606757455498">ଅନ୍ୟ ଏକ ପ୍ରଦାନକାରୀ ବାଛନ୍ତୁ</translation> <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" />ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ ଏକ ଆକାଉଣ୍ଟ ମାଧ୍ୟମରେ ଆପଣ ସାଇନ୍ ଇନ୍ କରିଛନ୍ତି ଏବଂ ଏହାର ଆଡ୍ମିନିଷ୍ଟ୍ରେଟର୍ଙ୍କୁ ଆପଣଙ୍କ Chrome ଡାଟାର ନିୟନ୍ତ୍ରଣ ଦେଇଛନ୍ତି। ଆପଣଙ୍କର ଡାଟା ସ୍ଥାୟୀ ରୂପେ ଏହି ଆକାଉଣ୍ଟ ସହିତ ଯୋଡ଼ି ହୋଇଯିବ। Chromeରୁ ସାଇନ୍-ଆଉଟ୍ କରିବା ଦ୍ଵାରା ଏହି ଡିଭାଇସ୍ରୁ ଆପଣଙ୍କ ଡାଟା ଡିଲିଟ୍ ହୋଇଯିବ କିନ୍ତୁ ଏହା ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ଷ୍ଟୋର୍ ହୋଇ ରହିଥିବ।</translation> +<translation id="9000233047676755924">ବର୍ତ୍ତମାନ, ଆପଣ ଏକ ନୂଆ ଟାବ୍ ଖୋଲିଲେ <ph name="SITE_NAME" />ରୁ ଷ୍ଟୋରୀଗୁଡ଼ିକୁ ଦେଖିବେ। ଆପଣ ଅନୁସରଣ କରୁଥିବା ସାଇଟଗୁଡ଼ିକୁ "ଅନୁସରଣ କରୁଥିବା ସାଇଟଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ"ରେ ନିୟନ୍ତ୍ରଣ କରିପାରିବେ।</translation> <translation id="9022774213089566801">ବାରମ୍ବାର ଭିଜିଟ୍ କରାଯାଉଥିବା</translation> <translation id="9028914725102941583">ସମସ୍ତ ଡିଭାଇସ୍ରେ ସେୟାର୍ କରିବା ପାଇଁ ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="9040142327097499898">ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଅନୁମତି ଦିଆଯାଏ। ଏହି ଡିଭାଇସ୍ ପାଇଁ ଲୋକେସନ୍ ବନ୍ଦ ଅଛି।</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb index 468ff49..82a849f8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">ਤਤਕਾਲ ਖੋਜ ਲਈ ਕਿਸੇ ਸ਼ਬਦ 'ਤੇ ਟੈਪ ਕਰੋ ਜਾਂ ਸੰਬੰਧਿਤ ਕਾਰਵਾਈਆਂ ਦੇਖੋ</translation> <translation id="2760989362628427051">ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਗੂੜ੍ਹਾ ਥੀਮ ਜਾਂ ਬੈਟਰੀ ਸੇਵਰ ਮੋਡ ਚਾਲੂ ਹੋਣ 'ਤੇ ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> <translation id="2762000892062317888">ਹੁਣੇ ਹੀ</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ਦੇ ਤੌਰ ਤੇ ਸਾਈਨ ਇਨ ਕੀਤਾ।</translation> <translation id="2776236159752647997">ਪਰਦੇਦਾਰੀ, ਸੁਰੱਖਿਆ ਅਤੇ ਡਾਟਾ ਸੰਗ੍ਰਹਿ ਨਾਲ ਸੰਬੰਧਿਤ ਹੋਰ ਸੈਟਿੰਗਾਂ ਲਈ, <ph name="BEGIN_LINK" />Google ਸੇਵਾਵਾਂ<ph name="END_LINK" /> ਦੇਖੋ</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ਸਕਿੰਟ ਬਾਕੀ</translation> <translation id="2779651927720337254">ਅਸਫਲ</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">ਪ੍ਰਤਿਕਿਰਿਆਵਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="5626134646977739690">ਨਾਮ:</translation> <translation id="5628604359369369630">ਨਾ-ਪੜ੍ਹਿਆ - ਆਫ਼ਲਾਈਨ ਉਪਲਬਧ ਹੈ</translation> +<translation id="5632627355679805402">ਤੁਹਾਡਾ ਡਾਟਾ <ph name="TIME" /> ਵਜੇ ਤੁਹਾਡੇ <ph name="BEGIN_LINK" />Google ਪਾਸਵਰਡ<ph name="END_LINK" /> ਨਾਲ ਇਨਕ੍ਰਿਪਟ ਕੀਤਾ ਗਿਆ। ਸਮਕਾਲੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਇਸਨੂੰ ਦਾਖਲ ਕਰੋ।</translation> <translation id="5639724618331995626">ਸਭ ਸਾਈਟਾਂ ਦੀ ਮਨਜ਼ੂਰੀ ਦਿਓ</translation> <translation id="5648166631817621825">ਪਿਛਲੇ 7 ਦਿਨ</translation> <translation id="5655963694829536461">ਆਪਣੇ ਡਾਊਨਲੋਡ ਖੋਜੋ</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">ਬੀਤੇ ਕੱਲ੍ਹ ਜਾਂਚ ਕੀਤੀ ਗਈ</translation> <translation id="6710213216561001401">ਪਿਛਲਾ</translation> <translation id="671481426037969117">ਤੁਹਾਡਾ <ph name="FQDN" /> ਟਾਈਮਰ ਸਮਾਪਤ ਹੋਇਆ। ਇਹ ਭਲਕੇ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਹੋਵੇਗਾ।</translation> +<translation id="6738516213925468394">ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ <ph name="BEGIN_LINK" />ਸਮਕਾਲੀਕਰਨ ਪਾਸਫਰੇਜ਼<ph name="END_LINK" /> ਨਾਲ <ph name="TIME" /> ਵਜੇ ਇਨਕ੍ਰਿਪਟ ਕੀਤਾ ਗਿਆ। ਸਮਕਾਲੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਇਸਨੂੰ ਦਾਖਲ ਕਰੋ।</translation> <translation id="6738867403308150051">ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…</translation> <translation id="6767294960381293877">ਟੈਬ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਵਾਲੇ ਡੀਵਾਈਸਾਂ ਦੀ ਸੂਚੀ ਅੱਧੀ ਉਚਾਈ 'ਤੇ ਖੁੱਲ੍ਹੀ ਹੋਈ ਹੈ।</translation> <translation id="6783942555455976443">ਇਸ ਪੰਨੇ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਪੜ੍ਹਣ ਲਈ ਰੱਖਿਅਤ ਕਰੋ ਅਤੇ ਇਸ ਲਈ ਇੱਕ ਯਾਦ-ਸੂਚਨਾ ਪ੍ਰਾਪਤ ਕਰੋ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb index 010f8d9..f5327d0 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Kliknij słowo, by szybko je wyszukać lub wyświetlić powiązane czynności</translation> <translation id="2760989362628427051">Włącz ciemny motyw, gdy urządzenie ma włączony ciemny motyw lub Oszczędzanie baterii</translation> <translation id="2762000892062317888">przed chwilą</translation> +<translation id="276969039800130567">Zalogowano jako <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Więcej ustawień związanych z prywatnością, bezpieczeństwem i zbieraniem danych znajdziesz w sekcji <ph name="BEGIN_LINK" />Usługi Google<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">Pozostało: <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">Nie pobrano</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Zarządzaj reakcjami</translation> <translation id="5626134646977739690">Nazwa:</translation> <translation id="5628604359369369630">Nieprzeczytane – dostępne offline</translation> +<translation id="5632627355679805402">Twoje dane zostały zaszyfrowane <ph name="BEGIN_LINK" />hasłem Google<ph name="END_LINK" /> w dniu <ph name="TIME" />. Wpisz to hasło, by rozpocząć synchronizację.</translation> <translation id="5639724618331995626">Pozwól na otwieranie wszystkich stron</translation> <translation id="5648166631817621825">Ostatnie 7 dni</translation> <translation id="5655963694829536461">Przeszukaj pobrane pliki</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Sprawdzano wczoraj</translation> <translation id="6710213216561001401">Poprzedni</translation> <translation id="671481426037969117">Licznik czasu w aplikacji <ph name="FQDN" /> dobiegł końca. Jutro zacznie działać od nowa.</translation> +<translation id="6738516213925468394">Twoje dane zostały zaszyfrowane <ph name="BEGIN_LINK" />hasłem synchronizacji<ph name="END_LINK" /> w dniu <ph name="TIME" />. Wpisz to hasło, by rozpocząć synchronizację.</translation> <translation id="6738867403308150051">Pobieram…</translation> <translation id="6767294960381293877">Lista urządzeń, którym udostępnisz kartę, jest otwarta na połowę wysokości.</translation> <translation id="6783942555455976443">Zapisz tę stronę na później i ustaw przypomnienie</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb index 23bc31b7..f344844 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Toque em uma palavra para pesquisar instantaneamente ou ver as ações relacionadas</translation> <translation id="2760989362628427051">Ativa o tema escuro quando essa opção ou a "Economia de bateria" do dispositivo está ativada</translation> <translation id="2762000892062317888">agora mesmo</translation> +<translation id="276969039800130567">Conectado como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Para ver mais configurações relacionadas à privacidade, segurança e coleta de dados, acesse <ph name="BEGIN_LINK" />Serviços do Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> segundos restantes</translation> <translation id="2779651927720337254">falha</translation> @@ -696,6 +697,7 @@ <translation id="562289928968387744">Gerenciar reações</translation> <translation id="5626134646977739690">Nome:</translation> <translation id="5628604359369369630">Não lidas. Disponíveis off-line</translation> +<translation id="5632627355679805402">Seus dados foram criptografados com sua <ph name="BEGIN_LINK" />senha do Google<ph name="END_LINK" /> a partir de <ph name="TIME" />. Digite-a para iniciar a sincronização.</translation> <translation id="5639724618331995626">Permitir todos os sites</translation> <translation id="5648166631817621825">Últimos sete dias</translation> <translation id="5655963694829536461">Pesquisar seus downloads</translation> @@ -889,6 +891,7 @@ <translation id="670498945988402717">Verificado ontem</translation> <translation id="6710213216561001401">Anterior</translation> <translation id="671481426037969117">Seu timer para <ph name="FQDN" /> chegou ao fim. Ele será iniciado novamente amanhã.</translation> +<translation id="6738516213925468394">Seus dados foram criptografados com sua <ph name="BEGIN_LINK" />senha longa de sincronização<ph name="END_LINK" /> em <ph name="TIME" />. Digite-a para iniciar a sincronização.</translation> <translation id="6738867403308150051">Fazendo o download...</translation> <translation id="6767294960381293877">Lista de dispositivos com os quais é possível compartilhar uma guia aberta na metade da altura.</translation> <translation id="6783942555455976443">Salve esta página e receba uma notificação mais tarde</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb index 791c329..638e27c7 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Toque numa palavra para pesquisar instantaneamente ou ver as ações relacionadas.</translation> <translation id="2760989362628427051">Ative o tema escuro quando a Poupança de bateria ou o tema escuro do dispositivo estiver ativado(a).</translation> <translation id="2762000892062317888">agora mesmo</translation> +<translation id="276969039800130567">Com sessão iniciado como <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Para obter mais definições relacionadas com privacidade, segurança e recolha de dados, consulte <ph name="BEGIN_LINK" />Serviços Google<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">Faltam <ph name="SECONDS" /> segundos</translation> <translation id="2779651927720337254">falhou</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Gerir reações</translation> <translation id="5626134646977739690">Nome:</translation> <translation id="5628604359369369630">Não lido – Disponível offline</translation> +<translation id="5632627355679805402">Os dados foram encriptados com a sua <ph name="BEGIN_LINK" />palavra-passe do Google<ph name="END_LINK" /> à(s) <ph name="TIME" />. Introduza a mesma para iniciar a sincronização.</translation> <translation id="5639724618331995626">Permitir todos os sites</translation> <translation id="5648166631817621825">Últimos 7 dias</translation> <translation id="5655963694829536461">Pesquisar as suas transferências</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Última verificação ontem</translation> <translation id="6710213216561001401">Anterior</translation> <translation id="671481426037969117">O temporizador da aplicação <ph name="FQDN" /> terminou. Recomeça amanhã.</translation> +<translation id="6738516213925468394">Os seus dados foram encriptados com a sua <ph name="BEGIN_LINK" />frase de acesso de sincronização<ph name="END_LINK" /> à(s) <ph name="TIME" />. Introduza a mesma para iniciar a sincronização.</translation> <translation id="6738867403308150051">A transferir...</translation> <translation id="6767294960381293877">Lista de dispositivos com os quais pretende partilhar um separador aberta a meia altura.</translation> <translation id="6783942555455976443">Guarde esta página para mais tarde e receba um lembrete.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb index d92ec79d..33735d3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -62,6 +62,7 @@ <translation id="1376578503827013741">Se calculează…</translation> <translation id="1383876407941801731">Caută</translation> <translation id="1384704387250346179">Tradu imaginea cu Google Lens <ph name="BEGIN_NEW" />Nou<ph name="END_NEW" /></translation> +<translation id="1385855801883526502">Stilizează evidențierea</translation> <translation id="1386674309198842382">Activ acum <ph name="LAST_UPDATED" /> zile</translation> <translation id="1397811292916898096">Caută folosind <ph name="PRODUCT_NAME" /></translation> <translation id="1406000523432664303">„Nu urmări”</translation> @@ -266,6 +267,7 @@ <translation id="2744248271121720757">Atinge un cuvânt pentru a căuta instantaneu sau pentru a vedea acțiuni conexe</translation> <translation id="2760989362628427051">Activează tema întunecată când este activată tema întunecată sau Economisirea bateriei pentru dispozitiv</translation> <translation id="2762000892062317888">adineauri</translation> +<translation id="276969039800130567">Conectat(ă) ca <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Pentru mai multe setări privind confidențialitatea, securitatea și colectarea datelor, consultă <ph name="BEGIN_LINK" />Serviciile Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sec. rămase</translation> <translation id="2779651927720337254">nereușită</translation> @@ -695,6 +697,7 @@ <translation id="562289928968387744">Gestionează reacțiile</translation> <translation id="5626134646977739690">Nume:</translation> <translation id="5628604359369369630">Necitită – Disponibilă offline</translation> +<translation id="5632627355679805402">Datele au fost criptate cu <ph name="BEGIN_LINK" />parola Google<ph name="END_LINK" /> începând cu <ph name="TIME" />. Introdu parola pentru a începe sincronizarea.</translation> <translation id="5639724618331995626">Permite toate site-urile</translation> <translation id="5648166631817621825">Ultimele 7 zile</translation> <translation id="5655963694829536461">Caută în descărcări</translation> @@ -888,6 +891,7 @@ <translation id="670498945988402717">A rulat ieri</translation> <translation id="6710213216561001401">Înapoi</translation> <translation id="671481426037969117">Temporizatorul pentru <ph name="FQDN" /> s-a terminat. Va reîncepe mâine.</translation> +<translation id="6738516213925468394">Datele au fost criptate cu <ph name="BEGIN_LINK" />expresia de acces pentru sincronizare<ph name="END_LINK" /> la <ph name="TIME" />. Introdu expresia de acces pentru a începe sincronizarea.</translation> <translation id="6738867403308150051">Se descarcă...</translation> <translation id="6767294960381293877">Lista de dispozitive pe care să trimiți o filă este deschisă la jumătate din înălțime.</translation> <translation id="6783942555455976443">Salvează această pagină pentru mai târziu și primește un memento</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb index 685117d..29475db 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Нажмите на слово, чтобы увидеть связанные с ним результаты поиска и действия.</translation> <translation id="2760989362628427051">Использовать тёмную тему, когда на устройстве включена тёмная тема или режим энергосбережения.</translation> <translation id="2762000892062317888">только что</translation> +<translation id="276969039800130567">Вы вошли как <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Другие настройки, связанные с конфиденциальностью, безопасностью и сбором данных, можно найти в разделе <ph name="BEGIN_LINK" />Сервисы Google<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">Осталось <ph name="SECONDS" /> сек.</translation> <translation id="2779651927720337254">ошибка</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Управление откликами</translation> <translation id="5626134646977739690">Имя:</translation> <translation id="5628604359369369630">Не прочитано – доступно в офлайн-режиме</translation> +<translation id="5632627355679805402">Ваши данные были зашифрованы <ph name="TIME" /> с помощью <ph name="BEGIN_LINK" />пароля Google<ph name="END_LINK" />. Введите его, чтобы начать синхронизацию.</translation> <translation id="5639724618331995626">Разрешить доступ ко всем сайтам</translation> <translation id="5648166631817621825">Последние 7 дней</translation> <translation id="5655963694829536461">Поиск в загрузках</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Проверено вчера.</translation> <translation id="6710213216561001401">Назад</translation> <translation id="671481426037969117">Время на таймере <ph name="FQDN" /> истекло. Завтра сайт снова станет доступен.</translation> +<translation id="6738516213925468394">Данные были зашифрованы <ph name="TIME" /> с помощью <ph name="BEGIN_LINK" />кодовой фразы<ph name="END_LINK" />. Введите ее, чтобы начать синхронизацию.</translation> <translation id="6738867403308150051">Скачивание…</translation> <translation id="6767294960381293877">Список устройств для отправки вкладки развернут на половину экрана.</translation> <translation id="6783942555455976443">Сохранить эту страницу офлайн и отправить напоминание</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb index 3e9a559..3c24284 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">ක්ෂණිකව සෙවීමට හෝ අදාළ ක්රියාවන් බැලීමට වචනයක් තට්ටු කරන්න</translation> <translation id="2760989362628427051">ඔබේ උපාංගයේ බැටරි සුරැකුම හෝ අඳුරු තේමාව සක්රීයව තිබෙන විට අඳුරු තේමාව සක්රීය කරන්න</translation> <translation id="2762000892062317888">මේ දැන්</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ලෙස පුරන ලදී.</translation> <translation id="2776236159752647997">රහස්යතාව, ආරක්ෂාව සහ දත්ත රැස් කිරීමට අදාළ තවත් සැකසීම් සඳහා, <ph name="BEGIN_LINK" />Google සේවා<ph name="END_LINK" /> බලන්න</translation> <translation id="2777555524387840389">තත්පර <ph name="SECONDS" />ක් ඉතිරියි</translation> <translation id="2779651927720337254">අසාර්ථකයි</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">ප්රතික්රියා කළමනාකරණය කරන්න</translation> <translation id="5626134646977739690">නම:</translation> <translation id="5628604359369369630">නොකියවන - නොබැඳිව ලබා ගත හැකිය</translation> +<translation id="5632627355679805402">ඔබේ දත්ත <ph name="TIME" /> වන විට ඔබේ <ph name="BEGIN_LINK" />Google මුරපදය<ph name="END_LINK" /> සංකේතන කර ඇත. සමමුහූර්තය පටන් ගැනීමට එය ඇතුළත් කරන්න.</translation> <translation id="5639724618331995626">සියලු අඩවිවලට ඉඩ දෙන්න</translation> <translation id="5648166631817621825">පසුගිය දින 7</translation> <translation id="5655963694829536461">ඔබේ බාගැනීම් සොයන්න</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">ඊයේ පරීක්ෂා කරන ලදි</translation> <translation id="6710213216561001401">පෙර</translation> <translation id="671481426037969117">ඔබේ <ph name="FQDN" /> මුහූර්තකය ඉවර විය. එය හෙට නැවත ඇරඹෙයි.</translation> +<translation id="6738516213925468394">ඔබේ දත්ත <ph name="TIME" /> වූ විට ඔබේ <ph name="BEGIN_LINK" />මුර වැකිකඩ<ph name="END_LINK" /> සංකේතන කරනු ලැබුවේය. සමමුහූර්තය ආරම්භ කිරීමට එය ඇතුළත් කරන්න.</translation> <translation id="6738867403308150051">බාගනිමින්...</translation> <translation id="6767294960381293877">අර්ධ උසකින් විවෘත කර ඇති පටිත්තක් බෙදා ගැනීම සඳහා වන උපාංග ලැයිස්තුව.</translation> <translation id="6783942555455976443">මෙම පිටුව පසුව සුරකින්න සහ සිහිකැඳවීමක් ලබා ගන්න</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb index d1e27ee8..1cc78a8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Klepnutím na slovo aktivujete dynamické vyhľadávanie alebo zobrazíte súvisiace akcie</translation> <translation id="2760989362628427051">Zapnúť tmavý motív, keď je v zariadení zapnutý tmavý motív alebo šetrič batérie</translation> <translation id="2762000892062317888">práve teraz</translation> +<translation id="276969039800130567">Prihlásený účet <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Ďalšie nastavenia týkajúce sa ochrany súkromia, zabezpečenia a zhromažďovania údajov nájdete v sekcii <ph name="BEGIN_LINK" />Služby Googlu<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Zostáva: <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">neúspešné</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Spravovať reakcie</translation> <translation id="5626134646977739690">Názov:</translation> <translation id="5628604359369369630">Neprečítané – k dispozícii offline</translation> +<translation id="5632627355679805402">Údaje boli <ph name="TIME" /> zašifrované vaším <ph name="BEGIN_LINK" />heslom Google<ph name="END_LINK" />. Synchronizácia sa spustí po jeho zadaní.</translation> <translation id="5639724618331995626">Povoliť všetky weby</translation> <translation id="5648166631817621825">Posledných 7 dní</translation> <translation id="5655963694829536461">Prehľadať stiahnuté</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Kontrola prebehla včera</translation> <translation id="6710213216561001401">Späť</translation> <translation id="671481426037969117">Časovač aplikácie <ph name="FQDN" /> vypršal. Spustí sa zase zajtra.</translation> +<translation id="6738516213925468394">Vaše údaje boli <ph name="TIME" /> zašifrované pomocou <ph name="BEGIN_LINK" />prístupovej frázy synchronizácie<ph name="END_LINK" />. Synchronizácia sa spustí po jej zadaní.</translation> <translation id="6738867403308150051">Sťahuje sa...</translation> <translation id="6767294960381293877">Zoznam zariadení, s ktorými sa má zdieľať karta, je otvorený na polovičnú výšku.</translation> <translation id="6783942555455976443">Uložte si túto stranu na neskôr a dostanete pripomenutie</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb index 0ac1973..f080394 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Dotaknite se besede, če želite dinamično iskati ali prikazati sorodna dejanja</translation> <translation id="2760989362628427051">Vklop temne teme, ko je v napravi vklopljena temna tema ali je vklopljeno varčevanje z energijo akumulatorja</translation> <translation id="2762000892062317888">pravkar</translation> +<translation id="276969039800130567">Prijavljen kot <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Če vas zanima več nastavitev, povezanih z zasebnostjo, varnostjo in zbiranjem podatkov, si oglejte razdelek <ph name="BEGIN_LINK" />Googlove storitve<ph name="END_LINK" />.</translation> <translation id="2777555524387840389">Še <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">ni uspelo</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Upravljanje odzivov</translation> <translation id="5626134646977739690">Ime:</translation> <translation id="5628604359369369630">Neprebrano – na voljo brez povezave</translation> +<translation id="5632627355679805402">Vaši podatki so bili ob <ph name="TIME" /> šifrirani z vašim <ph name="BEGIN_LINK" />geslom za Google<ph name="END_LINK" />. Če želite začeti sinhronizacijo, ga vnesite.</translation> <translation id="5639724618331995626">Dovoli vsa spletna mesta</translation> <translation id="5648166631817621825">Zadnjih 7 dni</translation> <translation id="5655963694829536461">Poiščite prenose</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Preverjeno včeraj</translation> <translation id="6710213216561001401">Prejšnji</translation> <translation id="671481426037969117">Merilnik časa za <ph name="FQDN" /> je potekel. Jutri se začne znova.</translation> +<translation id="6738516213925468394">Podatki so bili šifrirani (<ph name="TIME" />) z vašim <ph name="BEGIN_LINK" />geslom za sinhronizacijo<ph name="END_LINK" />. Vnesite ga, če želite začeti sinhronizacijo.</translation> <translation id="6738867403308150051">Prenašanje ...</translation> <translation id="6767294960381293877">Seznam naprav, s katerimi želite deliti zavihek, odprt pri polovični višini.</translation> <translation id="6783942555455976443">Shranite to stran za pozneje in prejmite opomnik</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb index 9c87a702..8e4b7808 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Trokit një fjalë për të kërkuar në çast ose për të parë veprimet e lidhura</translation> <translation id="2760989362628427051">Aktivizo temën e errët kur tema e errët ose "Kursyesi i baterisë" i pajisjes është aktiv</translation> <translation id="2762000892062317888">pikërisht tani</translation> +<translation id="276969039800130567">I identifikuar si <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Për cilësime të mëtejshme në lidhje me privatësinë, sigurinë dhe mbledhjen e të dhënave, shih <ph name="BEGIN_LINK" />Shërbimet e Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekonda të mbetura</translation> <translation id="2779651927720337254">dështoi</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Menaxho reagimet</translation> <translation id="5626134646977739690">Emri:</translation> <translation id="5628604359369369630">Të palexuara - ofrohen jashtë linje</translation> +<translation id="5632627355679805402">Të dhënat e tua janë enkriptuar me <ph name="BEGIN_LINK" />fjalëkalimin tënd të Google<ph name="END_LINK" /> në <ph name="TIME" />. Fute atë për të nisur sinkronizimin.</translation> <translation id="5639724618331995626">Lejo të gjitha sajtet</translation> <translation id="5648166631817621825">7 ditët e fundit</translation> <translation id="5655963694829536461">Kërko te shkarkimet e tua</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Kontrolluar dje</translation> <translation id="6710213216561001401">Prapa</translation> <translation id="671481426037969117">Kohëmatësi <ph name="FQDN" /> përfundoi. Do të fillojë përsëri nesër.</translation> +<translation id="6738516213925468394">Të dhënat e tua u enkriptuan me <ph name="BEGIN_LINK" />frazën e kalimit të sinkronizimit <ph name="END_LINK" /> më <ph name="TIME" />. Fute atë për të nisur sinkronizmin.</translation> <translation id="6738867403308150051">Po shkarkon...</translation> <translation id="6767294960381293877">Lista e pajisjeve për të ndarë një skedë e hapur në gjysmë lartësi.</translation> <translation id="6783942555455976443">Ruaje këtë faqe për më vonë dhe merr një rikujtesë</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb index 4f5b1dee..faed2d9 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Dodirnite reč da biste je trenutno pretražili ili videli povezane radnje</translation> <translation id="2760989362628427051">Uključite tamnu temu kada je tamna tema ili Ušteda baterije uključena na uređaju</translation> <translation id="2762000892062317888">malopre</translation> +<translation id="276969039800130567">Prijavljen/na kao <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Više podešavanja u vezi sa privatnošću, bezbednošću i prikupljanjem podataka potražite u odeljku <ph name="BEGIN_LINK" />Google usluge<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Još <ph name="SECONDS" /> sek</translation> <translation id="2779651927720337254">nije uspelo</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Upravljaj reakcijama</translation> <translation id="5626134646977739690">Ime:</translation> <translation id="5628604359369369630">Nije pročitano. Dostupno je oflajn</translation> +<translation id="5632627355679805402">Podaci su šifrovani pomoću <ph name="BEGIN_LINK" />Google lozinke<ph name="END_LINK" /> (<ph name="TIME" />). Unesite je da biste započeli sinhronizaciju.</translation> <translation id="5639724618331995626">Dozvoli sve sajtove</translation> <translation id="5648166631817621825">Poslednjih 7 dana</translation> <translation id="5655963694829536461">Pretražite preuzimanja</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Provereno juče</translation> <translation id="6710213216561001401">Prethodno</translation> <translation id="671481426037969117">Tajmer aplikacije <ph name="FQDN" /> je istekao. Počeće ponovo sutra.</translation> +<translation id="6738516213925468394">Podaci su šifrovani pomoću <ph name="BEGIN_LINK" />pristupne fraze<ph name="END_LINK" /> (<ph name="TIME" />). Unesite je da biste započeli sinhronizaciju.</translation> <translation id="6738867403308150051">Preuzima se...</translation> <translation id="6767294960381293877">Lista uređaja sa kojima se deli kartica je otvorena na pola visine.</translation> <translation id="6783942555455976443">Sačuvajte ovu stranicu za kasnije i primite podsetnik</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb index 5be6673..1a12126 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Додирните реч да бисте је тренутно претражили или видели повезане радње</translation> <translation id="2760989362628427051">Укључите тамну тему када је тамна тема или Уштеда батерије укључена на уређају</translation> <translation id="2762000892062317888">малопре</translation> +<translation id="276969039800130567">Пријављен/на као <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Више подешавања у вези са приватношћу, безбедношћу и прикупљањем података потражите у одељку <ph name="BEGIN_LINK" />Google услуге<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Још <ph name="SECONDS" /> сек</translation> <translation id="2779651927720337254">није успело</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Управљај реакцијама</translation> <translation id="5626134646977739690">Име:</translation> <translation id="5628604359369369630">Није прочитано. Доступно је офлајн</translation> +<translation id="5632627355679805402">Подаци су шифровани помоћу <ph name="BEGIN_LINK" />Google лозинке<ph name="END_LINK" /> (<ph name="TIME" />). Унесите је да бисте започели синхронизацију.</translation> <translation id="5639724618331995626">Дозволи све сајтове</translation> <translation id="5648166631817621825">Последњих 7 дана</translation> <translation id="5655963694829536461">Претражите преузимања</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Проверено јуче</translation> <translation id="6710213216561001401">Претходно</translation> <translation id="671481426037969117">Тајмер апликације <ph name="FQDN" /> је истекао. Почеће поново сутра.</translation> +<translation id="6738516213925468394">Подаци су шифровани помоћу <ph name="BEGIN_LINK" />приступне фразе<ph name="END_LINK" /> (<ph name="TIME" />). Унесите је да бисте започели синхронизацију.</translation> <translation id="6738867403308150051">Преузима се...</translation> <translation id="6767294960381293877">Листа уређаја са којима се дели картица је отворена на пола висине.</translation> <translation id="6783942555455976443">Сачувајте ову страницу за касније и примите подсетник</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb index 425652d..44cb6e3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Tryck på ett ord om du vill söka direkt eller visa relaterade åtgärder</translation> <translation id="2760989362628427051">Aktivera mörkt tema när batterisparläget eller mörkt tema aktiveras på enheten</translation> <translation id="2762000892062317888">nyss</translation> +<translation id="276969039800130567">Inloggad som <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Fler inställningar som rör integritet, säkerhet och datainsamling finns under <ph name="BEGIN_LINK" />Googles tjänster<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder kvar</translation> <translation id="2779651927720337254">misslyckades</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Hantera reaktioner</translation> <translation id="5626134646977739690">Namn:</translation> <translation id="5628604359369369630">Oläst – Tillgänglig offline</translation> +<translation id="5632627355679805402">Din data krypterades med det <ph name="BEGIN_LINK" />Google-lösenord<ph name="END_LINK" /> du hade den <ph name="TIME" />. Ange det om du vill starta synkroniseringen.</translation> <translation id="5639724618331995626">Tillåt alla webbplatser</translation> <translation id="5648166631817621825">Senaste sju dagarna</translation> <translation id="5655963694829536461">Sök i dina nedladdningar</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Genomsöktes i går</translation> <translation id="6710213216561001401">Föregående</translation> <translation id="671481426037969117">Timern för <ph name="FQDN" /> har löpt ut. Den börjar om igen i morgon.</translation> +<translation id="6738516213925468394">Din data krypterades med din <ph name="BEGIN_LINK" />lösenfras för synkronisering<ph name="END_LINK" /> den <ph name="TIME" />. Ange den om du vill starta synkroniseringen.</translation> <translation id="6738867403308150051">Laddar ned …</translation> <translation id="6767294960381293877">Listan över enheter som fliken kan delas med öppnades och tar upp halva skärmen.</translation> <translation id="6783942555455976443">Spara den här sidan till senare och bli påmind</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb index ba7ef00..dffd63ee9 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Gusa neno ili utafute papo hapo au uone vitendo vinavyohusiana</translation> <translation id="2760989362628427051">Washa hali ya mandhari meusi wakati umewasha kipengele cha mandhari meusi au Kiokoa Betri cha kifaa chako</translation> <translation id="2762000892062317888">sasa hivi tu</translation> +<translation id="276969039800130567">Umeingia ukitumia <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Ili upate mipangilio zaidi inayohusiana na faragha, usalama na ukusanyaji wa data, angalia <ph name="BEGIN_LINK" />huduma za Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Zimesalia sekunde <ph name="SECONDS" /></translation> <translation id="2779651927720337254">imeshindwa</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Dhibiti maoni</translation> <translation id="5626134646977739690">Jina:</translation> <translation id="5628604359369369630">Ambazo hujasoma - Zinapatikana nje ya mtandao</translation> +<translation id="5632627355679805402">Data yako imesimbwa kwa kutumia <ph name="BEGIN_LINK" />Nenosiri la Google<ph name="END_LINK" /> kufikia <ph name="TIME" />. Liweke ili uanze kusawazisha.</translation> <translation id="5639724618331995626">Ruhusu tovuti zote</translation> <translation id="5648166631817621825">Siku 7 zilizopita</translation> <translation id="5655963694829536461">Tafuta vipakuliwa vyako</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Ilikaguliwa jana</translation> <translation id="6710213216561001401">Iliyopita</translation> <translation id="671481426037969117">Kipindi cha kipima muda cha <ph name="FQDN" /> kimeisha. Kitaanza tena kesho.</translation> +<translation id="6738516213925468394">Data yako ilisimbwa kwa kutumia <ph name="BEGIN_LINK" />kauli ya siri ya usawazishaji<ph name="END_LINK" /> mnamo <ph name="TIME" />. Iweke ili uanze kusawazisha.</translation> <translation id="6738867403308150051">Inapakua...</translation> <translation id="6767294960381293877">Orodha ya vifaa vinavyoweza kutumia kichupo pamoja imefunguliwa kwenye nusu ya skrini.</translation> <translation id="6783942555455976443">Hifadhi ukurasa huu ili uusome baadaye na upate kikumbusho</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb index 0eee1b67..90b4e2c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">உடனடியாகத் தேட அல்லது தொடர்புடைய செயல்களைப் பார்க்க, சொல்லைத் தட்டவும்</translation> <translation id="2760989362628427051">சாதனத்தில் டார்க் தீம் அல்லது பேட்டரி சேமிப்பான் ஆன் செய்யப்பட்டால் டார்க் தீமினை ஆன் செய்யும்</translation> <translation id="2762000892062317888">சற்று முன்</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> ஆக உள்நுழைந்துள்ளீர்கள்.</translation> <translation id="2776236159752647997">தனியுரிமை, பாதுகாப்பு, தரவுச் சேகரிப்பு ஆகியவற்றுடன் தொடர்புடைய கூடுதல் அமைப்புகளுக்கு, <ph name="BEGIN_LINK" />Google சேவைகள்<ph name="END_LINK" /> என்பதைப் பார்க்கவும்</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> வினாடிகள் மீதமுள்ளன</translation> <translation id="2779651927720337254">தோல்வியுற்றது</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">உணர்வு வெளிப்பாடுகளை நிர்வகிக்கலாம்</translation> <translation id="5626134646977739690">பெயர்:</translation> <translation id="5628604359369369630">படிக்காதவை - ஆஃப்லைனில் படிக்கலாம்</translation> +<translation id="5632627355679805402"><ph name="TIME" /> வரை உங்கள் <ph name="BEGIN_LINK" />Google கடவுச்சொல்<ph name="END_LINK" /> மூலம் உங்கள் தரவு என்கிரிப்ட் செய்யப்பட்டது. ஒத்திசைவைத் தொடங்க, அதை உள்ளிடவும்.</translation> <translation id="5639724618331995626">எல்லாத் தளங்களையும் அனுமதி</translation> <translation id="5648166631817621825">கடந்த 7 நாட்கள்</translation> <translation id="5655963694829536461">உங்கள் பதிவிறக்கங்களைத் தேடுக</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">சரிபார்த்தது: நேற்று</translation> <translation id="6710213216561001401">முந்தையது</translation> <translation id="671481426037969117">உங்கள் <ph name="FQDN" /> டைமர் நேரம் முடிந்தது. நாளை மீண்டும் தொடங்கும்.</translation> +<translation id="6738516213925468394"><ph name="TIME" />க்கு உங்கள் தரவு உங்கள் <ph name="BEGIN_LINK" />ஒத்திசைவுக் கடவுச்சொற்றொடரைக்<ph name="END_LINK" /> கொண்டு என்க்ரிப்ட் செய்யப்பட்டது. ஒத்திசைவைத் தொடங்க, அதை உள்ளிடவும்.</translation> <translation id="6738867403308150051">பதிவிறக்குகிறது…</translation> <translation id="6767294960381293877">தாவலைப் பகிர்வதற்கான சாதனங்களின் பட்டியல் திரையின் பாதி அளவிற்குத் திறக்கப்பட்டுள்ளது.</translation> <translation id="6783942555455976443">இதைப் பின்னர் பார்ப்பதற்குச் சேமித்து அதற்கான நினைவூட்டலைப் பெறலாம்</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 516078c..302eaa5 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
@@ -76,6 +76,7 @@ <translation id="147113415845704694">“ఈ రోజు వాతావరణం ఎలా ఉంది?” అని అడిగి ట్రై చేయండి</translation> <translation id="1477626028522505441">సర్వర్ సమస్యల కారణంగా <ph name="FILE_NAME" /> డౌన్లోడ్ విఫలమైంది.</translation> <translation id="1492417797159476138">మీరు ఇప్పటికే ఈ సైట్ కోసం ఈ యూజర్నేమ్ను సేవ్ చేశారు</translation> +<translation id="1493287004536771723">మీరు <ph name="SITE_NAME" />ను ఫాలో చేస్తున్నారు</translation> <translation id="1506061864768559482">సెర్చ్ ఇంజిన్</translation> <translation id="1513352483775369820">బుక్మార్క్లు మరియు వెబ్ చరిత్ర</translation> <translation id="1513858653616922153">పాస్వర్డ్ను తొలగించు</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">తక్షణమే వెతకడానికి లేదా సంబంధిత చర్యలను చూడటానికి ఒక పదాన్ని నొక్కండి</translation> <translation id="2760989362628427051">మీ పరికరంలో ముదురు రంగు థీమ్ లేదా బ్యాటరీ సేవర్ ఆన్లో ఉన్నప్పుడు, ముదురు రంగు థీమ్ను ఆన్ చేయండి</translation> <translation id="2762000892062317888">ఇప్పుడే</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" />గా సైన్ ఇన్ చేసారు.</translation> <translation id="2776236159752647997">గోప్యత, భద్రత అలాగే డేటా సేకరణకు సంబంధించిన మరిన్ని సెట్టింగ్ల కోసం, <ph name="BEGIN_LINK" />Google సర్వీస్ల<ph name="END_LINK" />ను చూడండి</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> సెకన్లు మిగిలి ఉంది</translation> <translation id="2779651927720337254">విఫలమైంది</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">మీ <ph name="BEGIN_LINK" />Google ఖాతా<ph name="END_LINK" />లో సేవ్ చేసిన పాస్వర్డ్లను చూడండి, మేనేజ్ చేయండి</translation> <translation id="2818669890320396765">ఇక ఎప్పుడు ఎక్కడ బుక్మార్క్లను సెట్ చేసినా ఆటోమాటిక్గా మీ అన్ని పరికరాలలోనూ పొందాలనుకుంటే, సైన్ ఇన్ చేసి, సమకాలీకరణ ఎంపికను ఆన్ చేయండి</translation> <translation id="2827278682606527653">Feed card menu half height</translation> +<translation id="2830783625999891985">క్లిప్ బోర్డ్ కంటెంట్లు దాచబడ్డాయి</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" /> అనుసరణ రద్దు చేయబడింది</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 రోజు క్రితం తనిఖీ చేసింది}other{# రోజుల క్రితం తనిఖీ చేసింది}}</translation> <translation id="2842985007712546952">మూల ఫోల్డర్</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB అందుబాటులో ఉంది</translation> <translation id="3549657413697417275">మీ చరిత్రను వెతకండి</translation> <translation id="3557336313807607643">పరిచయాలకు జోడించు</translation> +<translation id="3563767357928833671">క్లిప్ బోర్డ్ కంటెంట్లను చూపబడ్డాయి</translation> <translation id="3566923219790363270">Chrome ఇంకా VR కోసం సన్నద్ధమవుతోంది. Chromeని తర్వాత పునఃప్రారంభించండి.</translation> <translation id="3568688522516854065">మీ ఇతర పరికరాలలో ఉన్న మీ అన్ని ట్యాబ్లను పొందాలనుకుంటే, సైన్ ఇన్ చేసి, సమకాలీకరణ ఎంపికను ఆన్ చేయాలి</translation> <translation id="3587482841069643663">మొత్తం</translation> @@ -542,6 +546,7 @@ <translation id="4684427112815847243">అంతా సింక్ చేయండి</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 మరియు మరో <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 మరియు మరో <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation> <translation id="4696983787092045100">వచనాన్ని మీ పరికరాలకు పంపండి</translation> +<translation id="4697543623252708062">త్వరలో, మీరు కొత్త ట్యాబ్ను తెరిచినప్పుడు మీరు <ph name="SITE_NAME" /> నుండి కథనాలను చూస్తారు. 'ఫాలోలను మేనేజ్ చేయి'లో మీరు ఫాలో చేసే సైట్లను కంట్రోల్ చేయవచ్చు.</translation> <translation id="4699172675775169585">కాష్ చేసిన చిత్రాలు మరియు ఫైల్లు</translation> <translation id="4714588616299687897">మీ డేటాలో 60% వరకు ఆదా చేసుకోండి</translation> <translation id="4716066120200945007">ఫాలో చేస్తున్నారు</translation> @@ -691,6 +696,7 @@ <translation id="562289928968387744">ప్రతిస్పందనలను మేనేజ్ చేయండి</translation> <translation id="5626134646977739690">పేరు:</translation> <translation id="5628604359369369630">చదవనివి - ఆఫ్లైన్లో అందుబాటులో ఉన్నాయి</translation> +<translation id="5632627355679805402">మీ డేటా <ph name="TIME" />తేదీన మీ <ph name="BEGIN_LINK" />Google పాస్వర్డ్<ph name="END_LINK" />తో ఎన్క్రిప్ట్ చేయబడింది. సింక్ చేయడం ప్రారంభించడానికి దానిని నమోదు చేయండి.</translation> <translation id="5639724618331995626">అన్ని సైట్లను అనుమతించండి</translation> <translation id="5648166631817621825">గత 7 రోజులు</translation> <translation id="5655963694829536461">మీ డౌన్లోడ్లను వెతకండి</translation> @@ -884,6 +890,7 @@ <translation id="670498945988402717">నిన్న తనిఖీ చేసింది</translation> <translation id="6710213216561001401">మునుపటి</translation> <translation id="671481426037969117">మీ <ph name="FQDN" /> టైమర్ పూర్తయింది. అది మళ్లీ రేపు ప్రారంభమవుతుంది.</translation> +<translation id="6738516213925468394"><ph name="TIME" /> తేదీన మీ <ph name="BEGIN_LINK" />సింక్ రహస్య పదబంధం <ph name="END_LINK" />తో మీ డేటా ఎన్క్రిప్ట్ చేయబడింది. సింక్ను ప్రారంభించడానికి దీన్ని నమోదు చేయండి.</translation> <translation id="6738867403308150051">డౌన్లోడ్ చేస్తోంది...</translation> <translation id="6767294960381293877">ట్యాబ్ను షేర్ చేయాల్సిన పరికరాల జాబితా సగం ఎత్తులో తెరవబడింది.</translation> <translation id="6783942555455976443">ఈ పేజీని తర్వాత కోసం సేవ్ చేసి, ఒక రిమైండర్ను పొందండి</translation> @@ -1214,6 +1221,7 @@ <translation id="8993760627012879038">కొత్త ట్యాబ్ను అజ్ఞాత మోడ్లో తెరవండి</translation> <translation id="8996847606757455498">మరొక ప్రొవైడర్ను ఎంచుకోండి</translation> <translation id="8998729206196772491">మీరు <ph name="MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ ఇన్ చేస్తున్నారు. దీని నిర్వాహకులకు మీ Chrome డేటాపై నియంత్రణను అందిస్తున్నారు. మీ డేటా శాశ్వతంగా ఈ ఖాతాకు అనుబంధించబడుతుంది. Chrome నుండి సైన్ అవుట్ చేయడం వల్ల ఈ పరికరం నుండి మీ డేటా తొలగించబడుతుంది. కానీ ఇది మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation> +<translation id="9000233047676755924">మీరు కొత్త ట్యాబ్ను తెరిచినప్పుడు మీరు ఇప్పుడు <ph name="SITE_NAME" /> నుండి కథనాలను చూస్తారు. 'ఫాలోలను మేనేజ్ చేయి'లో మీరు ఫాలో చేసే సైట్లను కంట్రోల్ చేయవచ్చు.</translation> <translation id="9022774213089566801">తరచుగా సందర్శించినవి</translation> <translation id="9028914725102941583">పరికరాలలో షేర్ చేయడానికి, సింక్ను ఆన్ చేయండి</translation> <translation id="9040142327097499898">నోటిఫికేషన్లు అనుమతించబడ్డాయి. ఈ పరికరానికి స్థానం ఆఫ్ చేయబడింది.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb index a5670f92..39bb7a5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
@@ -62,6 +62,7 @@ <translation id="1376578503827013741">กำลังประมวลผล…</translation> <translation id="1383876407941801731">ค้นหา</translation> <translation id="1384704387250346179">แปลรูปภาพด้วย Google Lens <ph name="BEGIN_NEW" />ใหม่<ph name="END_NEW" /></translation> +<translation id="1385855801883526502">ไฮไลต์สไตไลซ์</translation> <translation id="1386674309198842382">ใช้งานเมื่อ <ph name="LAST_UPDATED" /> วันที่ผ่านมา</translation> <translation id="1397811292916898096">ค้นหาด้วย <ph name="PRODUCT_NAME" /></translation> <translation id="1406000523432664303">“ไม่ติดตาม”</translation> @@ -266,6 +267,7 @@ <translation id="2744248271121720757">แตะคำเพื่อค้นหาทันทีหรือดูการทำงานที่เกี่ยวข้อง</translation> <translation id="2760989362628427051">เปิดธีมสีเข้มเมื่อโหมดธีมสีเข้มหรือโหมดประหยัดแบตเตอรี่ของอุปกรณ์เปิดอยู่</translation> <translation id="2762000892062317888">เมื่อสักครู่</translation> +<translation id="276969039800130567">ลงชื่อเข้าใช้โดยใช้ <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="2776236159752647997">ดูการตั้งค่าเพิ่มเติมเกี่ยวกับความเป็นส่วนตัว ความปลอดภัย และการรวบรวมข้อมูลได้ที่<ph name="BEGIN_LINK" />บริการต่างๆ ของ Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">เหลือ <ph name="SECONDS" /> วิ</translation> <translation id="2779651927720337254">ล้มเหลว</translation> @@ -695,6 +697,7 @@ <translation id="562289928968387744">จัดการการโต้ตอบ</translation> <translation id="5626134646977739690">ชื่อ:</translation> <translation id="5628604359369369630">ยังไม่อ่าน - อ่านขณะออฟไลน์ได้</translation> +<translation id="5632627355679805402">ข้อมูลของคุณเข้ารหัสลับไว้ด้วย<ph name="BEGIN_LINK" />รหัสผ่าน Google<ph name="END_LINK" /> เมื่อ <ph name="TIME" /> ป้อนรหัสผ่านเพื่อเริ่มซิงค์</translation> <translation id="5639724618331995626">อนุญาตทุกไซต์</translation> <translation id="5648166631817621825">7 วันที่แล้ว</translation> <translation id="5655963694829536461">ค้นหาการดาวน์โหลด</translation> @@ -888,6 +891,7 @@ <translation id="670498945988402717">ตรวจสอบเมื่อวาน</translation> <translation id="6710213216561001401">ก่อนหน้า</translation> <translation id="671481426037969117">ตัวจับเวลา <ph name="FQDN" /> หมดเวลาแล้ว และจะเริ่มอีกครั้งพรุ่งนี้</translation> +<translation id="6738516213925468394">ข้อมูลของคุณเข้ารหัสลับไว้ด้วย<ph name="BEGIN_LINK" />รหัสผ่านการซิงค์<ph name="END_LINK" />เมื่อ <ph name="TIME" /> ป้อนรหัสผ่านเพื่อเริ่มซิงค์</translation> <translation id="6738867403308150051">กำลังดาวน์โหลด…</translation> <translation id="6767294960381293877">รายการอุปกรณ์ที่จะแชร์แท็บด้วยเปิดอยู่ที่ระดับความสูงครึ่งหนึ่งของหน้าจอ</translation> <translation id="6783942555455976443">บันทึกหน้านี้ไว้ใช้ในภายหลังและรับการช่วยเตือน</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb index d7b05ec..ec58d90 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Anında aramak veya ilgili işlemleri görmek için bir kelimeye dokunun</translation> <translation id="2760989362628427051">Cihazınızın koyu tema veya Pil Tasarrufu özelliği açık olduğunda koyu tema açılır</translation> <translation id="2762000892062317888">az önce</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> olarak oturum açıldı.</translation> <translation id="2776236159752647997">Gizlilik, güvenlik ve veri toplamayla ilgili daha fazla ayar için <ph name="BEGIN_LINK" />Google hizmetleri<ph name="END_LINK" /> konusuna bakın</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sn. kaldı</translation> <translation id="2779651927720337254">başarısız</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Tepkileri yönetin</translation> <translation id="5626134646977739690">Adı:</translation> <translation id="5628604359369369630">Okunmadı; Çevrimdışı kullanılabilir</translation> +<translation id="5632627355679805402"><ph name="TIME" /> itibarıyla verileriniz <ph name="BEGIN_LINK" />Google şifrenizle<ph name="END_LINK" /> şifrelendi. Senkronizasyonu başlatmak için şifreyi girin.</translation> <translation id="5639724618331995626">Tüm sitelere izin ver</translation> <translation id="5648166631817621825">Son 7 gün</translation> <translation id="5655963694829536461">İndirdiklerinizde arama yapın</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Dün kontrol edildi</translation> <translation id="6710213216561001401">Önceki</translation> <translation id="671481426037969117"><ph name="FQDN" /> zamanlayıcınızın süresi doldu. Yarın tekrar başlatılacak.</translation> +<translation id="6738516213925468394">Verileriniz <ph name="TIME" /> tarihinde <ph name="BEGIN_LINK" />senkronizasyon parolanızla<ph name="END_LINK" /> şifrelendi. Senkronizasyonu başlatmak için senkronizasyon parolanızı girin.</translation> <translation id="6738867403308150051">İndiriliyor…</translation> <translation id="6767294960381293877">Sekme paylaşılacak cihazların listesi yarım yükseklikte açıldı.</translation> <translation id="6783942555455976443">Sayfayı daha sonrası için kaydedip hatırlatıcı al</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb index db6835f..1297e75 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Торкніться слова для миттєвого пошуку або перегляду схожих дій</translation> <translation id="2760989362628427051">Активувати нічний режим, якщо його налаштовано або ввімкнено режим енергозбереження</translation> <translation id="2762000892062317888">щойно</translation> +<translation id="276969039800130567">Ви ввійшли як <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Інші налаштування конфіденційності, безпеки та збору даних доступні в розділі <ph name="BEGIN_LINK" />Сервіси Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Залишилося <ph name="SECONDS" /> с</translation> <translation id="2779651927720337254">не завантажено</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Керувати реакціями</translation> <translation id="5626134646977739690">Ім'я:</translation> <translation id="5628604359369369630">Непрочитано: доступно в режимі офлайн</translation> +<translation id="5632627355679805402">Дані зашифровано <ph name="BEGIN_LINK" />паролем Google<ph name="END_LINK" /> від <ph name="TIME" />. Введіть пароль, щоб почати синхронізацію.</translation> <translation id="5639724618331995626">Дозволити всі сайти</translation> <translation id="5648166631817621825">Останні 7 днів</translation> <translation id="5655963694829536461">Пошук у завантаженнях</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Перевірено вчора</translation> <translation id="6710213216561001401">Назад</translation> <translation id="671481426037969117">Вийшов час на таймері веб-сайту <ph name="FQDN" />. Завтра він знову запрацює.</translation> +<translation id="6738516213925468394">Ваші дані було зашифровано за допомогою <ph name="BEGIN_LINK" />парольної фрази для синхронізації<ph name="END_LINK" /> від <ph name="TIME" />. Введіть її, щоб почати синхронізацію.</translation> <translation id="6738867403308150051">Завантаження…</translation> <translation id="6767294960381293877">Список пристроїв, з якими можна ділитися вкладкою, відкрито на половину висоти.</translation> <translation id="6783942555455976443">Зберегти цю сторінку на пізніше й отримати нагадування</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb index f1f62f6..342ca82c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -76,6 +76,7 @@ <translation id="147113415845704694">"آج موسم کیسا ہے؟" آزمائیں</translation> <translation id="1477626028522505441">سروس کے مسائل کی وجہ سے <ph name="FILE_NAME" /> کو ڈاؤن لوڈ کرنا ناکام ہوگیا۔</translation> <translation id="1492417797159476138">آپ نے پہلے ہی اس سائٹ کے لئے یہ صارف نام محفوظ کر لیا ہے</translation> +<translation id="1493287004536771723">آپ <ph name="SITE_NAME" /> کی پیروی کر رہے ہیں</translation> <translation id="1506061864768559482">تلاش انجن</translation> <translation id="1513352483775369820">بُک مارکس اور ویب سرگزشت</translation> <translation id="1513858653616922153">پاس ورڈ حذف کریں</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">فوری تلاش یا متعلقہ کارروائی کے لیے کسی لفظ پر تھپتھپائیں</translation> <translation id="2760989362628427051">اپنے آلہ کے بیٹری سیور یا گہری تھیم کے آن ہونے پر گہری تھیم آن کریں</translation> <translation id="2762000892062317888">ابھی ابھی</translation> +<translation id="276969039800130567"><ph name="USER_EMAIL_ADDRESS" /> کے بطور سائن ان کردہ۔</translation> <translation id="2776236159752647997">رازداری، سیکیورٹی اور ڈیٹا جمع کرنے سے متعلق مزید ترتیبات کیلئے، <ph name="BEGIN_LINK" />Google سروسز<ph name="END_LINK" /> دیکھیں</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> سیکنڈ باقی</translation> <translation id="2779651927720337254">ناکام ہو گیا</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">اپنے <ph name="BEGIN_LINK" />Google اکاؤنٹ<ph name="END_LINK" /> میں محفوظ کردہ پاس ورڈز دیکھیں اور ان کا نظم کریں</translation> <translation id="2818669890320396765">اپنے سبھی آلات پر اپنے بُک مارکس حاصل کرنے کیلئے، سائن ان کریں اور سِنک کو آن کریں</translation> <translation id="2827278682606527653">نصف اونچائی پر فیڈ کارڈ مینو</translation> +<translation id="2830783625999891985">کلپ بورڈ کے مواد پوشیدہ ہو گئے</translation> <translation id="2839327205551510876"><ph name="SITE_NAME" /> کی پیروی ختم کی گئی</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 دن پہلے چیک کیا گیا}other{# دن پہلے چیک کیا گیا}}</translation> <translation id="2842985007712546952">پیرینٹ فولڈر</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB دستیاب ہے</translation> <translation id="3549657413697417275">اپنی سرگزشت تلاش کریں</translation> <translation id="3557336313807607643">رابطوں میں شامل کریں</translation> +<translation id="3563767357928833671">کلپ بورڈ کے مواد دکھائے گئے</translation> <translation id="3566923219790363270">Chrome ابھی VR کیلئے تیار ہو رہا ہے۔ Chrome کو بعد میں دوبارہ شروع کریں۔</translation> <translation id="3568688522516854065">اپنے دیگر آلات سے اپنے ٹیبز حاصل کرنے کیلئے، سائن ان کریں اور سِنک کو آن کریں</translation> <translation id="3587482841069643663">سبھی</translation> @@ -542,6 +546,7 @@ <translation id="4684427112815847243">ہر چیز کی مطابقت پذیری کریں</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 اور <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> مزید}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 اور <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> مزید}}</translation> <translation id="4696983787092045100">اپنے آلات پر متن بھیجیں</translation> +<translation id="4697543623252708062">جلد ہی، نیا ٹیب کھولنے پر آپ کو <ph name="SITE_NAME" /> سے کہانیاں دکھائی دیں گی۔ آپ جن سائٹس کی پیروی کر رہے ہیں انہیں 'پیروی کی جانے والی سائٹس کا نظم کریں' میں کنٹرول کر سکتے ہیں۔</translation> <translation id="4699172675775169585">کیش کردہ تصاویر اور فائلیں</translation> <translation id="4714588616299687897">60% تک اپنے ڈیٹا کی بچت کریں</translation> <translation id="4716066120200945007">پیروی کر رہے ہیں</translation> @@ -691,6 +696,7 @@ <translation id="562289928968387744">ردعمل کا نظم کریں</translation> <translation id="5626134646977739690">نام:</translation> <translation id="5628604359369369630">بغیر پڑھا ہوا - آف لائن دستیاب ہے</translation> +<translation id="5632627355679805402">آپ کے ڈیٹا کو آپ کے <ph name="BEGIN_LINK" />Google پاس ورڈ<ph name="END_LINK" /> کے ساتھ <ph name="TIME" /> تک مرموز کر دیا گیا۔ مطابقت پذیری شروع کرنے کیلئے اسے درج کریں۔</translation> <translation id="5639724618331995626">سبھی سائٹس کو اجازت دیں</translation> <translation id="5648166631817621825">آخری 7 دن</translation> <translation id="5655963694829536461">اپنے ڈاؤن لوڈز تلاش کریں</translation> @@ -884,6 +890,7 @@ <translation id="670498945988402717">گزشتہ کل چیک کیا گیا</translation> <translation id="6710213216561001401">گزشتہ</translation> <translation id="671481426037969117">آپ کا <ph name="FQDN" /> ٹائمر بند ہو گیا ہے۔ یہ کل دوبارہ شروع ہو جائے گا۔</translation> +<translation id="6738516213925468394">آپ کے ڈیٹا کی آپ کے <ph name="BEGIN_LINK" />مطابقت پذیر پاس فریز<ph name="END_LINK" /> کے ساتھ <ph name="TIME" /> کو مرموز کاری کی گئی تھی۔ مطابقت پذیری شروع کرنے کیلئے اسے درج کریں۔</translation> <translation id="6738867403308150051">ڈاؤن لوڈ ہو رہے ہیں…</translation> <translation id="6767294960381293877">ان آلات کی فہرست جن کے ساتھ ٹیب کا اشتراک کرنا ہے نصف اونچائی پر کھلی ہوئی ہے۔</translation> <translation id="6783942555455976443">یہ صفحہ بعد کے لیے محفوظ کریں اور یاد دہانی حاصل کریں</translation> @@ -1214,6 +1221,7 @@ <translation id="8993760627012879038">پوشیدگی وضع میں ایک نیا ٹیب کھولیں</translation> <translation id="8996847606757455498">کسی دوسرے فراہم کنندہ کا انتخاب کریں</translation> <translation id="8998729206196772491">آپ <ph name="MANAGED_DOMAIN" /> کے زیر انتظام اکاؤنٹ کے ساتھ سائن ان کر رہے ہیں اور اس کے منتظم کو اپنے Chrome ڈیٹا پر کنٹرول دے رہے ہیں۔ آپ کا ڈیٹا اس اکاؤنٹ سے مستقل طور پر مربوط ہو جائے گا۔ Chrome سے سائن آؤٹ کرنے سے آپ کا ڈیٹا اس آلہ سے حذف ہو جائے گا، لیکن یہ آپ کے Google اکاؤنٹ میں اسٹور رہے گا۔</translation> +<translation id="9000233047676755924">نیا ٹیب کھولنے پر اب آپ کو <ph name="SITE_NAME" /> سے کہانیاں دکھائی دیں گی۔ آپ جن سائٹس کی پیروی کر رہے ہیں انہیں 'پیروی کی جانے والی سائٹس کا نظم کریں' میں کنٹرول کر سکتے ہیں۔</translation> <translation id="9022774213089566801">اکثر ملاحظہ کردہ</translation> <translation id="9028914725102941583">سبھی آلات پر اشتراک کرنے کے لیے مطابقت پذیری کو آن کریں</translation> <translation id="9040142327097499898">اطلاعات کی اجازت ہے۔ مقام اس آلہ کے لیے آف ہے۔</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 a1d07211..5127c188 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
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Tegishli qidiruv natijalari va amallarni ko‘rish uchun so‘z ustiga bosing</translation> <translation id="2760989362628427051">Qurilmangizda tungi mavzu yoki Quvvat tejash rejimi yoqilganda tungi mavzu faollashadi</translation> <translation id="2762000892062317888">hozirgina</translation> +<translation id="276969039800130567">Siz <ph name="USER_EMAIL_ADDRESS" /> nomidan kirdingiz.</translation> <translation id="2776236159752647997">Maxfiylik, xavfsizlik va axborotlar jamlanishi haqida batafsil axborot olish uchun <ph name="BEGIN_LINK" />Google xizmatlari<ph name="END_LINK" /> bilan tanishing</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> soniya qoldi</translation> <translation id="2779651927720337254">xatolik:</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Munosabatlarni boshqarish</translation> <translation id="5626134646977739690">Ism:</translation> <translation id="5628604359369369630">Oʻqilmagan – oflayn mavjud</translation> +<translation id="5632627355679805402">Maʼlumotlaringiz <ph name="TIME" /> sanasida <ph name="BEGIN_LINK" />Google hisobingiz paroli<ph name="END_LINK" /> bilan shifrlangan. Sinxronizatsiyani boshlash uchun oʻsha parolingizni kiriting.</translation> <translation id="5639724618331995626">Barcha saytlarni ochishga ruxsat berish</translation> <translation id="5648166631817621825">Oxirgi 7 kun</translation> <translation id="5655963694829536461">Yuklanmalar ichidan qidirish</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Kecha tekshirilgan</translation> <translation id="6710213216561001401">Avvalgi</translation> <translation id="671481426037969117"><ph name="FQDN" /> taymeridagi vaqt tugadi. Ertaga qaytadan boshlanadi.</translation> +<translation id="6738516213925468394">Maʼlumotlaringiz <ph name="TIME" /> sanasida <ph name="BEGIN_LINK" />kodli ibora<ph name="END_LINK" /> bilan shifrlangan. Sinxronizatsiyani boshlash uchun uni kiriting.</translation> <translation id="6738867403308150051">Yuklab olinmoqda...</translation> <translation id="6767294960381293877">Yarim hajmda ochilgan varaq uzatiladigan qurilmalar roʻyxati.</translation> <translation id="6783942555455976443">Bu sahifani saqlab qolish va keyinroq eslatish</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb index bb722916..ca47c6d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Hãy nhấn vào một từ để tìm kiếm ngay hoặc xem các hành động có liên quan</translation> <translation id="2760989362628427051">Bật giao diện tối khi Trình tiết kiệm pin hoặc giao diện tối trên thiết bị đang bật</translation> <translation id="2762000892062317888">vừa xong</translation> +<translation id="276969039800130567">Đăng nhập bằng địa chỉ <ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Bạn có thể xem thêm các tùy chọn cài đặt liên quan đến quyền riêng tư, bảo mật và hoạt động thu thập dữ liệu trong phần <ph name="BEGIN_LINK" />Các dịch vụ của Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389">Còn <ph name="SECONDS" /> giây</translation> <translation id="2779651927720337254">không tải xuống được</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Quản lý lượt bày tỏ cảm xúc</translation> <translation id="5626134646977739690">Tên:</translation> <translation id="5628604359369369630">Chưa đọc – Có thể đọc khi không có mạng</translation> +<translation id="5632627355679805402">Dữ liệu của bạn đã được mã hóa bằng <ph name="BEGIN_LINK" />mật khẩu Google<ph name="END_LINK" /> kể từ <ph name="TIME" />. Hãy nhập mật khẩu đó để bắt đầu đồng bộ hóa.</translation> <translation id="5639724618331995626">Cho phép tất cả trang web</translation> <translation id="5648166631817621825">7 ngày qua</translation> <translation id="5655963694829536461">Tìm kiếm trong các tệp đã tải xuống</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Đã kiểm tra hôm qua</translation> <translation id="6710213216561001401">Trước</translation> <translation id="671481426037969117">Thời gian hẹn giờ của <ph name="FQDN" /> đã hết. Thời gian hẹn giờ sẽ bắt đầu lại vào ngày mai.</translation> +<translation id="6738516213925468394">Dữ liệu của bạn đã được mã hóa bằng <ph name="BEGIN_LINK" />cụm mật khẩu đồng bộ hóa<ph name="END_LINK" /> vào <ph name="TIME" />. Hãy nhập cụm mật khẩu đó để bắt đầu đồng bộ hóa.</translation> <translation id="6738867403308150051">Đang tải xuống...</translation> <translation id="6767294960381293877">Danh sách các thiết bị mà bạn có thể chia sẻ một thẻ đã mở ở nửa dưới của màn hình.</translation> <translation id="6783942555455976443">Lưu trang này để đọc sau và nhận lời nhắc</translation> @@ -1194,7 +1197,7 @@ <translation id="8820817407110198400">Dấu trang</translation> <translation id="883806473910249246">Đã xảy ra lỗi khi tải nội dung xuống.</translation> <translation id="8840953339110955557">Trang này có thể khác với phiên bản trực tuyến.</translation> -<translation id="8849001918648564819">Ẩn</translation> +<translation id="8849001918648564819">Đã ẩn</translation> <translation id="8853345339104747198">Thẻ <ph name="TAB_TITLE" /></translation> <translation id="8854223127042600341">Xem tệp khi không có mạng</translation> <translation id="8856607253650333758">Tải nội dung mô tả</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 e24ea03..2832f0b6 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
@@ -76,6 +76,7 @@ <translation id="147113415845704694">试着说“今天的天气如何?”</translation> <translation id="1477626028522505441">未能成功下载 <ph name="FILE_NAME" />,因为服务器出现了问题。</translation> <translation id="1492417797159476138">您已为此网站保存该用户名</translation> +<translation id="1493287004536771723">您已关注 <ph name="SITE_NAME" /></translation> <translation id="1506061864768559482">搜索引擎</translation> <translation id="1513352483775369820">书签和网络历史记录</translation> <translation id="1513858653616922153">删除密码</translation> @@ -265,6 +266,7 @@ <translation id="2744248271121720757">点按某个字词可立即开始搜索或查看相关操作</translation> <translation id="2760989362628427051">在设备开启深色主题背景或省电模式时启用深色主题背景</translation> <translation id="2762000892062317888">刚刚</translation> +<translation id="276969039800130567">您已用 <ph name="USER_EMAIL_ADDRESS" /> 的身份登录。</translation> <translation id="2776236159752647997">如需了解更多与隐私、安全和数据收集相关的设置,请前往 <ph name="BEGIN_LINK" />Google 服务<ph name="END_LINK" />部分</translation> <translation id="2777555524387840389">还剩 <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失败</translation> @@ -275,6 +277,7 @@ <translation id="281504910091592009">查看和管理您的 <ph name="BEGIN_LINK" />Google 帐号<ph name="END_LINK" />中保存的密码</translation> <translation id="2818669890320396765">要将您的书签同步到您的所有设备上,请登录您的帐号并开启同步功能</translation> <translation id="2827278682606527653">动态卡片上的菜单已半屏打开</translation> +<translation id="2830783625999891985">已隐藏剪贴板内容</translation> <translation id="2839327205551510876">已取消关注“<ph name="SITE_NAME" />”</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 天前检查过}other{# 天前检查过}}</translation> <translation id="2842985007712546952">父文件夹</translation> @@ -390,6 +393,7 @@ <translation id="3542235761944717775">可用空间:<ph name="KILOBYTES" /> KB</translation> <translation id="3549657413697417275">搜索您的历史记录</translation> <translation id="3557336313807607643">添加到通讯录</translation> +<translation id="3563767357928833671">已显示剪贴板内容</translation> <translation id="3566923219790363270">Chrome 仍在准备 VR。请稍等片刻再重启 Chrome。</translation> <translation id="3568688522516854065">要访问您在其他设备上的标签页,请登录您的帐号并开启同步功能</translation> <translation id="3587482841069643663">全部</translation> @@ -542,6 +546,7 @@ <translation id="4684427112815847243">同步所有数据类型</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026以及另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 种送货方式}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026以及另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 种送货方式}}</translation> <translation id="4696983787092045100">向您的多部设备发送短信</translation> +<translation id="4697543623252708062">不久之后,当打开新标签页时,您将看到来自 <ph name="SITE_NAME" /> 的故事。您可在“管理关注”页面中控制您关注的网站。</translation> <translation id="4699172675775169585">缓存的图片和文件</translation> <translation id="4714588616299687897">最多可为您节省 60% 的数据流量</translation> <translation id="4716066120200945007">已关注</translation> @@ -691,6 +696,7 @@ <translation id="562289928968387744">管理回应</translation> <translation id="5626134646977739690">名字:</translation> <translation id="5628604359369369630">未读 - 可离线阅读</translation> +<translation id="5632627355679805402">您的数据已于 <ph name="TIME" />使用您的 <ph name="BEGIN_LINK" />Google 密码<ph name="END_LINK" />加密。输入该密码即可开始同步。</translation> <translation id="5639724618331995626">允许访问所有网站</translation> <translation id="5648166631817621825">过去 7 天</translation> <translation id="5655963694829536461">搜索您的下载内容</translation> @@ -884,6 +890,7 @@ <translation id="670498945988402717">昨天检查过</translation> <translation id="6710213216561001401">上一项</translation> <translation id="671481426037969117">您的 <ph name="FQDN" /> 计时器已结束计时。它将于明天重新开始。</translation> +<translation id="6738516213925468394">您的数据已于 <ph name="TIME" />使用您的<ph name="BEGIN_LINK" />同步密码<ph name="END_LINK" />加密。输入该密码即可开始同步。</translation> <translation id="6738867403308150051">正在下载…</translation> <translation id="6767294960381293877">要与之分享标签页的设备的列表已半屏打开。</translation> <translation id="6783942555455976443">保存此页面以便稍后阅读并接收提醒</translation> @@ -1214,6 +1221,7 @@ <translation id="8993760627012879038">在无痕模式下打开新标签页</translation> <translation id="8996847606757455498">另选一个提供商</translation> <translation id="8998729206196772491">您正要登录由 <ph name="MANAGED_DOMAIN" /> 管理的帐号,并要授权其管理员控制您的 Chrome 数据。您的数据将与此帐号永久关联。退出 Chrome 后,您的数据将从这台设备上删除,但仍会保留在您的 Google 帐号中。</translation> +<translation id="9000233047676755924">现在,当打开新标签页时,您会看到来自 <ph name="SITE_NAME" /> 的故事。您可在“管理关注”页面中控制您关注的网站。</translation> <translation id="9022774213089566801">经常访问</translation> <translation id="9028914725102941583">开启同步功能以跨设备分享内容</translation> <translation id="9040142327097499898">允许显示通知。但此设备的位置信息功能已关闭。</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb index 386ef70..add3f80 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">輕按字詞即可搜尋,或查看相關操作</translation> <translation id="2760989362628427051">在裝置啟用深色主題背景或開啟「省電模式」後啟用深色主題背景</translation> <translation id="2762000892062317888">剛剛</translation> +<translation id="276969039800130567">以 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入。</translation> <translation id="2776236159752647997">如需更多與私隱權、安全性和資料收集相關的設定,請參閱 <ph name="BEGIN_LINK" />Google 服務<ph name="END_LINK" /></translation> <translation id="2777555524387840389">尚餘 <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失敗</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">管理回應</translation> <translation id="5626134646977739690">名稱:</translation> <translation id="5628604359369369630">未讀 - 可離線閱讀</translation> +<translation id="5632627355679805402">您已於 <ph name="TIME" />使用<ph name="BEGIN_LINK" />Google 密碼<ph name="END_LINK" />加密資料。如要開始同步處理資料,請輸入密碼。</translation> <translation id="5639724618331995626">允許瀏覽所有網站</translation> <translation id="5648166631817621825">最近 7 天</translation> <translation id="5655963694829536461">搜尋您的下載內容</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">曾在昨天檢查</translation> <translation id="6710213216561001401">上一個</translation> <translation id="671481426037969117">「<ph name="FQDN" />」計時器已結束計時,將於明天重新開始。</translation> +<translation id="6738516213925468394">您已於 <ph name="TIME" />使用<ph name="BEGIN_LINK" />同步密碼短語<ph name="END_LINK" />加密資料,請輸入密碼短語開始同步資料。</translation> <translation id="6738867403308150051">下載中…</translation> <translation id="6767294960381293877">要共用分頁嘅裝置清單宜家顯示喺畫面下半部。</translation> <translation id="6783942555455976443">將此頁面儲存至稍後閱讀,並接收提醒</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb index 741597ac..50f2962 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">只要輕觸字詞就能立即展開搜尋或查看相關的動作</translation> <translation id="2760989362628427051">當裝置開啟深色主題或省電模式時,啟用深色主題</translation> <translation id="2762000892062317888">剛剛</translation> +<translation id="276969039800130567">以 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入。</translation> <translation id="2776236159752647997">如需更多有關隱私權、安全性和資料收集的設定,請參閱 <ph name="BEGIN_LINK" />Google 服務<ph name="END_LINK" /></translation> <translation id="2777555524387840389">還剩 <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失敗</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">管理回應</translation> <translation id="5626134646977739690">名稱:</translation> <translation id="5628604359369369630">尚未閱讀 - 可離線閱讀</translation> +<translation id="5632627355679805402">你在 <ph name="TIME" />已使用 <ph name="BEGIN_LINK" />Google 密碼<ph name="END_LINK" />將資料加密。如要開始同步處理資料,請輸入密碼。</translation> <translation id="5639724618331995626">允許所有網站</translation> <translation id="5648166631817621825">過去 7 天</translation> <translation id="5655963694829536461">搜尋下載內容</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">昨天已檢查</translation> <translation id="6710213216561001401">返回</translation> <translation id="671481426037969117">「<ph name="FQDN" />」計時器已結束計時,將於明天重新開始。</translation> +<translation id="6738516213925468394">你在 <ph name="TIME" />已使用<ph name="BEGIN_LINK" />同步通關密語<ph name="END_LINK" />將資料加密。如要開始同步處理資料,請輸入通關密語。</translation> <translation id="6738867403308150051">下載中…</translation> <translation id="6767294960381293877">要共用分頁的裝置清單已開啟,顯示在畫面下半部。</translation> <translation id="6783942555455976443">儲存這個頁面以便稍後閱讀並設定提醒</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb index 19a0508..ed83332c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -266,6 +266,7 @@ <translation id="2744248271121720757">Thepha igama ukuze useshe ngokushesha noma ubone izenzo eziphathelene</translation> <translation id="2760989362628427051">Vula imodi emnyama uma imodi emnyama yedivayisi yakho noma Isilondolozi sebhethri sivuliwe</translation> <translation id="2762000892062317888">khona manje</translation> +<translation id="276969039800130567">Ingene ngemvume njengo-<ph name="USER_EMAIL_ADDRESS" />.</translation> <translation id="2776236159752647997">Ukuze uthole amasethingi angeziwe ahlobene nobumfihlo, ukuvikeleka nokuqoqwa kwedatha, bona okuthi <ph name="BEGIN_LINK" />Amasevisi we-Google<ph name="END_LINK" /></translation> <translation id="2777555524387840389"><ph name="SECONDS" /> amasekhondi asele</translation> <translation id="2779651927720337254">yehlulekile</translation> @@ -695,6 +696,7 @@ <translation id="562289928968387744">Phatha ukusabela</translation> <translation id="5626134646977739690">Igama:</translation> <translation id="5628604359369369630">Akufundiwe - Kutholakala ungaxhunyiwe ku-inthanethi</translation> +<translation id="5632627355679805402">Idatha yakho ibethelwe <ph name="BEGIN_LINK" />ngephasiwedi yakho ye-Google<ph name="END_LINK" /> kusuka ngo-<ph name="TIME" />. Ifake ukuze uqale ukuvumelanisa.</translation> <translation id="5639724618331995626">Vumela onke amasayithi</translation> <translation id="5648166631817621825">Izinsuku zokugcina ezingu-7</translation> <translation id="5655963694829536461">Sesha ukulanda kwakho</translation> @@ -888,6 +890,7 @@ <translation id="670498945988402717">Kuhlolwe izolo</translation> <translation id="6710213216561001401">Okwedlule</translation> <translation id="671481426037969117">Isibalisikhathi sakho se-<ph name="FQDN" /> siphelile. Sizoqala futhi kusasa.</translation> +<translation id="6738516213925468394">Idatha yakho ibethelwe <ph name="BEGIN_LINK" />ngomshwana wakho wokuvumelanisa<ph name="END_LINK" /> ngo-<ph name="TIME" />. Ifake ukuze uqale ukuvumelanisa.</translation> <translation id="6738867403308150051">Iyalanda...</translation> <translation id="6767294960381293877">Uhlu lwamadivayisi lokwabelana ngethebhu ngokuvuleka okunguhafu.</translation> <translation id="6783942555455976443">Londolozela leli khasi ingemuva kwesikhathi uphinde uthole isikhumbuzi</translation>
diff --git a/chrome/browser/ui/app_list/search/arc/recommend_apps_fetcher.cc b/chrome/browser/ui/app_list/search/arc/recommend_apps_fetcher.cc index 16bbb6c5c5..5f21e86 100644 --- a/chrome/browser/ui/app_list/search/arc/recommend_apps_fetcher.cc +++ b/chrome/browser/ui/app_list/search/arc/recommend_apps_fetcher.cc
@@ -15,8 +15,8 @@ std::unique_ptr<RecommendAppsFetcher> RecommendAppsFetcher::Create( RecommendAppsFetcherDelegate* delegate) { return std::make_unique<RecommendAppsFetcherImpl>( - delegate, content::BrowserContext::GetDefaultStoragePartition( - ProfileManager::GetActiveUserProfile()) + delegate, ProfileManager::GetActiveUserProfile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get()); }
diff --git a/chrome/browser/ui/app_list/search/common/url_icon_source.cc b/chrome/browser/ui/app_list/search/common/url_icon_source.cc index c295ef80..9862798 100644 --- a/chrome/browser/ui/app_list/search/common/url_icon_source.cc +++ b/chrome/browser/ui/app_list/search/common/url_icon_source.cc
@@ -68,7 +68,7 @@ simple_loader_ = network::SimpleURLLoader::Create(std::move(resource_request), traffic_annotation); network::mojom::URLLoaderFactory* loader_factory = - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); simple_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
diff --git a/chrome/browser/ui/app_list/search/search_controller_factory.cc b/chrome/browser/ui/app_list/search/search_controller_factory.cc index ff27d53..abd1cf2 100644 --- a/chrome/browser/ui/app_list/search/search_controller_factory.cc +++ b/chrome/browser/ui/app_list/search/search_controller_factory.cc
@@ -179,12 +179,11 @@ std::make_unique<ZeroStateFileProvider>(profile)); size_t drive_zero_state_group_id = controller->AddGroup(kMaxZeroStateDriveResults); - controller->AddProvider( - drive_zero_state_group_id, - std::make_unique<ZeroStateDriveProvider>( - profile, controller.get(), - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess())); + controller->AddProvider(drive_zero_state_group_id, + std::make_unique<ZeroStateDriveProvider>( + profile, controller.get(), + profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess())); } if (app_list_features::IsLauncherSettingsSearchEnabled()) {
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc index 73303575..3d83d0f 100644 --- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc +++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
@@ -37,7 +37,7 @@ #include "chrome/browser/ui/ash/in_session_auth_dialog_client.h" #include "chrome/browser/ui/ash/launcher/app_service/exo_app_type_resolver.h" #include "chrome/browser/ui/ash/launcher/chrome_shelf_controller.h" -#include "chrome/browser/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include "chrome/browser/ui/ash/media_client_impl.h" #include "chrome/browser/ui/ash/media_notification_provider_impl.h" #include "chrome/browser/ui/ash/network/mobile_data_notifications.h" @@ -208,8 +208,8 @@ } void ChromeBrowserMainExtraPartsAsh::PostProfileInit() { - login_screen_client_ = std::make_unique<LoginScreenClient>(); - // https://crbug.com/884127 ensuring that LoginScreenClient is initialized + login_screen_client_ = std::make_unique<LoginScreenClientImpl>(); + // https://crbug.com/884127 ensuring that LoginScreenClientImpl is initialized // before using it InitializeDeviceDisablingManager. g_browser_process->platform_part()->InitializeDeviceDisablingManager();
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h index 21c946a..0db5b9a0 100644 --- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h +++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h
@@ -30,7 +30,7 @@ class CastConfigControllerMediaRouter; class ImeControllerClient; class InSessionAuthDialogClient; -class LoginScreenClient; +class LoginScreenClientImpl; class MediaClientImpl; class MobileDataNotifications; class NetworkConnectDelegateChromeOS; @@ -109,7 +109,7 @@ #endif // Initialized in PostProfileInit in all configs: - std::unique_ptr<LoginScreenClient> login_screen_client_; + std::unique_ptr<LoginScreenClientImpl> login_screen_client_; std::unique_ptr<MediaClientImpl> media_client_; std::unique_ptr<policy::DisplaySettingsHandler> display_settings_handler_;
diff --git a/chrome/browser/ui/ash/clipboard_history_browsertest.cc b/chrome/browser/ui/ash/clipboard_history_browsertest.cc index d6fe58560..010afdbe 100644 --- a/chrome/browser/ui/ash/clipboard_history_browsertest.cc +++ b/chrome/browser/ui/ash/clipboard_history_browsertest.cc
@@ -12,7 +12,9 @@ #include "ash/clipboard/views/clipboard_history_delete_button.h" #include "ash/clipboard/views/clipboard_history_item_view.h" #include "ash/constants/ash_features.h" +#include "ash/public/cpp/clipboard_image_model_factory.h" #include "ash/shell.h" +#include "base/path_service.h" #include "base/test/bind.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" @@ -21,13 +23,17 @@ #include "chrome/browser/ash/login/ui/user_adding_screen.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/ash/clipboard_image_model_request.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/test/base/ui_test_utils.h" #include "chromeos/crosapi/mojom/clipboard_history.mojom.h" #include "components/user_manager/user_manager.h" +#include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" +#include "net/dns/mock_host_resolver.h" #include "ui/base/clipboard/scoped_clipboard_writer.h" #include "ui/base/data_transfer_policy/data_transfer_endpoint.h" #include "ui/base/data_transfer_policy/data_transfer_policy_controller.h" @@ -41,8 +47,68 @@ namespace { +using ImageModelRequestTestParams = ClipboardImageModelRequest::TestParams; + constexpr char kUrlString[] = "https://www.example.com"; +// The helper class to wait for the update in the clipboard history item list. +class ClipboardHistoryItemUpdateWaiter + : public ash::ClipboardHistoryController::Observer { + public: + ClipboardHistoryItemUpdateWaiter() = default; + ClipboardHistoryItemUpdateWaiter(const ClipboardHistoryItemUpdateWaiter&) = + delete; + ClipboardHistoryItemUpdateWaiter& operator=( + const ClipboardHistoryItemUpdateWaiter&) = delete; + ~ClipboardHistoryItemUpdateWaiter() override { + ash::ClipboardHistoryController::Get()->RemoveObserver(this); + } + + void OnClipboardHistoryItemListAddedOrRemoved() override { run_loop_.Quit(); } + + void Wait() { + ash::ClipboardHistoryController::Get()->AddObserver(this); + run_loop_.Run(); + } + + private: + base::RunLoop run_loop_; +}; + +// The helper class to wait for the completion of the image model request. +class ClipboardImageModelRequestWaiter { + public: + ClipboardImageModelRequestWaiter(ImageModelRequestTestParams* test_params, + bool expect_auto_resize) + : test_params_(test_params), expect_auto_resize_(expect_auto_resize) { + test_params_->callback = + base::BindRepeating(&ClipboardImageModelRequestWaiter::OnRequestStop, + base::Unretained(this)); + ClipboardImageModelRequest::SetTestParams(test_params_); + } + ClipboardImageModelRequestWaiter(const ClipboardImageModelRequestWaiter&) = + delete; + ClipboardImageModelRequestWaiter& operator=( + const ClipboardImageModelRequestWaiter&) = delete; + ~ClipboardImageModelRequestWaiter() { + test_params_->callback = base::NullCallback(); + ClipboardImageModelRequest::SetTestParams(nullptr); + } + + void Wait() { run_loop_.Run(); } + + void OnRequestStop(bool use_auto_resize_mode) { + EXPECT_EQ(expect_auto_resize_, use_auto_resize_mode); + run_loop_.Quit(); + } + + private: + ImageModelRequestTestParams* const test_params_; + const bool expect_auto_resize_; + + base::RunLoop run_loop_; +}; + // The helper class to wait for the observed view's bounds update. class ViewBoundsWaiter : public views::ViewObserver { public: @@ -768,6 +834,116 @@ EXPECT_EQ(last_paste.GetList()[0].GetString(), "text/plain: A"); } +class ClipboardHistoryBrowserTest : public InProcessBrowserTest { + public: + ClipboardHistoryBrowserTest() = default; + ~ClipboardHistoryBrowserTest() override = default; + + // InProcessBrowserTest: + void SetUpOnMainThread() override { + InProcessBrowserTest::SetUpOnMainThread(); + base::FilePath test_data_dir; + ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir)); + host_resolver()->AddRule("*", "127.0.0.1"); + embedded_test_server()->ServeFilesFromDirectory( + test_data_dir.AppendASCII("chrome/test/data/ash/clipboard_history")); + ASSERT_TRUE(embedded_test_server()->Start()); + } +}; + +// Verifies that the images rendered from the copied web contents should +// show in the clipboard history menu. Switching the auto resize mode is covered +// in this test case. +IN_PROC_BROWSER_TEST_F(ClipboardHistoryBrowserTest, VerifyHTMLRendering) { + // Load the web page which contains images and text. + ui_test_utils::NavigateToURL( + browser(), embedded_test_server()->GetURL("/image-and-text.html")); + + // Select one part of the web page. Wait until the selection region updates. + // Then copy the selected part to clipboard. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + ASSERT_TRUE(ExecuteScript(web_contents, "selectPart1();")); + content::WaitForSelectionBoundingBoxUpdate(web_contents); + ASSERT_TRUE(ExecuteScript(web_contents, "copyToClipboard();")); + + // Wait until the clipboard history updates. + const auto& item_lists = GetClipboardItems(); + if (item_lists.empty()) { + ClipboardHistoryItemUpdateWaiter item_update_waiter; + item_update_waiter.Wait(); + ASSERT_EQ(1u, item_lists.size()); + } + + base::HistogramTester histogram_tester; + + // Show the clipboard history menu through the acclerator. When the clipboard + // history shows, the process of HTML rendering starts. + auto event_generator = std::make_unique<ui::test::EventGenerator>( + ash::Shell::GetPrimaryRootWindow()); + event_generator->PressKey(ui::KeyboardCode::VKEY_V, ui::EF_COMMAND_DOWN); + event_generator->ReleaseKey(ui::KeyboardCode::VKEY_V, ui::EF_COMMAND_DOWN); + + // Render HTML with auto-resize mode enabled. Wait until the rendering + // finishes. + ImageModelRequestTestParams test_params(/*callback=*/base::NullCallback(), + /*enforce_auto_resize=*/true); + { + ClipboardImageModelRequestWaiter image_request_waiter( + &test_params, /*expect_auto_resize=*/true); + image_request_waiter.Wait(); + } + + // Verify that the rendering ends normally. + histogram_tester.ExpectUniqueSample( + "Ash.ClipboardHistory.ImageModelRequest.StopReason", + static_cast<int>( + ClipboardImageModelRequest::RequestStopReason::kFulfilled), + 1); + + // Verify that the clipboard history menu shows. Then close the menu. + EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); + event_generator->PressKey(ui::KeyboardCode::VKEY_ESCAPE, ui::EF_NONE); + event_generator->ReleaseKey(ui::KeyboardCode::VKEY_ESCAPE, ui::EF_NONE); + EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); + + // Select another part. Wait until the selection region updates. Then copy + // the selected html code to clipboard. + ASSERT_TRUE(ExecuteScript(web_contents, "selectPart2();")); + content::WaitForSelectionBoundingBoxUpdate(web_contents); + ASSERT_TRUE(ExecuteScript(web_contents, "copyToClipboard();")); + + // Wait until the clipboard history updates. + if (item_lists.size() == 1u) { + ClipboardHistoryItemUpdateWaiter item_update_waiter; + item_update_waiter.Wait(); + ASSERT_EQ(2u, item_lists.size()); + } + + // Show the clipboard history menu. + event_generator->PressKey(ui::KeyboardCode::VKEY_V, ui::EF_COMMAND_DOWN); + event_generator->ReleaseKey(ui::KeyboardCode::VKEY_V, ui::EF_COMMAND_DOWN); + + // Render HTML with auto-resize mode disabled. Wait until the rendering + // finishes. + test_params.enforce_auto_resize = false; + { + ClipboardImageModelRequestWaiter image_request_waiter( + &test_params, /*expect_auto_resize=*/false); + image_request_waiter.Wait(); + } + + // Verify that the rendering ends normally. + histogram_tester.ExpectUniqueSample( + "Ash.ClipboardHistory.ImageModelRequest.StopReason", + static_cast<int>( + ClipboardImageModelRequest::RequestStopReason::kFulfilled), + 2); + + // Verify that the clipboard history menu's status. + EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); + ASSERT_EQ(2, GetContextMenu()->GetMenuItemsCount()); +} + // The browser test which creates a widget with a textfield during setting-up // to help verify the multipaste menu item's response to the gesture tap and // the mouse click.
diff --git a/chrome/browser/ui/ash/clipboard_image_model_factory_impl.cc b/chrome/browser/ui/ash/clipboard_image_model_factory_impl.cc index 9fd23be8..33627e7 100644 --- a/chrome/browser/ui/ash/clipboard_image_model_factory_impl.cc +++ b/chrome/browser/ui/ash/clipboard_image_model_factory_impl.cc
@@ -20,9 +20,11 @@ void ClipboardImageModelFactoryImpl::Render(const base::UnguessableToken& id, const std::string& html_markup, + const gfx::Size& bounding_box_size, ImageModelCallback callback) { DCHECK(!html_markup.empty()); - pending_list_.emplace_front(id, html_markup, std::move(callback)); + pending_list_.emplace_front(id, html_markup, bounding_box_size, + std::move(callback)); StartNextRequest(); }
diff --git a/chrome/browser/ui/ash/clipboard_image_model_factory_impl.h b/chrome/browser/ui/ash/clipboard_image_model_factory_impl.h index 33c9c0d..71bc4983 100644 --- a/chrome/browser/ui/ash/clipboard_image_model_factory_impl.h +++ b/chrome/browser/ui/ash/clipboard_image_model_factory_impl.h
@@ -28,6 +28,7 @@ // ash::ClipboardImageModelFactory: void Render(const base::UnguessableToken& id, const std::string& html_markup, + const gfx::Size& bounding_box_size, ImageModelCallback callback) override; void CancelRequest(const base::UnguessableToken& id) override; void Activate() override;
diff --git a/chrome/browser/ui/ash/clipboard_image_model_request.cc b/chrome/browser/ui/ash/clipboard_image_model_request.cc index 5df5c5b..395eebeb 100644 --- a/chrome/browser/ui/ash/clipboard_image_model_request.cc +++ b/chrome/browser/ui/ash/clipboard_image_model_request.cc
@@ -33,6 +33,10 @@ // incurred by web contents rendering. constexpr gfx::Size kMaxWebContentsSize(2000, 2000); +// The initial size of the NativeView to force painting in an inactive shown +// widget for auto-resize mode. +constexpr gfx::Size kAutoResizeModeInitialSize(1, 1); + ClipboardImageModelRequest::TestParams* g_test_params = nullptr; } // namespace @@ -41,8 +45,12 @@ ClipboardImageModelRequest::Params::Params(const base::UnguessableToken& id, const std::string& html_markup, + const gfx::Size& bounding_box_size, ImageModelCallback callback) - : id(id), html_markup(html_markup), callback(std::move(callback)) {} + : id(id), + html_markup(html_markup), + bounding_box_size(bounding_box_size), + callback(std::move(callback)) {} ClipboardImageModelRequest::Params::Params(Params&&) = default; @@ -154,9 +162,10 @@ GURL(kDataURIPrefix + encoded_html))); widget_->ShowInactive(); - // Give some initial bounds to the NativeView to force painting in an inactive - // shown widget. - web_contents()->GetNativeView()->SetBounds(gfx::Rect(0, 0, 1, 1)); + // Adapt to the render widget host view whose device scale factor is not one. + bounding_box_size_ = gfx::ScaleToCeiledSize( + params.bounding_box_size, + web_contents()->GetRenderWidgetHostView()->GetDeviceScaleFactor()); } void ClipboardImageModelRequest::Stop(RequestStopReason stop_reason) { @@ -178,13 +187,13 @@ on_request_finished_callback_.Run(); if (g_test_params && g_test_params->callback) - g_test_params->callback.Run(ShouldEnableAutoResize()); + g_test_params->callback.Run(ShouldEnableAutoResizeMode()); } ClipboardImageModelRequest::Params ClipboardImageModelRequest::StopAndGetParams() { DCHECK(IsRunningRequest()); - Params params(request_id_, html_markup_, + Params params(request_id_, html_markup_, bounding_box_size_, std::move(deliver_image_model_callback_)); Stop(RequestStopReason::kRequestCanceled); return params; @@ -227,21 +236,33 @@ base::BindOnce(&ClipboardImageModelRequest::OnVisualStateChangeFinished, weak_ptr_factory_.GetWeakPtr())); + // After navigating to a new page, the surface id is invalidated. As a result, + // copy from surface is disabled as well. Setting the window's bounds should + // generate a new local surface id. Hence, window bounds setting should be + // after the web navigation. + // Changing auto resize mode does not generate a new local surface id while + // setting the window bounds will. As a result, enabling/disabling the auto + // resize mode has to precede the window bounds setting. Otherwise the change + // in the window bounds may trigger the unnecessary update in the view layout + // for the obsolete auto resize state. This layout update will consume the + // newly generated local surface id. Then it will cause a crash when the + // layout update brought by the change in the auto resize state arrives. + if (ShouldEnableAutoResizeMode()) { + web_contents()->GetRenderWidgetHostView()->EnableAutoResize( + kAutoResizeModeInitialSize, kMaxWebContentsSize); + web_contents()->GetNativeView()->SetBounds( + gfx::Rect(kAutoResizeModeInitialSize)); + } else { + web_contents()->GetRenderWidgetHostView()->DisableAutoResize( + bounding_box_size_); + web_contents()->GetNativeView()->SetBounds(gfx::Rect(bounding_box_size_)); + } + // TODO(https://crbug.com/1149556): Clipboard Contents could be overwritten // prior to the `WebContents::Paste()` completing. web_contents()->Paste(); } -void ClipboardImageModelRequest::RenderViewHostChanged( - content::RenderViewHost* old_host, - content::RenderViewHost* new_host) { - if (!web_contents()->GetRenderWidgetHostView()) - return; - - web_contents()->GetRenderWidgetHostView()->EnableAutoResize( - gfx::Size(1, 1), kMaxWebContentsSize); -} - // static void ClipboardImageModelRequest::SetTestParams(TestParams* test_params) { // Supports only setting `g_test_params` or resetting it. @@ -265,6 +286,8 @@ // `ResizeDueToAutoResize()` can be called multiple times in the same task // sequence. Wait for the final update before copying the surface. copy_surface_weak_ptr_factory_.InvalidateWeakPtrs(); + DCHECK( + web_contents()->GetRenderWidgetHostView()->IsSurfaceAvailableForCopy()); base::SequencedTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, base::BindOnce(&ClipboardImageModelRequest::CopySurface, @@ -307,11 +330,15 @@ Stop(RequestStopReason::kTimeout); } -bool ClipboardImageModelRequest::ShouldEnableAutoResize() const { +bool ClipboardImageModelRequest::ShouldEnableAutoResizeMode() const { if (g_test_params) return g_test_params->enforce_auto_resize; - // TODO(1165302): Disable auto resize mode if the selection region bounding - // box is available. - return true; + // Use auto resize mode if `bounding_box_size_` is not meaningful. + if (bounding_box_size_.IsEmpty()) + return true; + + // Use auto resize mode if the copied web content is too big to render. + return !gfx::Rect(kMaxWebContentsSize) + .Contains(gfx::Rect(bounding_box_size_)); }
diff --git a/chrome/browser/ui/ash/clipboard_image_model_request.h b/chrome/browser/ui/ash/clipboard_image_model_request.h index 7070a96..ad07b47 100644 --- a/chrome/browser/ui/ash/clipboard_image_model_request.h +++ b/chrome/browser/ui/ash/clipboard_image_model_request.h
@@ -44,6 +44,7 @@ Params() = delete; Params(const base::UnguessableToken& id, const std::string& html_markup, + const gfx::Size& bounding_box_size, ImageModelCallback request_finished_callback); Params(Params&&); Params& operator=(Params&&); @@ -53,6 +54,12 @@ base::UnguessableToken id; // Markup being rendered. std::string html_markup; + + // The size of the rectangle which encloses the selection region on the + // original page. It is used to calculate the size of the HTML preview image + // shown on the clipboard history menu. + gfx::Size bounding_box_size; + // The callback to return the results of the request. Not called if the // request is stopped via Stop(), or if timeout occurs. ImageModelCallback callback; @@ -139,8 +146,6 @@ // content::WebContentsObserver: void DidStopLoading() override; - void RenderViewHostChanged(content::RenderViewHost* old_host, - content::RenderViewHost* new_host) override; // Configures test parameter. static void SetTestParams(TestParams* test_params); @@ -161,8 +166,10 @@ // Called when the running request takes too long to complete. void OnTimeout(); - // Returns whether the auto resize mode should be used for rendering. - bool ShouldEnableAutoResize() const; + // Returns whether the auto-resize mode should be enabled. If auto-resize mode + // is enabled, Blink decides the preview image's size which may be different + // from that of the original selection region. + bool ShouldEnableAutoResizeMode() const; // A Widget that is not shown, but forces |web_view_| to render. std::unique_ptr<views::Widget> const widget_; @@ -177,6 +184,9 @@ // The HTML being rendered. std::string html_markup_; + // The size of the rectangle enclosing the copied HTML on the original page. + gfx::Size bounding_box_size_; + // Whether `DidStopLoading()` was called. Used to prevent the request from // responding to load events that happen after the initial load. bool did_stop_loading_ = false;
diff --git a/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_arc_tracker.cc b/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_arc_tracker.cc index 177d870..482a2a6 100644 --- a/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_arc_tracker.cc +++ b/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_arc_tracker.cc
@@ -80,8 +80,7 @@ // Some controllers might have no windows attached, for example background // task when foreground tasks is in full screen. for (const auto& it : app_shelf_group_to_controller_map_) - app_service_controller_->owner()->CloseLauncherItem( - it.second->shelf_id()); + app_service_controller_->owner()->CloseItem(it.second->shelf_id()); app_shelf_group_to_controller_map_.clear(); } } @@ -231,7 +230,7 @@ if (it_controller != app_shelf_group_to_controller_map_.end()) { it_controller->second->RemoveTaskId(task_id); if (!it_controller->second->HasAnyTasks()) { - app_service_controller_->owner()->CloseLauncherItem( + app_service_controller_->owner()->CloseItem( it_controller->second->shelf_id()); app_shelf_group_to_controller_map_.erase(app_shelf_id); } @@ -452,8 +451,8 @@ AppServiceAppWindowShelfItemController* item_controller = controller.get(); if (!app_service_controller_->owner()->GetItem(shelf_id)) { - app_service_controller_->owner()->CreateAppLauncherItem( - std::move(controller), ash::STATUS_RUNNING); + app_service_controller_->owner()->CreateAppItem(std::move(controller), + ash::STATUS_RUNNING); } else { app_service_controller_->owner()->shelf_model()->SetShelfItemDelegate( shelf_id, std::move(controller));
diff --git a/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_browsertest.cc b/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_browsertest.cc index 7763cac..1acb5078 100644 --- a/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_browsertest.cc +++ b/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_browsertest.cc
@@ -160,7 +160,7 @@ ash::ShelfModel* shelf_model() { return controller_->shelf_model(); } // Returns the last item in the shelf. - const ash::ShelfItem& GetLastLauncherItem() { + const ash::ShelfItem& GetLastShelfItem() { return shelf_model()->items()[shelf_model()->item_count() - 1]; } @@ -194,7 +194,7 @@ apps::InstanceState::kActive | apps::InstanceState::kVisible, GetAppInstanceState(app->id(), *windows.begin())); - const ash::ShelfItem& item = GetLastLauncherItem(); + const ash::ShelfItem& item = GetLastShelfItem(); // Since it is already active, clicking it should minimize. SelectItem(item.id); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning, @@ -509,7 +509,7 @@ apps::InstanceState::kActive | apps::InstanceState::kVisible, GetAppInstanceState(app_id, window)); - const ash::ShelfItem& item = GetLastLauncherItem(); + const ash::ShelfItem& item = GetLastShelfItem(); // Since it is already active, clicking it should minimize. SelectItem(item.id); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning, @@ -541,7 +541,7 @@ apps::InstanceState::kActive | apps::InstanceState::kVisible, GetAppInstanceState(app_id, window1)); - const ash::ShelfItem item = GetLastLauncherItem(); + const ash::ShelfItem item = GetLastShelfItem(); // Since it is already active, clicking it should minimize. SelectItem(item.id); EXPECT_EQ(apps::InstanceState::kStarted | apps::InstanceState::kRunning,
diff --git a/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_shelf_controller.cc b/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_shelf_controller.cc index c5d68ff2..6c4aad82 100644 --- a/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_shelf_controller.cc +++ b/chrome/browser/ui/ash/launcher/app_service/app_service_app_window_shelf_controller.cc
@@ -572,7 +572,7 @@ app_window->SetController(item_controller); if (!owner()->GetItem(shelf_id)) { - owner()->CreateAppLauncherItem(std::move(controller), ash::STATUS_RUNNING); + owner()->CreateAppItem(std::move(controller), ash::STATUS_RUNNING); } else { owner()->shelf_model()->SetShelfItemDelegate(shelf_id, std::move(controller)); @@ -593,7 +593,7 @@ app_window->shelf_id()); if (item_controller && item_controller->window_count() == 0) - owner()->CloseLauncherItem(item_controller->shelf_id()); + owner()->CloseItem(item_controller->shelf_id()); } void AppServiceAppWindowShelfController::OnItemDelegateDiscarded(
diff --git a/chrome/browser/ui/ash/launcher/app_window_shelf_item_controller.cc b/chrome/browser/ui/ash/launcher/app_window_shelf_item_controller.cc index 1380f4c..c170a7b 100644 --- a/chrome/browser/ui/ash/launcher/app_window_shelf_item_controller.cc +++ b/chrome/browser/ui/ash/launcher/app_window_shelf_item_controller.cc
@@ -284,12 +284,10 @@ // TODO(khmel): Remove using image_set_by_controller if (app_icon && !app_icon->isNull()) { set_image_set_by_controller(true); - ChromeShelfController::instance()->SetLauncherItemImage(shelf_id(), - *app_icon); + ChromeShelfController::instance()->SetItemImage(shelf_id(), *app_icon); } else if (image_set_by_controller()) { set_image_set_by_controller(false); - ChromeShelfController::instance()->UpdateLauncherItemImage( - shelf_id().app_id); + ChromeShelfController::instance()->UpdateItemImage(shelf_id().app_id); } }
diff --git a/chrome/browser/ui/ash/launcher/chrome_shelf_controller.cc b/chrome/browser/ui/ash/launcher/chrome_shelf_controller.cc index 3499744..992aa06 100644 --- a/chrome/browser/ui/ash/launcher/chrome_shelf_controller.cc +++ b/chrome/browser/ui/ash/launcher/chrome_shelf_controller.cc
@@ -295,7 +295,7 @@ void ChromeShelfController::Init() { if (!crosapi::browser_util::IsLacrosPrimaryBrowser()) { - CreateBrowserShortcutLauncherItem(/*pinned=*/true); + CreateBrowserShortcutItem(/*pinned=*/true); UpdateBrowserItemState(); } @@ -313,12 +313,12 @@ browser_status_monitor_->Initialize(); } -ash::ShelfID ChromeShelfController::CreateAppLauncherItem( +ash::ShelfID ChromeShelfController::CreateAppItem( std::unique_ptr<ash::ShelfItemDelegate> item_delegate, ash::ShelfItemStatus status, const std::u16string& title) { - return InsertAppLauncherItem(std::move(item_delegate), status, - model_->item_count(), ash::TYPE_APP, title); + return InsertAppItem(std::move(item_delegate), status, model_->item_count(), + ash::TYPE_APP, title); } const ash::ShelfItem* ChromeShelfController::GetItem( @@ -356,7 +356,7 @@ } } -void ChromeShelfController::CloseLauncherItem(const ash::ShelfID& id) { +void ChromeShelfController::CloseItem(const ash::ShelfID& id) { CHECK(!id.IsNull()); if (IsPinned(id)) { // Create a new shortcut delegate. @@ -396,9 +396,8 @@ if (item) { SetItemStatusOrRemove(id, status); } else if (status != ash::STATUS_CLOSED && !app_id.empty()) { - InsertAppLauncherItem( - AppShortcutShelfItemController::Create(ash::ShelfID(app_id)), status, - model_->item_count(), ash::TYPE_APP); + InsertAppItem(AppShortcutShelfItemController::Create(ash::ShelfID(app_id)), + status, model_->item_count(), ash::TYPE_APP); } } @@ -459,8 +458,8 @@ } } -void ChromeShelfController::SetLauncherItemImage(const ash::ShelfID& shelf_id, - const gfx::ImageSkia& image) { +void ChromeShelfController::SetItemImage(const ash::ShelfID& shelf_id, + const gfx::ImageSkia& image) { DCHECK(!image.isNull()); if (const auto* item = GetItem(shelf_id)) { ash::ShelfItem new_item = *item; @@ -472,7 +471,7 @@ } } -void ChromeShelfController::UpdateLauncherItemImage(const std::string& app_id) { +void ChromeShelfController::UpdateItemImage(const std::string& app_id) { if (auto* icon_loader = GetAppIconLoaderForApp(app_id)) icon_loader->UpdateImage(app_id); } @@ -719,7 +718,7 @@ model_->ItemIndexByID(chrome_id) < 0) { // If browser short cut is not present, create it. // This happens iff browser shortcut is not pinned. - CreateBrowserShortcutLauncherItem(/*pinned=*/false); + CreateBrowserShortcutItem(/*pinned=*/false); } int browser_index = model_->ItemIndexByID(chrome_id); @@ -1022,19 +1021,18 @@ /////////////////////////////////////////////////////////////////////////////// // ChromeShelfController private: -ash::ShelfID ChromeShelfController::CreateAppShortcutLauncherItem( +ash::ShelfID ChromeShelfController::CreateAppShortcutItem( const ash::ShelfID& shelf_id, int index) { - return CreateAppShortcutLauncherItem(shelf_id, index, std::u16string()); + return CreateAppShortcutItem(shelf_id, index, std::u16string()); } -ash::ShelfID ChromeShelfController::CreateAppShortcutLauncherItem( +ash::ShelfID ChromeShelfController::CreateAppShortcutItem( const ash::ShelfID& shelf_id, int index, const std::u16string& title) { - return InsertAppLauncherItem(AppShortcutShelfItemController::Create(shelf_id), - ash::STATUS_CLOSED, index, ash::TYPE_PINNED_APP, - title); + return InsertAppItem(AppShortcutShelfItemController::Create(shelf_id), + ash::STATUS_CLOSED, index, ash::TYPE_PINNED_APP, title); } void ChromeShelfController::RememberUnpinnedRunningApplicationOrder() { @@ -1207,7 +1205,7 @@ // shortcut is unpinned. Do nothing then. if (pref_shelf_id.app_id != kChromeAppId) { // This is fresh pin. Create new one. - CreateAppShortcutLauncherItem(pref_shelf_id, index); + CreateAppShortcutItem(pref_shelf_id, index); } } ++index; @@ -1255,7 +1253,7 @@ return ash::STATUS_CLOSED; } -ash::ShelfID ChromeShelfController::InsertAppLauncherItem( +ash::ShelfID ChromeShelfController::InsertAppItem( std::unique_ptr<ash::ShelfItemDelegate> item_delegate, ash::ShelfItemStatus status, int index, @@ -1282,7 +1280,7 @@ return item.id; } -void ChromeShelfController::CreateBrowserShortcutLauncherItem(bool pinned) { +void ChromeShelfController::CreateBrowserShortcutItem(bool pinned) { // Do not sync the pin position of the browser shortcut item yet; its initial // position before prefs have loaded is unimportant and the sync service may // not yet be initialized.
diff --git a/chrome/browser/ui/ash/launcher/chrome_shelf_controller.h b/chrome/browser/ui/ash/launcher/chrome_shelf_controller.h index fae459c3..27139901 100644 --- a/chrome/browser/ui/ash/launcher/chrome_shelf_controller.h +++ b/chrome/browser/ui/ash/launcher/chrome_shelf_controller.h
@@ -82,7 +82,7 @@ void Init(); // Creates a new app item on the shelf for |item_delegate|. - ash::ShelfID CreateAppLauncherItem( + ash::ShelfID CreateAppItem( std::unique_ptr<ash::ShelfItemDelegate> item_delegate, ash::ShelfItemStatus status, const std::u16string& title = std::u16string()); @@ -101,7 +101,7 @@ void SetItemTitle(const ash::ShelfID& id, const std::u16string& title); // Closes or unpins the shelf item. - void CloseLauncherItem(const ash::ShelfID& id); + void CloseItem(const ash::ShelfID& id); // Returns true if the item identified by |id| is pinned. bool IsPinned(const ash::ShelfID& id); @@ -139,11 +139,10 @@ int64_t display_id); // Set the image for a specific shelf item (e.g. when set by the app). - void SetLauncherItemImage(const ash::ShelfID& shelf_id, - const gfx::ImageSkia& image); + void SetItemImage(const ash::ShelfID& shelf_id, const gfx::ImageSkia& image); // Updates the image for a specific shelf item from the app's icon loader. - void UpdateLauncherItemImage(const std::string& app_id); + void UpdateItemImage(const std::string& app_id); // Notifies the controller that |contents| changed so it can update the state // of v1 (non-packaged) apps in the shelf. If |remove| is true then it removes @@ -294,11 +293,10 @@ using WebContentsToAppIDMap = std::map<content::WebContents*, std::string>; // Creates a new app shortcut item and controller on the shelf at |index|. - ash::ShelfID CreateAppShortcutLauncherItem(const ash::ShelfID& shelf_id, - int index); - ash::ShelfID CreateAppShortcutLauncherItem(const ash::ShelfID& shelf_id, - int index, - const std::u16string& title); + ash::ShelfID CreateAppShortcutItem(const ash::ShelfID& shelf_id, int index); + ash::ShelfID CreateAppShortcutItem(const ash::ShelfID& shelf_id, + int index, + const std::u16string& title); // Remembers / restores list of running applications. // Note that this order will neither be stored in the preference nor will it @@ -333,10 +331,10 @@ // STATUS_RUNNING (if there is such an app) or STATUS_CLOSED. ash::ShelfItemStatus GetAppState(const std::string& app_id); - // Creates an app launcher to insert at |index|. Note that |index| may be + // Creates an app item to insert at |index|. Note that |index| may be // adjusted by the model to meet ordering constraints. // The |shelf_item_type| will be set into the ShelfModel. - ash::ShelfID InsertAppLauncherItem( + ash::ShelfID InsertAppItem( std::unique_ptr<ash::ShelfItemDelegate> item_delegate, ash::ShelfItemStatus status, int index, @@ -344,7 +342,7 @@ const std::u16string& title = std::u16string()); // Create the Chrome browser shortcut ShelfItem. - void CreateBrowserShortcutLauncherItem(bool pinned); + void CreateBrowserShortcutItem(bool pinned); // Finds the index of where to insert the next item. int FindInsertionPoint();
diff --git a/chrome/browser/ui/ash/launcher/chrome_shelf_controller_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_shelf_controller_browsertest.cc index cfe5031..57cdd01 100644 --- a/chrome/browser/ui/ash/launcher/chrome_shelf_controller_browsertest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_shelf_controller_browsertest.cc
@@ -234,13 +234,13 @@ ash::ShelfModel* shelf_model() { return controller_->shelf_model(); } - ash::ShelfID CreateAppShortcutLauncherItem(const ash::ShelfID& shelf_id) { - return controller_->CreateAppShortcutLauncherItem( - shelf_id, shelf_model()->item_count()); + ash::ShelfID CreateAppShortcutItem(const ash::ShelfID& shelf_id) { + return controller_->CreateAppShortcutItem(shelf_id, + shelf_model()->item_count()); } // Returns the last item in the shelf. - const ash::ShelfItem& GetLastLauncherItem() { + const ash::ShelfItem& GetLastShelfItem() { return shelf_model()->items()[shelf_model()->item_count() - 1]; } @@ -271,7 +271,7 @@ extensions::ExtensionBrowserTest::SetUpOnMainThread(); } - size_t NumberOfDetectedLauncherBrowsers(bool show_all_tabs) { + size_t BrowserShortcutMenuItemCount(bool show_all_tabs) { ash::ShelfItemDelegate* item_controller = controller_->GetBrowserShortcutShelfItemControllerForTesting(); return item_controller @@ -308,8 +308,8 @@ // Then create a shortcut. int item_count = shelf_model()->item_count(); - ash::ShelfID shortcut_id = controller_->CreateAppShortcutLauncherItem( - ash::ShelfID(app_id), item_count); + ash::ShelfID shortcut_id = + controller_->CreateAppShortcutItem(ash::ShelfID(app_id), item_count); controller_->SyncPinPosition(shortcut_id); EXPECT_EQ(++item_count, shelf_model()->item_count()); const ash::ShelfItem& item = *shelf_model()->ItemByID(shortcut_id); @@ -468,7 +468,7 @@ AppWindow* window = CreateAppWindow(browser()->profile(), extension); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); - const ash::ShelfItem& item = GetLastLauncherItem(); + const ash::ShelfItem& item = GetLastShelfItem(); EXPECT_EQ(ash::TYPE_APP, item.type); EXPECT_EQ(ash::STATUS_RUNNING, item.status); CloseAppWindow(window); @@ -485,8 +485,7 @@ const std::string app_id = extension->id(); // Then create a shortcut. - ash::ShelfID shortcut_id = - CreateAppShortcutLauncherItem(ash::ShelfID(app_id)); + ash::ShelfID shortcut_id = CreateAppShortcutItem(ash::ShelfID(app_id)); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); ash::ShelfItem item = *shelf_model()->ItemByID(shortcut_id); @@ -516,14 +515,14 @@ AppWindow* window = CreateAppWindow(browser()->profile(), extension); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); - const ash::ShelfItem& item1 = GetLastLauncherItem(); + const ash::ShelfItem& item1 = GetLastShelfItem(); ash::ShelfID id = item1.id; EXPECT_EQ(ash::TYPE_APP, item1.type); EXPECT_EQ(ash::STATUS_RUNNING, item1.status); // Create a shortcut. The app item should be after it. - ash::ShelfID foo_id = CreateAppShortcutLauncherItem( - ash::ShelfID(extension_misc::kYoutubeAppId)); + ash::ShelfID foo_id = + CreateAppShortcutItem(ash::ShelfID(extension_misc::kYoutubeAppId)); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); EXPECT_LT(shelf_model()->ItemIndexByID(foo_id), @@ -537,8 +536,8 @@ EXPECT_EQ(ash::STATUS_RUNNING, item2.status); // New shortcuts should come after the item. - ash::ShelfID bar_id = CreateAppShortcutLauncherItem( - ash::ShelfID(extension_misc::kGoogleDocAppId)); + ash::ShelfID bar_id = + CreateAppShortcutItem(ash::ShelfID(extension_misc::kGoogleDocAppId)); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); EXPECT_LT(shelf_model()->ItemIndexByID(id), @@ -557,8 +556,7 @@ const std::string app_id = extension->id(); // Then create a shortcut. - ash::ShelfID shortcut_id = - CreateAppShortcutLauncherItem(ash::ShelfID(app_id)); + ash::ShelfID shortcut_id = CreateAppShortcutItem(ash::ShelfID(app_id)); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); ash::ShelfItem item = *shelf_model()->ItemByID(shortcut_id); @@ -567,8 +565,8 @@ // Create a second shortcut. This will be needed to force the first one to // move once it gets unpinned. - ash::ShelfID foo_id = CreateAppShortcutLauncherItem( - ash::ShelfID(extension_misc::kYoutubeAppId)); + ash::ShelfID foo_id = + CreateAppShortcutItem(ash::ShelfID(extension_misc::kYoutubeAppId)); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); EXPECT_LT(shelf_model()->ItemIndexByID(shortcut_id), @@ -646,7 +644,7 @@ const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched"); AppWindow* window1 = CreateAppWindow(browser()->profile(), extension); ASSERT_EQ(item_count + 1, shelf_model()->item_count()); - const ash::ShelfItem& item1 = GetLastLauncherItem(); + const ash::ShelfItem& item1 = GetLastShelfItem(); ash::ShelfID item_id = item1.id; EXPECT_EQ(ash::TYPE_APP, item1.type); EXPECT_EQ(ash::STATUS_RUNNING, item1.status); @@ -679,7 +677,7 @@ AppWindow* window1 = CreateAppWindow(browser()->profile(), extension1); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); - const ash::ShelfItem& item1 = GetLastLauncherItem(); + const ash::ShelfItem& item1 = GetLastShelfItem(); ash::ShelfID item_id1 = item1.id; EXPECT_EQ(ash::TYPE_APP, item1.type); EXPECT_EQ(ash::STATUS_RUNNING, item1.status); @@ -690,7 +688,7 @@ AppWindow* window2 = CreateAppWindow(browser()->profile(), extension2); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); - const ash::ShelfItem& item2 = GetLastLauncherItem(); + const ash::ShelfItem& item2 = GetLastShelfItem(); ash::ShelfID item_id2 = item2.id; EXPECT_EQ(ash::TYPE_APP, item2.type); EXPECT_EQ(ash::STATUS_RUNNING, item2.status); @@ -721,7 +719,7 @@ AppWindow* window1 = CreateAppWindow(browser()->profile(), extension1); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); - const ash::ShelfItem& item1 = GetLastLauncherItem(); + const ash::ShelfItem& item1 = GetLastShelfItem(); ash::ShelfID item_id1 = item1.id; EXPECT_EQ(ash::TYPE_APP, item1.type); EXPECT_EQ(ash::STATUS_RUNNING, item1.status); @@ -732,7 +730,7 @@ AppWindow* window2 = CreateAppWindow(browser()->profile(), extension2); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); - const ash::ShelfItem& item2 = GetLastLauncherItem(); + const ash::ShelfItem& item2 = GetLastShelfItem(); ash::ShelfID item_id2 = item2.id; EXPECT_EQ(ash::TYPE_APP, item2.type); EXPECT_EQ(ash::STATUS_RUNNING, item2.status); @@ -806,7 +804,7 @@ ui::BaseWindow* const app_window = CreateAppWindow(browser()->profile(), app)->GetBaseWindow(); - const ash::ShelfItem item = GetLastLauncherItem(); + const ash::ShelfItem item = GetLastShelfItem(); EXPECT_EQ(app->id(), item.id.app_id); EXPECT_EQ(ash::TYPE_APP, item.type); EXPECT_EQ(ash::STATUS_RUNNING, item.status); @@ -832,7 +830,7 @@ EXPECT_TRUE(window1->GetBaseWindow()->IsActive()); // Confirm that a controller item was created and is the correct state. - const ash::ShelfItem& item = GetLastLauncherItem(); + const ash::ShelfItem& item = GetLastShelfItem(); EXPECT_EQ(ash::TYPE_APP, item.type); EXPECT_EQ(ash::STATUS_RUNNING, item.status); // Since it is already active, clicking it should minimize. @@ -865,9 +863,9 @@ EXPECT_TRUE(window1a->GetBaseWindow()->IsActive()); // Ensure the same shelf item and delegate are used for |window1a|. - EXPECT_EQ(item.id, GetLastLauncherItem().id); + EXPECT_EQ(item.id, GetLastShelfItem().id); EXPECT_EQ(GetShelfItemDelegate(item.id), - GetShelfItemDelegate(GetLastLauncherItem().id)); + GetShelfItemDelegate(GetLastShelfItem().id)); // The first click does nothing. SelectItem(item.id); @@ -891,7 +889,7 @@ CreateAppWindow(browser()->profile(), extension1); ++item_count; ASSERT_EQ(item_count, shelf_model()->item_count()); - const ash::ShelfItem& item = GetLastLauncherItem(); + const ash::ShelfItem& item = GetLastShelfItem(); ash::ShelfID item_id1 = item.id; EXPECT_EQ(ash::TYPE_APP, item.type); EXPECT_EQ(ash::STATUS_RUNNING, item.status); @@ -1408,7 +1406,7 @@ ->FlushMojoCallsForTesting(); } - CreateAppShortcutLauncherItem(ash::ShelfID(extension->id())); + CreateAppShortcutItem(ash::ShelfID(extension->id())); const int item_count = shelf_model()->item_count(); ash::ShelfItem item = shelf_model()->items()[item_count - 1]; @@ -1558,7 +1556,7 @@ EXPECT_EQ(tab_strip->GetActiveWebContents(), second_tab); } -// Check that the launcher activation state for a V1 application stays closed +// Check that the shelf item activation state for a V1 application stays closed // even after an asynchronous browser event comes in after the tab got // destroyed. IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTest, AsyncActivationStateCheck) { @@ -1637,7 +1635,7 @@ IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTestNoDefaultBrowser, WindowedAppDoesNotAddToBrowser) { // Get the number of items in the browser menu. - size_t items = NumberOfDetectedLauncherBrowsers(false); + size_t items = BrowserShortcutMenuItemCount(false); size_t running_browser = chrome::GetTotalBrowserCount(); EXPECT_EQ(0u, items); EXPECT_EQ(0u, running_browser); @@ -1650,7 +1648,7 @@ ASSERT_TRUE(extension); // No new browser should get detected, even though one more is running. - EXPECT_EQ(0u, NumberOfDetectedLauncherBrowsers(false)); + EXPECT_EQ(0u, BrowserShortcutMenuItemCount(false)); EXPECT_EQ(++running_browser, chrome::GetTotalBrowserCount()); auto* proxy = apps::AppServiceProxyFactory::GetForProfile(profile()); @@ -1665,7 +1663,7 @@ proxy->FlushMojoCallsForTesting(); // A new browser should get detected and one more should be running. - EXPECT_EQ(NumberOfDetectedLauncherBrowsers(false), 1u); + EXPECT_EQ(BrowserShortcutMenuItemCount(false), 1u); EXPECT_EQ(++running_browser, chrome::GetTotalBrowserCount()); } @@ -1678,8 +1676,8 @@ apps::GetEventFlags(apps::mojom::LaunchContainer::kLaunchContainerTab, WindowOpenDisposition::NEW_FOREGROUND_TAB, true /* prefer_containner */)); - size_t browsers = NumberOfDetectedLauncherBrowsers(false); - size_t tabs = NumberOfDetectedLauncherBrowsers(true); + size_t browsers = BrowserShortcutMenuItemCount(false); + size_t tabs = BrowserShortcutMenuItemCount(true); // Create a second browser. // @@ -1695,8 +1693,8 @@ WindowOpenDisposition::NEW_WINDOW, apps::mojom::AppLaunchSource::kSourceTest)); - EXPECT_EQ(++browsers, NumberOfDetectedLauncherBrowsers(false)); - EXPECT_EQ(++tabs, NumberOfDetectedLauncherBrowsers(true)); + EXPECT_EQ(++browsers, BrowserShortcutMenuItemCount(false)); + EXPECT_EQ(++tabs, BrowserShortcutMenuItemCount(true)); // Create only a tab. LoadAndLaunchExtension( @@ -1705,11 +1703,11 @@ WindowOpenDisposition::NEW_FOREGROUND_TAB, true /* prefer_containner */)); - EXPECT_EQ(browsers, NumberOfDetectedLauncherBrowsers(false)); - EXPECT_EQ(++tabs, NumberOfDetectedLauncherBrowsers(true)); + EXPECT_EQ(browsers, BrowserShortcutMenuItemCount(false)); + EXPECT_EQ(++tabs, BrowserShortcutMenuItemCount(true)); } -// Check that the keyboard activation of a launcher item tabs properly through +// Check that the keyboard activation of a shelf item tabs properly through // the items at hand. IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTest, AltNumberTabsTabbing) { TabStripModel* tab_strip = browser()->tab_strip_model(); @@ -1756,7 +1754,7 @@ EXPECT_EQ(content2, browser()->tab_strip_model()->GetActiveWebContents()); } -// Check that the keyboard activation of a launcher item tabs properly through +// Check that the keyboard activation of a shelf item tabs properly through // the items at hand. IN_PROC_BROWSER_TEST_F(ShelfPlatformAppBrowserTest, AltNumberAppsTabbing) { // First run app. @@ -1764,7 +1762,7 @@ ui::BaseWindow* window1 = CreateAppWindow(browser()->profile(), extension1)->GetBaseWindow(); - const ash::ShelfItem item = GetLastLauncherItem(); + const ash::ShelfItem item = GetLastShelfItem(); EXPECT_EQ(ash::TYPE_APP, item.type); EXPECT_EQ(ash::STATUS_RUNNING, item.status); @@ -1792,7 +1790,7 @@ EXPECT_TRUE(window1a->IsActive()); } -// Check that the keyboard activation of a launcher item tabs even if the app is +// Check that the keyboard activation of a shelf item tabs even if the app is // not currently activated. IN_PROC_BROWSER_TEST_F(ShelfPlatformAppBrowserTest, AltNumberAppsTabbingFromOtherApp) { @@ -1803,7 +1801,7 @@ CreateAppWindow(browser()->profile(), app1_extension1)->GetBaseWindow(); ui::BaseWindow* app1_window2 = CreateAppWindow(browser()->profile(), app1_extension1)->GetBaseWindow(); - const ash::ShelfItem item1 = GetLastLauncherItem(); + const ash::ShelfItem item1 = GetLastShelfItem(); EXPECT_EQ(ash::TYPE_APP, item1.type); EXPECT_EQ(ash::STATUS_RUNNING, item1.status); @@ -1814,7 +1812,7 @@ CreateAppWindow(browser()->profile(), app2_extension1)->GetBaseWindow(); ui::BaseWindow* app2_window2 = CreateAppWindow(browser()->profile(), app2_extension1)->GetBaseWindow(); - const ash::ShelfItem item2 = GetLastLauncherItem(); + const ash::ShelfItem item2 = GetLastShelfItem(); EXPECT_EQ(ash::TYPE_APP, item2.type); EXPECT_EQ(ash::STATUS_RUNNING, item2.status); @@ -1882,7 +1880,7 @@ // The window should not be active by default. EXPECT_FALSE(window->GetBaseWindow()->IsActive()); // Confirm that a shelf item was created and is the correct state. - const ash::ShelfItem& item = GetLastLauncherItem(); + const ash::ShelfItem& item = GetLastShelfItem(); EXPECT_TRUE(GetShelfItemDelegate(item.id)); EXPECT_EQ(ash::TYPE_APP, item.type); EXPECT_EQ(ash::STATUS_RUNNING, item.status); @@ -2294,7 +2292,7 @@ // Get the number of items in the shelf and browser menu. int item_count = shelf_model()->item_count(); ASSERT_GE(item_count, 0); - size_t browser_count = NumberOfDetectedLauncherBrowsers(false); + size_t browser_count = BrowserShortcutMenuItemCount(false); // Open a settings window. Number of browser items should remain unchanged, // number of shelf items should increase. @@ -2306,7 +2304,7 @@ Browser* settings_browser = settings_manager->FindBrowserForProfile(browser()->profile()); ASSERT_TRUE(settings_browser); - EXPECT_EQ(browser_count, NumberOfDetectedLauncherBrowsers(false)); + EXPECT_EQ(browser_count, BrowserShortcutMenuItemCount(false)); EXPECT_EQ(item_count + 1, shelf_model()->item_count()); aura::Window* settings_window = settings_browser->window()->GetNativeWindow(); @@ -2360,7 +2358,7 @@ EXPECT_EQ(ash::STATUS_RUNNING, shelf_model()->ItemByID(web_app_shelf_id)->status); - // Now use the launcher controller to activate the apps. + // Now use the shelf controller to activate the apps. controller_->ActivateApp(hosted_app->id(), ash::LAUNCH_FROM_APP_LIST, 0, display::kInvalidDisplayId); controller_->ActivateApp(web_app_id, ash::LAUNCH_FROM_APP_LIST, 0, @@ -2413,7 +2411,7 @@ EXPECT_EQ(ash::STATUS_CLOSED, shelf_model()->ItemByID(web_app_shelf_id)->status); - // Now use the launcher controller to activate the apps. + // Now use the shelf controller to activate the apps. ActivateAppAndFlushMojoCallsForAppService(hosted_app->id(), ash::LAUNCH_FROM_APP_LIST, 0, display::kInvalidDisplayId);
diff --git a/chrome/browser/ui/ash/launcher/chrome_shelf_controller_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_shelf_controller_unittest.cc index fce31a0..d4c91ae 100644 --- a/chrome/browser/ui/ash/launcher/chrome_shelf_controller_unittest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_shelf_controller_unittest.cc
@@ -262,7 +262,7 @@ TabToStringMap tab_id_map_; }; -// Test implementation of a V2 app launcher item controller. +// Test implementation of a V2 app shelf item controller. class TestV2AppShelfItemController : public ash::ShelfItemDelegate { public: explicit TestV2AppShelfItemController(const std::string& app_id) @@ -478,11 +478,11 @@ // Creates a running platform V2 app (not pinned) of type |app_id|. virtual void CreateRunningV2App(const std::string& app_id) { DCHECK(!test_controller_); - // Change the created launcher controller into a V2 app controller. + // Change the created shelf item controller into a V2 app controller. std::unique_ptr<TestV2AppShelfItemController> controller = std::make_unique<TestV2AppShelfItemController>(app_id); test_controller_ = controller.get(); - ash::ShelfID id = shelf_controller_->InsertAppLauncherItem( + ash::ShelfID id = shelf_controller_->InsertAppItem( std::move(controller), ash::STATUS_RUNNING, model_->item_count(), ash::TYPE_APP); DCHECK(shelf_controller_->IsPlatformApp(id)); @@ -548,7 +548,7 @@ return CreateBrowser(profile, Browser::TYPE_NORMAL, false, browser_window); } - // Create an uninitialized chrome launcher controller instance. + // Create an uninitialized controller instance. ChromeShelfController* CreateShelfController() { shelf_controller_ = std::make_unique<ChromeShelfController>(profile(), model_.get()); @@ -2158,7 +2158,7 @@ EXPECT_FALSE(shelf_controller_->GetShelfSpinnerController()->HasApp(app_id)); // Closing the app should leave a pinned but closed shelf item shortcut. - shelf_controller_->CloseLauncherItem(shelf_id); + shelf_controller_->CloseItem(shelf_id); item = shelf_controller_->GetItem(shelf_id); ASSERT_NE(nullptr, item); EXPECT_EQ(ash::STATUS_CLOSED, item->status); @@ -4044,7 +4044,7 @@ SetAppIconLoaders(std::unique_ptr<AppIconLoader>(app_icon_loader1), std::unique_ptr<AppIconLoader>(app_icon_loader2)); - shelf_controller_->CreateAppLauncherItem( + shelf_controller_->CreateAppItem( std::make_unique<AppServiceAppWindowShelfItemController>( shelf_id3, shelf_controller_->app_service_app_window_controller()), ash::STATUS_RUNNING); @@ -4053,7 +4053,7 @@ EXPECT_EQ(0, app_icon_loader2->fetch_count()); EXPECT_EQ(0, app_icon_loader2->clear_count()); - shelf_controller_->CreateAppLauncherItem( + shelf_controller_->CreateAppItem( std::make_unique<AppServiceAppWindowShelfItemController>( shelf_id2, shelf_controller_->app_service_app_window_controller()), ash::STATUS_RUNNING); @@ -4062,7 +4062,7 @@ EXPECT_EQ(1, app_icon_loader2->fetch_count()); EXPECT_EQ(0, app_icon_loader2->clear_count()); - shelf_controller_->CreateAppLauncherItem( + shelf_controller_->CreateAppItem( std::make_unique<AppServiceAppWindowShelfItemController>( shelf_id1, shelf_controller_->app_service_app_window_controller()), ash::STATUS_RUNNING); @@ -4071,19 +4071,19 @@ EXPECT_EQ(1, app_icon_loader2->fetch_count()); EXPECT_EQ(0, app_icon_loader2->clear_count()); - shelf_controller_->CloseLauncherItem(shelf_id1); + shelf_controller_->CloseItem(shelf_id1); EXPECT_EQ(1, app_icon_loader1->fetch_count()); EXPECT_EQ(1, app_icon_loader1->clear_count()); EXPECT_EQ(1, app_icon_loader2->fetch_count()); EXPECT_EQ(0, app_icon_loader2->clear_count()); - shelf_controller_->CloseLauncherItem(shelf_id2); + shelf_controller_->CloseItem(shelf_id2); EXPECT_EQ(1, app_icon_loader1->fetch_count()); EXPECT_EQ(1, app_icon_loader1->clear_count()); EXPECT_EQ(1, app_icon_loader2->fetch_count()); EXPECT_EQ(1, app_icon_loader2->clear_count()); - shelf_controller_->CloseLauncherItem(shelf_id3); + shelf_controller_->CloseItem(shelf_id3); EXPECT_EQ(1, app_icon_loader1->fetch_count()); EXPECT_EQ(1, app_icon_loader1->clear_count()); EXPECT_EQ(1, app_icon_loader2->fetch_count());
diff --git a/chrome/browser/ui/ash/launcher/shelf_spinner_controller.cc b/chrome/browser/ui/ash/launcher/shelf_spinner_controller.cc index b6650fd..ddeea0d 100644 --- a/chrome/browser/ui/ash/launcher/shelf_spinner_controller.cc +++ b/chrome/browser/ui/ash/launcher/shelf_spinner_controller.cc
@@ -213,7 +213,7 @@ if (!RemoveSpinnerFromControllerMap(app_id)) return; - owner_->CloseLauncherItem(ash::ShelfID(app_id)); + owner_->CloseItem(ash::ShelfID(app_id)); UpdateShelfItemIcon(app_id); } @@ -308,7 +308,7 @@ } void ShelfSpinnerController::UpdateShelfItemIcon(const std::string& app_id) { - owner_->UpdateLauncherItemImage(app_id); + owner_->UpdateItemImage(app_id); } void ShelfSpinnerController::UpdateApps() { @@ -349,7 +349,7 @@ controller->SetHost(weak_ptr_factory_.GetWeakPtr()); ShelfSpinnerItemController* item_controller = controller.get(); if (!item) { - owner_->CreateAppLauncherItem(std::move(controller), ash::STATUS_RUNNING); + owner_->CreateAppItem(std::move(controller), ash::STATUS_RUNNING); } else { owner_->shelf_model()->SetShelfItemDelegate(shelf_id, std::move(controller));
diff --git a/chrome/browser/ui/ash/login_screen_client.cc b/chrome/browser/ui/ash/login_screen_client_impl.cc similarity index 77% rename from chrome/browser/ui/ash/login_screen_client.cc rename to chrome/browser/ui/ash/login_screen_client_impl.cc index f0664997..c7950def 100644 --- a/chrome/browser/ui/ash/login_screen_client.cc +++ b/chrome/browser/ui/ash/login_screen_client_impl.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/ui/ash/login_screen_client.h" +#include "chrome/browser/ui/ash/login_screen_client_impl.h" #include <utility> @@ -37,15 +37,15 @@ namespace { using ash::SupervisedAction; -LoginScreenClient* g_login_screen_client_instance = nullptr; +LoginScreenClientImpl* g_login_screen_client_instance = nullptr; } // namespace -LoginScreenClient::Delegate::Delegate() = default; -LoginScreenClient::Delegate::~Delegate() = default; +LoginScreenClientImpl::Delegate::Delegate() = default; +LoginScreenClientImpl::Delegate::~Delegate() = default; -LoginScreenClient::ParentAccessDelegate::~ParentAccessDelegate() = default; +LoginScreenClientImpl::ParentAccessDelegate::~ParentAccessDelegate() = default; -LoginScreenClient::LoginScreenClient() +LoginScreenClientImpl::LoginScreenClientImpl() : auth_recorder_(std::make_unique<chromeos::LoginAuthRecorder>()) { // Register this object as the client interface implementation. ash::LoginScreen::Get()->SetClient(this); @@ -54,52 +54,52 @@ g_login_screen_client_instance = this; } -LoginScreenClient::~LoginScreenClient() { +LoginScreenClientImpl::~LoginScreenClientImpl() { ash::LoginScreen::Get()->SetClient(nullptr); DCHECK_EQ(this, g_login_screen_client_instance); g_login_screen_client_instance = nullptr; } // static -bool LoginScreenClient::HasInstance() { +bool LoginScreenClientImpl::HasInstance() { return !!g_login_screen_client_instance; } // static -LoginScreenClient* LoginScreenClient::Get() { +LoginScreenClientImpl* LoginScreenClientImpl::Get() { DCHECK(g_login_screen_client_instance); return g_login_screen_client_instance; } -void LoginScreenClient::SetDelegate(Delegate* delegate) { +void LoginScreenClientImpl::SetDelegate(Delegate* delegate) { delegate_ = delegate; } -void LoginScreenClient::AddSystemTrayObserver( +void LoginScreenClientImpl::AddSystemTrayObserver( ash::SystemTrayObserver* observer) { system_tray_observers_.AddObserver(observer); } -void LoginScreenClient::RemoveSystemTrayObserver( +void LoginScreenClientImpl::RemoveSystemTrayObserver( ash::SystemTrayObserver* observer) { system_tray_observers_.RemoveObserver(observer); } -void LoginScreenClient::AddLoginScreenShownObserver( +void LoginScreenClientImpl::AddLoginScreenShownObserver( LoginScreenShownObserver* observer) { login_screen_shown_observers_.AddObserver(observer); } -void LoginScreenClient::RemoveLoginScreenShownObserver( +void LoginScreenClientImpl::RemoveLoginScreenShownObserver( LoginScreenShownObserver* observer) { login_screen_shown_observers_.RemoveObserver(observer); } -chromeos::LoginAuthRecorder* LoginScreenClient::auth_recorder() { +chromeos::LoginAuthRecorder* LoginScreenClientImpl::auth_recorder() { return auth_recorder_.get(); } -void LoginScreenClient::AuthenticateUserWithPasswordOrPin( +void LoginScreenClientImpl::AuthenticateUserWithPasswordOrPin( const AccountId& account_id, const std::string& password, bool authenticated_by_pin, @@ -117,7 +117,7 @@ } } -void LoginScreenClient::AuthenticateUserWithEasyUnlock( +void LoginScreenClientImpl::AuthenticateUserWithEasyUnlock( const AccountId& account_id) { if (delegate_) { delegate_->HandleAuthenticateUserWithEasyUnlock(account_id); @@ -126,7 +126,7 @@ } } -void LoginScreenClient::AuthenticateUserWithChallengeResponse( +void LoginScreenClientImpl::AuthenticateUserWithChallengeResponse( const AccountId& account_id, base::OnceCallback<void(bool)> callback) { if (delegate_) { @@ -137,7 +137,7 @@ } } -ash::ParentCodeValidationResult LoginScreenClient::ValidateParentAccessCode( +ash::ParentCodeValidationResult LoginScreenClientImpl::ValidateParentAccessCode( const AccountId& account_id, const std::string& access_code, base::Time validation_time) { @@ -145,22 +145,22 @@ .ValidateParentAccessCode(account_id, access_code, validation_time); } -void LoginScreenClient::HardlockPod(const AccountId& account_id) { +void LoginScreenClientImpl::HardlockPod(const AccountId& account_id) { if (delegate_) delegate_->HandleHardlockPod(account_id); } -void LoginScreenClient::OnFocusPod(const AccountId& account_id) { +void LoginScreenClientImpl::OnFocusPod(const AccountId& account_id) { if (delegate_) delegate_->HandleOnFocusPod(account_id); } -void LoginScreenClient::OnNoPodFocused() { +void LoginScreenClientImpl::OnNoPodFocused() { if (delegate_) delegate_->HandleOnNoPodFocused(); } -void LoginScreenClient::FocusLockScreenApps(bool reverse) { +void LoginScreenClientImpl::FocusLockScreenApps(bool reverse) { // If delegate is not set, or it fails to handle focus request, call // |HandleFocusLeavingLockScreenApps| so the lock screen service can // give focus to the next window in the tab order. @@ -170,12 +170,12 @@ } } -void LoginScreenClient::FocusOobeDialog() { +void LoginScreenClientImpl::FocusOobeDialog() { if (delegate_) delegate_->HandleFocusOobeDialog(); } -void LoginScreenClient::ShowGaiaSignin(const AccountId& prefilled_account) { +void LoginScreenClientImpl::ShowGaiaSignin(const AccountId& prefilled_account) { auto supervised_action = prefilled_account.empty() ? SupervisedAction::kAddUser : SupervisedAction::kReauth; @@ -188,7 +188,7 @@ // requires reauth, so we are passing an empty |account_id|. ash::ParentAccessController::Get()->ShowWidget( AccountId(), - base::BindOnce(&LoginScreenClient::OnParentAccessValidation, + base::BindOnce(&LoginScreenClientImpl::OnParentAccessValidation, weak_ptr_factory_.GetWeakPtr(), prefilled_account), supervised_action, false /* extra_dimmer */, base::Time::Now()); } else { @@ -196,12 +196,12 @@ } } -void LoginScreenClient::OnRemoveUserWarningShown() { +void LoginScreenClientImpl::OnRemoveUserWarningShown() { ProfileMetrics::LogProfileDeleteUser( ProfileMetrics::DELETE_PROFILE_USER_MANAGER_SHOW_WARNING); } -void LoginScreenClient::RemoveUser(const AccountId& account_id) { +void LoginScreenClientImpl::RemoveUser(const AccountId& account_id) { ProfileMetrics::LogProfileDeleteUser( ProfileMetrics::DELETE_PROFILE_USER_MANAGER); user_manager::UserManager::Get()->RemoveUser(account_id, @@ -210,75 +210,77 @@ chromeos::LoginDisplayHost::default_host()->UpdateAddUserButtonStatus(); } -void LoginScreenClient::LaunchPublicSession(const AccountId& account_id, - const std::string& locale, - const std::string& input_method) { +void LoginScreenClientImpl::LaunchPublicSession( + const AccountId& account_id, + const std::string& locale, + const std::string& input_method) { if (delegate_) delegate_->HandleLaunchPublicSession(account_id, locale, input_method); } -void LoginScreenClient::RequestPublicSessionKeyboardLayouts( +void LoginScreenClientImpl::RequestPublicSessionKeyboardLayouts( const AccountId& account_id, const std::string& locale) { chromeos::GetKeyboardLayoutsForLocale( - base::BindOnce(&LoginScreenClient::SetPublicSessionKeyboardLayout, + base::BindOnce(&LoginScreenClientImpl::SetPublicSessionKeyboardLayout, weak_ptr_factory_.GetWeakPtr(), account_id, locale), locale); } -void LoginScreenClient::HandleAccelerator(ash::LoginAcceleratorAction action) { +void LoginScreenClientImpl::HandleAccelerator( + ash::LoginAcceleratorAction action) { if (chromeos::LoginDisplayHost::default_host()) chromeos::LoginDisplayHost::default_host()->HandleAccelerator(action); } -void LoginScreenClient::ShowAccountAccessHelpApp( +void LoginScreenClientImpl::ShowAccountAccessHelpApp( gfx::NativeWindow parent_window) { scoped_refptr<chromeos::HelpAppLauncher>( new chromeos::HelpAppLauncher(parent_window)) ->ShowHelpTopic(chromeos::HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT); } -void LoginScreenClient::ShowParentAccessHelpApp( +void LoginScreenClientImpl::ShowParentAccessHelpApp( gfx::NativeWindow parent_window) { scoped_refptr<chromeos::HelpAppLauncher>( new chromeos::HelpAppLauncher(parent_window)) ->ShowHelpTopic(chromeos::HelpAppLauncher::HELP_PARENT_ACCESS_CODE); } -void LoginScreenClient::ShowLockScreenNotificationSettings() { +void LoginScreenClientImpl::ShowLockScreenNotificationSettings() { chrome::SettingsWindowManager::GetInstance()->ShowOSSettings( ProfileManager::GetActiveUserProfile(), chromeos::settings::mojom::kSecurityAndSignInSubpagePath); } -void LoginScreenClient::OnFocusLeavingSystemTray(bool reverse) { +void LoginScreenClientImpl::OnFocusLeavingSystemTray(bool reverse) { for (ash::SystemTrayObserver& observer : system_tray_observers_) observer.OnFocusLeavingSystemTray(reverse); } -void LoginScreenClient::OnSystemTrayBubbleShown() { +void LoginScreenClientImpl::OnSystemTrayBubbleShown() { for (ash::SystemTrayObserver& observer : system_tray_observers_) observer.OnSystemTrayBubbleShown(); } -void LoginScreenClient::OnLoginScreenShown() { +void LoginScreenClientImpl::OnLoginScreenShown() { for (LoginScreenShownObserver& observer : login_screen_shown_observers_) observer.OnLoginScreenShown(); } -void LoginScreenClient::LoadWallpaper(const AccountId& account_id) { +void LoginScreenClientImpl::LoadWallpaper(const AccountId& account_id) { WallpaperControllerClientImpl::Get()->ShowUserWallpaper(account_id); } -void LoginScreenClient::SignOutUser() { +void LoginScreenClientImpl::SignOutUser() { chromeos::ScreenLocker::default_screen_locker()->Signout(); } -void LoginScreenClient::CancelAddUser() { +void LoginScreenClientImpl::CancelAddUser() { chromeos::UserAddingScreen::Get()->Cancel(); } -void LoginScreenClient::LoginAsGuest() { +void LoginScreenClientImpl::LoginAsGuest() { DCHECK(!chromeos::ScreenLocker::default_screen_locker()); if (chromeos::LoginDisplayHost::default_host()) { chromeos::LoginDisplayHost::default_host() @@ -289,13 +291,13 @@ } } -void LoginScreenClient::OnMaxIncorrectPasswordAttempted( +void LoginScreenClientImpl::OnMaxIncorrectPasswordAttempted( const AccountId& account_id) { RecordReauthReason(account_id, chromeos::ReauthReason::INCORRECT_PASSWORD_ENTERED); } -void LoginScreenClient::SetPublicSessionKeyboardLayout( +void LoginScreenClientImpl::SetPublicSessionKeyboardLayout( const AccountId& account_id, const std::string& locale, std::unique_ptr<base::ListValue> keyboard_layouts) { @@ -324,7 +326,7 @@ account_id, locale, result); } -void LoginScreenClient::OnUserActivity() { +void LoginScreenClientImpl::OnUserActivity() { if (chromeos::LoginDisplayHost::default_host()) { chromeos::LoginDisplayHost::default_host() ->GetExistingUserController() @@ -332,14 +334,14 @@ } } -void LoginScreenClient::OnParentAccessValidation( +void LoginScreenClientImpl::OnParentAccessValidation( const AccountId& prefilled_account, bool success) { if (success) ShowGaiaSigninInternal(prefilled_account); } -void LoginScreenClient::ShowGaiaSigninInternal( +void LoginScreenClientImpl::ShowGaiaSigninInternal( const AccountId& prefilled_account) { if (chromeos::LoginDisplayHost::default_host()) { chromeos::LoginDisplayHost::default_host()->ShowGaiaDialog( @@ -355,4 +357,4 @@ password_sync_manager->CreateAndShowDialog(); } } - } +}
diff --git a/chrome/browser/ui/ash/login_screen_client.h b/chrome/browser/ui/ash/login_screen_client_impl.h similarity index 92% rename from chrome/browser/ui/ash/login_screen_client.h rename to chrome/browser/ui/ash/login_screen_client_impl.h index f85e4f8..5d89ade 100644 --- a/chrome/browser/ui/ash/login_screen_client.h +++ b/chrome/browser/ui/ash/login_screen_client_impl.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_UI_ASH_LOGIN_SCREEN_CLIENT_H_ -#define CHROME_BROWSER_UI_ASH_LOGIN_SCREEN_CLIENT_H_ +#ifndef CHROME_BROWSER_UI_ASH_LOGIN_SCREEN_CLIENT_IMPL_H_ +#define CHROME_BROWSER_UI_ASH_LOGIN_SCREEN_CLIENT_IMPL_H_ #include "ash/public/cpp/login_accelerators.h" #include "ash/public/cpp/login_screen_client.h" @@ -28,7 +28,7 @@ // Handles method calls sent from ash to chrome. Also sends messages from chrome // to ash. -class LoginScreenClient : public ash::LoginScreenClient { +class LoginScreenClientImpl : public ash::LoginScreenClient { public: // Handles method calls coming from ash into chrome. class Delegate { @@ -69,10 +69,10 @@ virtual bool ValidateParentAccessCode(const std::string& access_code) = 0; }; - LoginScreenClient(); - ~LoginScreenClient() override; + LoginScreenClientImpl(); + ~LoginScreenClientImpl() override; static bool HasInstance(); - static LoginScreenClient* Get(); + static LoginScreenClientImpl* Get(); // Set the object which will handle calls coming from ash. void SetDelegate(Delegate* delegate); @@ -148,9 +148,9 @@ base::ObserverList<LoginScreenShownObserver> login_screen_shown_observers_; - base::WeakPtrFactory<LoginScreenClient> weak_ptr_factory_{this}; + base::WeakPtrFactory<LoginScreenClientImpl> weak_ptr_factory_{this}; - DISALLOW_COPY_AND_ASSIGN(LoginScreenClient); + DISALLOW_COPY_AND_ASSIGN(LoginScreenClientImpl); }; -#endif // CHROME_BROWSER_UI_ASH_LOGIN_SCREEN_CLIENT_H_ +#endif // CHROME_BROWSER_UI_ASH_LOGIN_SCREEN_CLIENT_IMPL_H_
diff --git a/chrome/browser/ui/browser_unittest.cc b/chrome/browser/ui/browser_unittest.cc index 217ffb78..33f168c 100644 --- a/chrome/browser/ui/browser_unittest.cc +++ b/chrome/browser/ui/browser_unittest.cc
@@ -14,6 +14,7 @@ #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/browser_with_test_window_test.h" #include "chrome/test/base/testing_profile.h" +#include "chrome/test/base/testing_profile_manager.h" #include "components/session_manager/core/session_manager.h" #include "components/user_manager/fake_user_manager.h" #include "components/user_manager/scoped_user_manager.h" @@ -185,19 +186,17 @@ // Tests BrowserCreate() when Incognito mode is disabled. TEST_F(BrowserUnitTest, CreateBrowserWithIncognitoModeDisabled) { - TestingProfile::Builder profile_builder; - std::unique_ptr<TestingProfile> test_profile = profile_builder.Build(); - IncognitoModePrefs::SetAvailability(test_profile->GetPrefs(), + IncognitoModePrefs::SetAvailability(profile()->GetPrefs(), IncognitoModePrefs::DISABLED); // Creating a browser window in OTR profile should fail if incognito is // disabled. EXPECT_EQ(Browser::CreationStatus::kErrorProfileUnsuitable, Browser::GetCreationStatusForProfile( - test_profile->GetPrimaryOTRProfile(/*create_if_needed=*/true))); + profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true))); // Verify creating a browser in the original profile succeeds. - Browser::CreateParams create_params(test_profile.get(), false); + Browser::CreateParams create_params(profile(), false); std::unique_ptr<BrowserWindow> test_window(CreateBrowserWindow()); create_params.window = test_window.get(); std::unique_ptr<Browser> test_browser(Browser::Create(create_params)); @@ -206,19 +205,17 @@ // Tests BrowserCreate() when Incognito mode is forced. TEST_F(BrowserUnitTest, CreateBrowserWithIncognitoModeForced) { - TestingProfile::Builder profile_builder; - std::unique_ptr<TestingProfile> test_profile = profile_builder.Build(); - IncognitoModePrefs::SetAvailability(test_profile->GetPrefs(), + IncognitoModePrefs::SetAvailability(profile()->GetPrefs(), IncognitoModePrefs::FORCED); // Creating a browser window in the original profile should fail if incognito // is forced. EXPECT_EQ(Browser::CreationStatus::kErrorProfileUnsuitable, - Browser::GetCreationStatusForProfile(test_profile.get())); + Browser::GetCreationStatusForProfile(profile())); // Creating a browser in OTR test profile should succeed. Browser::CreateParams off_the_record_create_params( - test_profile->GetPrimaryOTRProfile(/*create_if_needed=*/true), false); + profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true), false); std::unique_ptr<BrowserWindow> test_window(CreateBrowserWindow()); off_the_record_create_params.window = test_window.get(); std::unique_ptr<Browser> otr_browser( @@ -228,14 +225,11 @@ // Tests BrowserCreate() with not restrictions on incognito mode. TEST_F(BrowserUnitTest, CreateBrowserWithIncognitoModeEnabled) { - TestingProfile::Builder profile_builder; - std::unique_ptr<TestingProfile> test_profile = profile_builder.Build(); - ASSERT_EQ(IncognitoModePrefs::ENABLED, - IncognitoModePrefs::GetAvailability(test_profile->GetPrefs())); + IncognitoModePrefs::GetAvailability(profile()->GetPrefs())); // Creating a browser in the original test profile should succeed. - Browser::CreateParams create_params(test_profile.get(), false); + Browser::CreateParams create_params(profile(), false); std::unique_ptr<BrowserWindow> test_window(CreateBrowserWindow()); create_params.window = test_window.get(); std::unique_ptr<Browser> test_browser(Browser::Create(create_params)); @@ -243,7 +237,7 @@ // Creating a browser in OTR test profile should succeed. Browser::CreateParams off_the_record_create_params( - test_profile->GetPrimaryOTRProfile(/*create_if_needed=*/true), false); + profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true), false); std::unique_ptr<BrowserWindow> otr_test_window(CreateBrowserWindow()); off_the_record_create_params.window = otr_test_window.get(); std::unique_ptr<Browser> otr_browser( @@ -410,24 +404,22 @@ // Tests that Browser::Create creates a guest session browser for appropriate // OTR/non-OTR type for old and ephemeral Guest profiles. TEST_P(GuestBrowserUnitTest, CreateGuestSessionBrowser) { - TestingProfile::Builder profile_builder; - profile_builder.SetGuestSession(); - std::unique_ptr<TestingProfile> test_profile = profile_builder.Build(); + TestingProfile* test_profile = profile_manager()->CreateGuestProfile(); TestingProfile::Builder otr_profile_builder; otr_profile_builder.SetGuestSession(); Profile* guest_profile = nullptr; if (is_ephemeral()) { // Try creating an OTR profile for ephemeral Guest profile, it should fail. - EXPECT_FALSE(otr_profile_builder.BuildIncognito(test_profile.get())); - guest_profile = test_profile.get(); + EXPECT_FALSE(otr_profile_builder.BuildIncognito(test_profile)); + guest_profile = test_profile; } else { // Try creating a browser in original guest profile - it should fail. EXPECT_EQ(Browser::CreationStatus::kErrorProfileUnsuitable, - Browser::GetCreationStatusForProfile(test_profile.get())); + Browser::GetCreationStatusForProfile(test_profile)); // Create OTR profile for the Guest profile. - EXPECT_TRUE(otr_profile_builder.BuildIncognito(test_profile.get())); + EXPECT_TRUE(otr_profile_builder.BuildIncognito(test_profile)); guest_profile = test_profile->GetPrimaryOTRProfile(/*create_if_needed=*/true); }
diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm index c4ff5656..65aabd9d 100644 --- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm +++ b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm
@@ -178,20 +178,20 @@ @property(readonly, nonatomic) NSMenuItem* menuItem; // Get the source item using the tags and create the menu item. -- (id)initWithController:(AppShimMenuController*)controller - menuTag:(NSInteger)menuTag - itemTag:(NSInteger)itemTag - resourceId:(int)resourceId - action:(SEL)action - keyEquivalent:(NSString*)keyEquivalent; +- (instancetype)initWithController:(AppShimMenuController*)controller + menuTag:(NSInteger)menuTag + itemTag:(NSInteger)itemTag + resourceId:(int)resourceId + action:(SEL)action + keyEquivalent:(NSString*)keyEquivalent; // Retain the source item given |menuTag| and |sourceItemTag|. Copy // the menu item given |menuTag| and |targetItemTag|. // This is useful when we want a doppelganger with a different source item. // For example, if there are conflicting key equivalents. -- (id)initWithMenuTag:(NSInteger)menuTag - sourceItemTag:(NSInteger)sourceItemTag - targetItemTag:(NSInteger)targetItemTag - keyEquivalent:(NSString*)keyEquivalent; +- (instancetype)initWithMenuTag:(NSInteger)menuTag + sourceItemTag:(NSInteger)sourceItemTag + targetItemTag:(NSInteger)targetItemTag + keyEquivalent:(NSString*)keyEquivalent; // Set the title using |resourceId_| and unset the source item's key equivalent. - (void)enableForApp:(const Extension*)app; // Restore the source item's key equivalent. @@ -204,12 +204,12 @@ return _menuItem; } -- (id)initWithController:(AppShimMenuController*)controller - menuTag:(NSInteger)menuTag - itemTag:(NSInteger)itemTag - resourceId:(int)resourceId - action:(SEL)action - keyEquivalent:(NSString*)keyEquivalent { +- (instancetype)initWithController:(AppShimMenuController*)controller + menuTag:(NSInteger)menuTag + itemTag:(NSInteger)itemTag + resourceId:(int)resourceId + action:(SEL)action + keyEquivalent:(NSString*)keyEquivalent { if ((self = [super init])) { _sourceItem.reset([GetItemByTag(menuTag, itemTag) retain]); DCHECK(_sourceItem); @@ -225,10 +225,10 @@ return self; } -- (id)initWithMenuTag:(NSInteger)menuTag - sourceItemTag:(NSInteger)sourceItemTag - targetItemTag:(NSInteger)targetItemTag - keyEquivalent:(NSString*)keyEquivalent { +- (instancetype)initWithMenuTag:(NSInteger)menuTag + sourceItemTag:(NSInteger)sourceItemTag + targetItemTag:(NSInteger)targetItemTag + keyEquivalent:(NSString*)keyEquivalent { if ((self = [super init])) { _menuItem.reset([GetItemByTag(menuTag, targetItemTag) copy]); _sourceItem.reset([GetItemByTag(menuTag, sourceItemTag) retain]); @@ -288,7 +288,7 @@ @implementation AppShimMenuController -- (id)init { +- (instancetype)init { if ((self = [super init])) { [self buildAppMenuItems]; [self registerEventHandlers];
diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm index caf27e35..33ce5a0 100644 --- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm +++ b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm
@@ -76,15 +76,15 @@ ASSERT_EQ(initial_menu_item_count_ + kExtraTopLevelItems, [item_array count]); for (NSUInteger i = 0; i < initial_menu_item_count_; ++i) - EXPECT_TRUE([[item_array objectAtIndex:i] isHidden]); - NSMenuItem* app_menu = [item_array objectAtIndex:initial_menu_item_count_]; + EXPECT_TRUE([item_array[i] isHidden]); + NSMenuItem* app_menu = item_array[initial_menu_item_count_]; EXPECT_EQ(app->id(), base::SysNSStringToUTF8([app_menu title])); EXPECT_EQ(app->name(), base::SysNSStringToUTF8([[app_menu submenu] title])); for (NSUInteger i = initial_menu_item_count_; i < initial_menu_item_count_ + kExtraTopLevelItems; ++i) { - NSMenuItem* menu = [item_array objectAtIndex:i]; + NSMenuItem* menu = item_array[i]; EXPECT_GT([[menu submenu] numberOfItems], 0); EXPECT_FALSE([menu isHidden]); } @@ -94,14 +94,13 @@ NSArray* item_array = [[NSApp mainMenu] itemArray]; EXPECT_EQ(initial_menu_item_count_, [item_array count]); for (NSUInteger i = 0; i < initial_menu_item_count_; ++i) - EXPECT_FALSE([[item_array objectAtIndex:i] isHidden]); + EXPECT_FALSE([item_array[i] isHidden]); } void CheckEditMenu(const extensions::Extension* app) const { const int edit_menu_index = initial_menu_item_count_ + 2; - NSMenuItem* edit_menu = - [[[NSApp mainMenu] itemArray] objectAtIndex:edit_menu_index]; + NSMenuItem* edit_menu = [[NSApp mainMenu] itemArray][edit_menu_index]; NSMenu* edit_submenu = [edit_menu submenu]; NSMenuItem* paste_match_style_menu_item = [edit_submenu itemWithTag:IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE];
diff --git a/chrome/browser/ui/cocoa/confirm_quit_panel_controller.mm b/chrome/browser/ui/cocoa/confirm_quit_panel_controller.mm index 41b96d0..22eeee4 100644 --- a/chrome/browser/ui/cocoa/confirm_quit_panel_controller.mm +++ b/chrome/browser/ui/cocoa/confirm_quit_panel_controller.mm
@@ -40,7 +40,7 @@ @implementation ConfirmQuitFrameView -- (id)initWithFrame:(NSRect)frameRect { +- (instancetype)initWithFrame:(NSRect)frameRect { if ((self = [super initWithFrame:frameRect])) { base::scoped_nsobject<NSTextField> message( // The frame will be fixed up when |-setMessageText:| is called. @@ -112,15 +112,15 @@ @private NSApplication* _application; } -- (id)initWithApplication:(NSApplication*)app - animationDuration:(NSTimeInterval)duration; +- (instancetype)initWithApplication:(NSApplication*)app + animationDuration:(NSTimeInterval)duration; @end @implementation FadeAllWindowsAnimation -- (id)initWithApplication:(NSApplication*)app - animationDuration:(NSTimeInterval)duration { +- (instancetype)initWithApplication:(NSApplication*)app + animationDuration:(NSTimeInterval)duration { if ((self = [super initWithDuration:duration animationCurve:NSAnimationLinear])) { _application = app; @@ -170,7 +170,7 @@ return [[g_confirmQuitPanelController retain] autorelease]; } -- (id)init { +- (instancetype)init { const NSRect kWindowFrame = NSMakeRect(0, 0, 350, 70); base::scoped_nsobject<NSWindow> window( [[NSWindow alloc] initWithContentRect:kWindowFrame @@ -299,7 +299,7 @@ - (void)windowWillClose:(NSNotification*)notif { // Release all animations because CAAnimation retains its delegate (self), // which will cause a retain cycle. Break it! - [[self window] setAnimations:[NSDictionary dictionary]]; + [[self window] setAnimations:@{}]; g_confirmQuitPanelController = nil; [self autorelease]; } @@ -308,7 +308,7 @@ // If a panel that is fading out is going to be reused here, make sure it // does not get released when the animation finishes. base::scoped_nsobject<ConfirmQuitPanelController> keepAlive([self retain]); - [[self window] setAnimations:[NSDictionary dictionary]]; + [[self window] setAnimations:@{}]; [[self window] center]; [[self window] setAlphaValue:1.0]; [super showWindow:sender]; @@ -328,7 +328,7 @@ [animation setDuration:0.2]; NSMutableDictionary* dictionary = [NSMutableDictionary dictionaryWithDictionary:[window animations]]; - [dictionary setObject:animation forKey:@"alphaValue"]; + dictionary[@"alphaValue"] = animation; [window setAnimations:dictionary]; [[window animator] setAlphaValue:0.0]; }
diff --git a/chrome/browser/ui/cocoa/dock_icon.mm b/chrome/browser/ui/cocoa/dock_icon.mm index d0f2430..dc15ebe6 100644 --- a/chrome/browser/ui/cocoa/dock_icon.mm +++ b/chrome/browser/ui/cocoa/dock_icon.mm
@@ -129,8 +129,7 @@ // Download count base::scoped_nsobject<NSNumberFormatter> formatter( [[NSNumberFormatter alloc] init]); - NSString* countString = - [formatter stringFromNumber:[NSNumber numberWithInt:_downloads]]; + NSString* countString = [formatter stringFromNumber:@(_downloads)]; CGFloat countFontSize = 24; NSSize countSize = NSZeroSize;
diff --git a/chrome/browser/ui/cocoa/find_pasteboard_unittest.mm b/chrome/browser/ui/cocoa/find_pasteboard_unittest.mm index 96b36a9..f9b7b2a 100644 --- a/chrome/browser/ui/cocoa/find_pasteboard_unittest.mm +++ b/chrome/browser/ui/cocoa/find_pasteboard_unittest.mm
@@ -44,8 +44,7 @@ } - (void)setFindPboardText:(NSString*)text { - [_pboard->get() declareTypes:[NSArray arrayWithObject:NSStringPboardType] - owner:nil]; + [_pboard->get() declareTypes:@[ NSStringPboardType ] owner:nil]; [_pboard->get() setString:text forType:NSStringPboardType]; }
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.h b/chrome/browser/ui/cocoa/history_menu_bridge.h index 70b4a11..8e477e1 100644 --- a/chrome/browser/ui/cocoa/history_menu_bridge.h +++ b/chrome/browser/ui/cocoa/history_menu_bridge.h
@@ -13,7 +13,7 @@ #include "base/mac/scoped_nsobject.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/scoped_observer.h" +#include "base/scoped_observation.h" #include "base/task/cancelable_task_tracker.h" #import "chrome/browser/ui/cocoa/main_menu_item.h" #import "components/favicon/core/favicon_service.h" @@ -267,8 +267,9 @@ // The default favicon if a HistoryItem does not have one. base::scoped_nsobject<NSImage> default_favicon_; - ScopedObserver<history::HistoryService, history::HistoryServiceObserver> - history_service_observer_; + base::ScopedObservation<history::HistoryService, + history::HistoryServiceObserver> + history_service_observation_{this}; DISALLOW_COPY_AND_ASSIGN(HistoryMenuBridge); };
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.mm b/chrome/browser/ui/cocoa/history_menu_bridge.mm index 870d021..b68fca5f 100644 --- a/chrome/browser/ui/cocoa/history_menu_bridge.mm +++ b/chrome/browser/ui/cocoa/history_menu_bridge.mm
@@ -69,8 +69,7 @@ history_service_(NULL), tab_restore_service_(NULL), create_in_progress_(false), - need_recreate_(false), - history_service_observer_(this) { + need_recreate_(false) { // If we don't have a profile, do not bother initializing our data sources. // This shouldn't happen except in unit tests. if (profile_) { @@ -80,7 +79,7 @@ history::HistoryService* hs = HistoryServiceFactory::GetForProfile( profile_, ServiceAccessType::EXPLICIT_ACCESS); if (hs) { - history_service_observer_.Add(hs); + history_service_observation_.Observe(hs); if (hs->BackendLoaded()) { history_service_ = hs; Init();
diff --git a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.h b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.h index 6949983..9e9b584 100644 --- a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.h +++ b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.h
@@ -16,7 +16,7 @@ HistoryMenuBridge* _bridge; // weak; owns us } -- (id)initWithBridge:(HistoryMenuBridge*)bridge; +- (instancetype)initWithBridge:(HistoryMenuBridge*)bridge; // Called by any history menu item. - (IBAction)openHistoryMenuItem:(id)sender;
diff --git a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm index 1c37e4b2..e0759fa 100644 --- a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm +++ b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm
@@ -26,7 +26,7 @@ @implementation HistoryMenuCocoaController -- (id)initWithBridge:(HistoryMenuBridge*)bridge { +- (instancetype)initWithBridge:(HistoryMenuBridge*)bridge { if ((self = [super init])) { _bridge = bridge; DCHECK(_bridge);
diff --git a/chrome/browser/ui/cocoa/history_menu_cocoa_controller_unittest.mm b/chrome/browser/ui/cocoa/history_menu_cocoa_controller_unittest.mm index c4a98f2..7cc11e3 100644 --- a/chrome/browser/ui/cocoa/history_menu_cocoa_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/history_menu_cocoa_controller_unittest.mm
@@ -24,7 +24,7 @@ @implementation FakeHistoryMenuController -- (id)initTest { +- (instancetype)initTest { if ((self = [super init])) { _opened[1] = NO; _opened[2] = NO;
diff --git a/chrome/browser/ui/cocoa/history_overlay_controller.h b/chrome/browser/ui/cocoa/history_overlay_controller.h index 8100aa7..2a29e11 100644 --- a/chrome/browser/ui/cocoa/history_overlay_controller.h +++ b/chrome/browser/ui/cocoa/history_overlay_controller.h
@@ -29,7 +29,7 @@ } // Designated initializer. -- (id)initForMode:(HistoryOverlayMode)mode; +- (instancetype)initForMode:(HistoryOverlayMode)mode; // Shows the shield above |view|. - (void)showPanelForView:(NSView*)view;
diff --git a/chrome/browser/ui/cocoa/history_overlay_controller.mm b/chrome/browser/ui/cocoa/history_overlay_controller.mm index dcc84e6..00a84c9 100644 --- a/chrome/browser/ui/cocoa/history_overlay_controller.mm +++ b/chrome/browser/ui/cocoa/history_overlay_controller.mm
@@ -39,16 +39,14 @@ base::scoped_nsobject<CAShapeLayer> _shapeLayer; } @property(nonatomic) CGFloat shieldAlpha; -- (id)initWithMode:(HistoryOverlayMode)mode - image:(NSImage*)image; +- (instancetype)initWithMode:(HistoryOverlayMode)mode image:(NSImage*)image; @end @implementation HistoryOverlayView @synthesize shieldAlpha = _shieldAlpha; -- (id)initWithMode:(HistoryOverlayMode)mode - image:(NSImage*)image { +- (instancetype)initWithMode:(HistoryOverlayMode)mode image:(NSImage*)image { NSRect frame = NSMakeRect(0, 0, kShieldWidth, kShieldHeight); if ((self = [super initWithFrame:frame])) { _mode = mode; @@ -101,7 +99,7 @@ @implementation HistoryOverlayController -- (id)initForMode:(HistoryOverlayMode)mode { +- (instancetype)initForMode:(HistoryOverlayMode)mode { if ((self = [super init])) { _mode = mode; DCHECK(mode == kHistoryOverlayModeBack ||
diff --git a/chrome/browser/ui/cocoa/keystone_infobar_delegate.mm b/chrome/browser/ui/cocoa/keystone_infobar_delegate.mm index bb0760e..91adf1b2 100644 --- a/chrome/browser/ui/cocoa/keystone_infobar_delegate.mm +++ b/chrome/browser/ui/cocoa/keystone_infobar_delegate.mm
@@ -156,7 +156,7 @@ - (void)updateStatus:(NSNotification*)notification { NSDictionary* dictionary = [notification userInfo]; AutoupdateStatus status = static_cast<AutoupdateStatus>( - [[dictionary objectForKey:kAutoupdateStatusStatus] intValue]); + [dictionary[kAutoupdateStatusStatus] intValue]); if (status == kAutoupdateNone || status == kAutoupdateRegistering) { return;
diff --git a/chrome/browser/ui/cocoa/native_window_tracker_cocoa.mm b/chrome/browser/ui/cocoa/native_window_tracker_cocoa.mm index a6c9e0c..c4cf3e74 100644 --- a/chrome/browser/ui/cocoa/native_window_tracker_cocoa.mm +++ b/chrome/browser/ui/cocoa/native_window_tracker_cocoa.mm
@@ -11,7 +11,7 @@ NSWindow* _window; } -- (id)initWithNSWindow:(NSWindow*)window; +- (instancetype)initWithNSWindow:(NSWindow*)window; - (bool)wasNSWindowClosed; - (void)onWindowWillClose:(NSNotification*)notification; @@ -19,7 +19,7 @@ @implementation BridgedNativeWindowTracker -- (id)initWithNSWindow:(NSWindow*)window { +- (instancetype)initWithNSWindow:(NSWindow*)window { _window = window; NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; [center addObserver:self
diff --git a/chrome/browser/ui/cocoa/notifications/alert_nsnotification_service.mm b/chrome/browser/ui/cocoa/notifications/alert_nsnotification_service.mm index 541a88cc..63d20e8 100644 --- a/chrome/browser/ui/cocoa/notifications/alert_nsnotification_service.mm +++ b/chrome/browser/ui/cocoa/notifications/alert_nsnotification_service.mm
@@ -56,11 +56,12 @@ NSArray* deliveredNotifications = [notificationCenter deliveredNotifications]; for (NSUserNotification* toast in deliveredNotifications) { NSString* toastId = - [toast.userInfo objectForKey:notification_constants::kNotificationId]; - NSString* toastProfileId = [toast.userInfo - objectForKey:notification_constants::kNotificationProfileId]; - BOOL toastIncognito = [[toast.userInfo - objectForKey:notification_constants::kNotificationIncognito] boolValue]; + (toast.userInfo)[notification_constants::kNotificationId]; + NSString* toastProfileId = + (toast.userInfo)[notification_constants::kNotificationProfileId]; + BOOL toastIncognito = + [(toast.userInfo)[notification_constants::kNotificationIncognito] + boolValue]; if ([notificationId isEqualToString:toastId] && [profileId isEqualToString:toastProfileId] && @@ -80,10 +81,11 @@ BOOL removedNotifications = NO; for (NSUserNotification* toast in deliveredNotifications) { - NSString* toastProfileId = [toast.userInfo - objectForKey:notification_constants::kNotificationProfileId]; - BOOL toastIncognito = [[toast.userInfo - objectForKey:notification_constants::kNotificationIncognito] boolValue]; + NSString* toastProfileId = + (toast.userInfo)[notification_constants::kNotificationProfileId]; + BOOL toastIncognito = + [(toast.userInfo)[notification_constants::kNotificationIncognito] + boolValue]; if ([profileId isEqualToString:toastProfileId] && incognito == toastIncognito) { @@ -111,16 +113,16 @@ NSMutableArray* notificationIds = [NSMutableArray arrayWithCapacity:[deliveredNotifications count]]; for (NSUserNotification* toast in deliveredNotifications) { - NSString* toastProfileId = [toast.userInfo - objectForKey:notification_constants::kNotificationProfileId]; - BOOL toastIncognito = [[toast.userInfo - objectForKey:notification_constants::kNotificationIncognito] boolValue]; + NSString* toastProfileId = + (toast.userInfo)[notification_constants::kNotificationProfileId]; + BOOL toastIncognito = + [(toast.userInfo)[notification_constants::kNotificationIncognito] + boolValue]; if ([profileId isEqualToString:toastProfileId] && incognito == toastIncognito) { [notificationIds - addObject:[toast.userInfo - objectForKey:notification_constants::kNotificationId]]; + addObject:(toast.userInfo)[notification_constants::kNotificationId]]; } } reply(notificationIds); @@ -134,11 +136,11 @@ [NSMutableArray arrayWithCapacity:[deliveredNotifications count]]; for (NSUserNotification* toast in deliveredNotifications) { NSString* toastId = - [toast.userInfo objectForKey:notification_constants::kNotificationId]; - NSString* toastProfileId = [toast.userInfo - objectForKey:notification_constants::kNotificationProfileId]; - NSNumber* toastIncognito = [toast.userInfo - objectForKey:notification_constants::kNotificationIncognito]; + (toast.userInfo)[notification_constants::kNotificationId]; + NSString* toastProfileId = + (toast.userInfo)[notification_constants::kNotificationProfileId]; + NSNumber* toastIncognito = + (toast.userInfo)[notification_constants::kNotificationIncognito]; [notificationIds addObject:@{ notification_constants::kNotificationId : toastId,
diff --git a/chrome/browser/ui/cocoa/notifications/notification_builder_mac_unittest.mm b/chrome/browser/ui/cocoa/notifications/notification_builder_mac_unittest.mm index 3664167..f742a617 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_builder_mac_unittest.mm +++ b/chrome/browser/ui/cocoa/notifications/notification_builder_mac_unittest.mm
@@ -30,10 +30,8 @@ [builder setIncognito:false]; [builder setCreatorPid:@1]; [builder - setNotificationType:[NSNumber - numberWithInteger:static_cast<int>( - NotificationHandler::Type:: - WEB_NON_PERSISTENT)]]; + setNotificationType:@(static_cast<int>( + NotificationHandler::Type::WEB_NON_PERSISTENT))]; [builder setShowSettingsButton:true]; NSUserNotification* notification = [builder buildUserNotification]; @@ -67,11 +65,8 @@ [builder setProfileId:@"profileId"]; [builder setIncognito:false]; [builder setCreatorPid:@1]; - [builder - setNotificationType:[NSNumber - numberWithInteger:static_cast<int>( - NotificationHandler::Type:: - WEB_PERSISTENT)]]; + [builder setNotificationType:@(static_cast<int>( + NotificationHandler::Type::WEB_PERSISTENT))]; [builder setShowSettingsButton:true]; NSUserNotification* notification = [builder buildUserNotification]; @@ -92,8 +87,8 @@ NSArray* buttons = [notification valueForKey:@"_alternateActionButtonTitles"]; ASSERT_EQ(2u, buttons.count); - EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0])); - EXPECT_EQ("Settings", base::SysNSStringToUTF8([buttons objectAtIndex:1])); + EXPECT_EQ("Button1", base::SysNSStringToUTF8(buttons[0])); + EXPECT_EQ("Settings", base::SysNSStringToUTF8(buttons[1])); } TEST(NotificationBuilderMacTest, TestNotificationTwoButtons) { @@ -109,11 +104,8 @@ [builder setProfileId:@"profileId"]; [builder setIncognito:false]; [builder setCreatorPid:@1]; - [builder - setNotificationType:[NSNumber - numberWithInteger:static_cast<int>( - NotificationHandler::Type:: - WEB_PERSISTENT)]]; + [builder setNotificationType:@(static_cast<int>( + NotificationHandler::Type::WEB_PERSISTENT))]; [builder setShowSettingsButton:true]; NSUserNotification* notification = [builder buildUserNotification]; @@ -134,9 +126,9 @@ NSArray* buttons = [notification valueForKey:@"_alternateActionButtonTitles"]; ASSERT_EQ(3u, buttons.count); - EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0])); - EXPECT_EQ("Button2", base::SysNSStringToUTF8([buttons objectAtIndex:1])); - EXPECT_EQ("Settings", base::SysNSStringToUTF8([buttons objectAtIndex:2])); + EXPECT_EQ("Button1", base::SysNSStringToUTF8(buttons[0])); + EXPECT_EQ("Button2", base::SysNSStringToUTF8(buttons[1])); + EXPECT_EQ("Settings", base::SysNSStringToUTF8(buttons[2])); } TEST(NotificationBuilderMacTest, TestNotificationExtensionNoButtons) { @@ -151,10 +143,8 @@ [builder setProfileId:@"profileId"]; [builder setIncognito:false]; [builder setCreatorPid:@1]; - [builder setNotificationType:[NSNumber - numberWithInteger:static_cast<int>( - NotificationHandler:: - Type::EXTENSION)]]; + [builder setNotificationType:@(static_cast<int>( + NotificationHandler::Type::EXTENSION))]; [builder setShowSettingsButton:false]; NSUserNotification* notification = [builder buildUserNotification]; @@ -180,10 +170,8 @@ [builder setProfileId:@"profileId"]; [builder setIncognito:false]; [builder setCreatorPid:@1]; - [builder setNotificationType:[NSNumber - numberWithInteger:static_cast<int>( - NotificationHandler:: - Type::EXTENSION)]]; + [builder setNotificationType:@(static_cast<int>( + NotificationHandler::Type::EXTENSION))]; [builder setShowSettingsButton:false]; NSUserNotification* notification = [builder buildUserNotification]; @@ -212,10 +200,8 @@ [builder setProfileId:@"profileId"]; [builder setIncognito:false]; [builder setCreatorPid:@1]; - [builder setNotificationType:[NSNumber - numberWithInteger:static_cast<int>( - NotificationHandler:: - Type::EXTENSION)]]; + [builder setNotificationType:@(static_cast<int>( + NotificationHandler::Type::EXTENSION))]; [builder setShowSettingsButton:false]; NSUserNotification* notification = [builder buildUserNotification]; @@ -224,8 +210,8 @@ // No settings button ASSERT_EQ(2u, buttons.count); - EXPECT_EQ("Button1", base::SysNSStringToUTF8([buttons objectAtIndex:0])); - EXPECT_EQ("Button2", base::SysNSStringToUTF8([buttons objectAtIndex:1])); + EXPECT_EQ("Button1", base::SysNSStringToUTF8(buttons[0])); + EXPECT_EQ("Button2", base::SysNSStringToUTF8(buttons[1])); } TEST(NotificationBuilderMacTest, TestUserInfo) { @@ -239,11 +225,8 @@ [builder setNotificationId:@"Notification1"]; [builder setIncognito:true]; [builder setCreatorPid:@1]; - [builder - setNotificationType:[NSNumber - numberWithInteger:static_cast<int>( - NotificationHandler::Type:: - WEB_PERSISTENT)]]; + [builder setNotificationType:@(static_cast<int>( + NotificationHandler::Type::WEB_PERSISTENT))]; [builder setShowSettingsButton:true]; NSUserNotification* notification = [builder buildUserNotification]; @@ -252,16 +235,16 @@ NSDictionary* userInfo = [notification userInfo]; EXPECT_EQ("https://www.miguel.com", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationOrigin])); + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationOrigin])); EXPECT_EQ("Notification1", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationId])); + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationId])); EXPECT_EQ("Profile1", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationProfileId])); - EXPECT_TRUE([[userInfo - objectForKey:notification_constants::kNotificationIncognito] boolValue]); + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationProfileId])); + EXPECT_TRUE( + [userInfo[notification_constants::kNotificationIncognito] boolValue]); } TEST(NotificationBuilderMacTest, TestBuildDictionary) { @@ -280,9 +263,7 @@ [sourceBuilder setCreatorPid:@1]; [sourceBuilder setNotificationType: - [NSNumber - numberWithInteger:static_cast<int>(NotificationHandler::Type:: - WEB_NON_PERSISTENT)]]; + @(static_cast<int>(NotificationHandler::Type::WEB_NON_PERSISTENT))]; [sourceBuilder setShowSettingsButton:true]; notificationData = [sourceBuilder buildDictionary]; @@ -307,14 +288,11 @@ [builder setClosedFromAlert:YES]; NSDictionary* data = [builder buildDictionary]; - EXPECT_NSEQ(@YES, - [data objectForKey:notification_constants::kNotificationIsAlert]); - EXPECT_NSEQ( - @(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE)), - [data objectForKey:notification_constants::kNotificationOperation]); - EXPECT_NSEQ( - @(notification_constants::kNotificationInvalidButtonIndex), - [data objectForKey:notification_constants::kNotificationButtonIndex]); + EXPECT_NSEQ(@YES, data[notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ(@(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE)), + data[notification_constants::kNotificationOperation]); + EXPECT_NSEQ(@(notification_constants::kNotificationInvalidButtonIndex), + data[notification_constants::kNotificationButtonIndex]); } TEST(NotificationBuilderMacTest, TestSetClosedFromAlert_NO) { @@ -325,12 +303,9 @@ [builder setClosedFromAlert:NO]; NSDictionary* data = [builder buildDictionary]; - EXPECT_NSEQ(@NO, - [data objectForKey:notification_constants::kNotificationIsAlert]); - EXPECT_NSEQ( - @(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE)), - [data objectForKey:notification_constants::kNotificationOperation]); - EXPECT_NSEQ( - @(notification_constants::kNotificationInvalidButtonIndex), - [data objectForKey:notification_constants::kNotificationButtonIndex]); + EXPECT_NSEQ(@NO, data[notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ(@(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE)), + data[notification_constants::kNotificationOperation]); + EXPECT_NSEQ(@(notification_constants::kNotificationInvalidButtonIndex), + data[notification_constants::kNotificationButtonIndex]); }
diff --git a/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac.mm b/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac.mm index cdbad31..210201c 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac.mm +++ b/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac.mm
@@ -14,32 +14,29 @@ fromAlert:(BOOL)fromAlert dismissed:(BOOL)dismissed { NSString* origin = - [[notification userInfo] - objectForKey:notification_constants::kNotificationOrigin] - ? [[notification userInfo] - objectForKey:notification_constants::kNotificationOrigin] + [notification userInfo][notification_constants::kNotificationOrigin] + ? [notification userInfo][notification_constants::kNotificationOrigin] : @""; - DCHECK([[notification userInfo] - objectForKey:notification_constants::kNotificationId]); - NSString* notificationId = [[notification userInfo] - objectForKey:notification_constants::kNotificationId]; + DCHECK([notification userInfo][notification_constants::kNotificationId]); + NSString* notificationId = + [notification userInfo][notification_constants::kNotificationId]; - DCHECK([[notification userInfo] - objectForKey:notification_constants::kNotificationProfileId]); - NSString* profileId = [[notification userInfo] - objectForKey:notification_constants::kNotificationProfileId]; + DCHECK( + [notification userInfo][notification_constants::kNotificationProfileId]); + NSString* profileId = + [notification userInfo][notification_constants::kNotificationProfileId]; - NSNumber* creatorPid = [[notification userInfo] - objectForKey:notification_constants::kNotificationCreatorPid]; + NSNumber* creatorPid = + [notification userInfo][notification_constants::kNotificationCreatorPid]; - DCHECK([[notification userInfo] - objectForKey:notification_constants::kNotificationIncognito]); - NSNumber* incognito = [[notification userInfo] - objectForKey:notification_constants::kNotificationIncognito]; - NSNumber* notificationType = [[notification userInfo] - objectForKey:notification_constants::kNotificationType]; - NSNumber* hasSettingsButton = [[notification userInfo] - objectForKey:notification_constants::kNotificationHasSettingsButton]; + DCHECK( + [notification userInfo][notification_constants::kNotificationIncognito]); + NSNumber* incognito = + [notification userInfo][notification_constants::kNotificationIncognito]; + NSNumber* notificationType = + [notification userInfo][notification_constants::kNotificationType]; + NSNumber* hasSettingsButton = [notification userInfo] + [notification_constants::kNotificationHasSettingsButton]; // Closed notifications are not activated. NSUserNotificationActivationType activationType =
diff --git a/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm b/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm index 97e68e19..1e21287 100644 --- a/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm +++ b/chrome/browser/ui/cocoa/notifications/notification_response_builder_mac_unittest.mm
@@ -48,8 +48,7 @@ [builder setProfileId:@"profileId"]; [builder setIncognito:false]; [builder setCreatorPid:@1]; - [builder - setNotificationType:[NSNumber numberWithInt:static_cast<int>(type)]]; + [builder setNotificationType:@(static_cast<int>(type))]; [builder setShowSettingsButton:(type != NotificationHandler::Type::EXTENSION)]; return builder; @@ -69,7 +68,7 @@ [NotificationResponseBuilder buildActivatedDictionary:notification fromAlert:NO]; NSNumber* creatorPid = - [response objectForKey:notification_constants::kNotificationCreatorPid]; + response[notification_constants::kNotificationCreatorPid]; EXPECT_TRUE([creatorPid isEqualToNumber:@0]); } @@ -87,9 +86,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); @@ -111,9 +110,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_SETTINGS), operation.intValue); @@ -132,16 +131,15 @@ // 1 was clicked. [notification setValue:@(NSUserNotificationActivationTypeActionButtonClicked) forKey:@"_activationType"]; - [notification setValue:[NSNumber numberWithInt:0] - forKey:@"_alternateActionIndex"]; + [notification setValue:@0 forKey:@"_alternateActionIndex"]; NSDictionary* response = [NotificationResponseBuilder buildActivatedDictionary:notification fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); EXPECT_EQ(0, buttonIndex.intValue); @@ -164,9 +162,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); EXPECT_EQ(0, buttonIndex.intValue); @@ -183,17 +181,16 @@ // 2 was clicked. [notification setValue:@(NSUserNotificationActivationTypeActionButtonClicked) forKey:@"_activationType"]; - [notification setValue:[NSNumber numberWithInt:1] - forKey:@"_alternateActionIndex"]; + [notification setValue:@1 forKey:@"_alternateActionIndex"]; NSDictionary* response = [NotificationResponseBuilder buildActivatedDictionary:notification fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); EXPECT_EQ(1, buttonIndex.intValue); @@ -213,17 +210,16 @@ [NSNumber numberWithInt:NSUserNotificationActivationTypeActionButtonClicked] forKey:@"_activationType"]; - [notification setValue:[NSNumber numberWithInt:2] - forKey:@"_alternateActionIndex"]; + [notification setValue:@2 forKey:@"_alternateActionIndex"]; NSDictionary* response = [NotificationResponseBuilder buildActivatedDictionary:notification fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_SETTINGS), operation.intValue); EXPECT_EQ(notification_constants::kNotificationInvalidButtonIndex, @@ -245,9 +241,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE), operation.intValue); EXPECT_EQ(notification_constants::kNotificationInvalidButtonIndex, @@ -266,17 +262,16 @@ [NSNumber numberWithInt:NSUserNotificationActivationTypeActionButtonClicked] forKey:@"_activationType"]; - [notification setValue:[NSNumber numberWithInt:1] - forKey:@"_alternateActionIndex"]; + [notification setValue:@1 forKey:@"_alternateActionIndex"]; NSDictionary* response = [NotificationResponseBuilder buildActivatedDictionary:notification fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); EXPECT_EQ(1, buttonIndex.intValue); @@ -297,9 +292,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; + response[notification_constants::kNotificationOperation]; NSNumber* buttonIndex = - [response objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE), operation.intValue); @@ -312,21 +307,21 @@ NewTestBuilder(NotificationHandler::Type::WEB_PERSISTENT); NSUserNotification* notification = [builder buildUserNotification]; - EXPECT_NSEQ( - @NO, [[NotificationResponseBuilder buildActivatedDictionary:notification - fromAlert:NO] - objectForKey:notification_constants::kNotificationIsAlert]); - EXPECT_NSEQ( - @NO, [[NotificationResponseBuilder buildDismissedDictionary:notification - fromAlert:NO] - objectForKey:notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ(@NO, + [NotificationResponseBuilder buildActivatedDictionary:notification + fromAlert:NO] + [notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ(@NO, + [NotificationResponseBuilder buildDismissedDictionary:notification + fromAlert:NO] + [notification_constants::kNotificationIsAlert]); - EXPECT_NSEQ( - @YES, [[NotificationResponseBuilder buildActivatedDictionary:notification - fromAlert:YES] - objectForKey:notification_constants::kNotificationIsAlert]); - EXPECT_NSEQ( - @YES, [[NotificationResponseBuilder buildDismissedDictionary:notification - fromAlert:YES] - objectForKey:notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ(@YES, + [NotificationResponseBuilder buildActivatedDictionary:notification + fromAlert:YES] + [notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ(@YES, + [NotificationResponseBuilder buildDismissedDictionary:notification + fromAlert:YES] + [notification_constants::kNotificationIsAlert]); }
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm index 3e489dd..3b006f6 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm +++ b/chrome/browser/ui/cocoa/notifications/unnotification_builder_mac_unittest.mm
@@ -35,7 +35,7 @@ [builder setIncognito:false]; [builder setCreatorPid:@1]; [builder setShowSettingsButton:NO]; - [builder setNotificationType:[NSNumber numberWithInt:static_cast<int>(type)]]; + [builder setNotificationType:@(static_cast<int>(type))]; return builder; } @@ -72,9 +72,10 @@ base::scoped_nsobject<UNNotificationBuilder> builder = NewTestBuilder(NotificationHandler::Type::WEB_PERSISTENT); UNMutableNotificationContent* content = [builder buildUserNotification]; - EXPECT_EQ("", - base::SysNSStringToUTF8([[content userInfo] - objectForKey:notification_constants::kNotificationOrigin])); + EXPECT_EQ( + "", + base::SysNSStringToUTF8( + [content userInfo][notification_constants::kNotificationOrigin])); } } @@ -84,9 +85,10 @@ NewTestBuilder(NotificationHandler::Type::WEB_PERSISTENT); [builder setOrigin:@"example.co.uk"]; UNMutableNotificationContent* content = [builder buildUserNotification]; - EXPECT_EQ("example.co.uk", - base::SysNSStringToUTF8([[content userInfo] - objectForKey:notification_constants::kNotificationOrigin])); + EXPECT_EQ( + "example.co.uk", + base::SysNSStringToUTF8( + [content userInfo][notification_constants::kNotificationOrigin])); } } @@ -97,25 +99,20 @@ UNMutableNotificationContent* content = [builder buildUserNotification]; NSDictionary* userInfo = [content userInfo]; - EXPECT_EQ("", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationOrigin])); + EXPECT_EQ("", base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationOrigin])); EXPECT_EQ("notificationId", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationId])); - EXPECT_EQ( - "profileId", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationProfileId])); + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationId])); + EXPECT_EQ("profileId", + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationProfileId])); EXPECT_FALSE( - [[userInfo objectForKey:notification_constants::kNotificationIncognito] - boolValue]); - EXPECT_TRUE( - [[userInfo objectForKey:notification_constants::kNotificationCreatorPid] - isEqualToNumber:@1]); - EXPECT_TRUE( - [[userInfo objectForKey:notification_constants::kNotificationType] - isEqualToNumber:@0]); + [userInfo[notification_constants::kNotificationIncognito] boolValue]); + EXPECT_TRUE([userInfo[notification_constants::kNotificationCreatorPid] + isEqualToNumber:@1]); + EXPECT_TRUE([userInfo[notification_constants::kNotificationType] + isEqualToNumber:@0]); } } @@ -133,24 +130,20 @@ NSDictionary* userInfo = [content userInfo]; EXPECT_EQ("neworigin.co.uk", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationOrigin])); + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationOrigin])); EXPECT_EQ("modified id", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationId])); - EXPECT_EQ( - "new profile id", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationProfileId])); + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationId])); + EXPECT_EQ("new profile id", + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationProfileId])); EXPECT_TRUE( - [[userInfo objectForKey:notification_constants::kNotificationIncognito] - boolValue]); - EXPECT_TRUE( - [[userInfo objectForKey:notification_constants::kNotificationCreatorPid] - isEqualToNumber:@1512]); - EXPECT_TRUE( - [[userInfo objectForKey:notification_constants::kNotificationType] - isEqualToNumber:@1]); + [userInfo[notification_constants::kNotificationIncognito] boolValue]); + EXPECT_TRUE([userInfo[notification_constants::kNotificationCreatorPid] + isEqualToNumber:@1512]); + EXPECT_TRUE([userInfo[notification_constants::kNotificationType] + isEqualToNumber:@1]); } } @@ -173,25 +166,20 @@ base::SysNSStringToUTF8([content subtitle])); NSDictionary* userInfo = [content userInfo]; - EXPECT_EQ("", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationOrigin])); + EXPECT_EQ("", base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationOrigin])); EXPECT_EQ("notificationId", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationId])); - EXPECT_EQ( - "profileId", - base::SysNSStringToUTF8([userInfo - objectForKey:notification_constants::kNotificationProfileId])); + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationId])); + EXPECT_EQ("profileId", + base::SysNSStringToUTF8( + userInfo[notification_constants::kNotificationProfileId])); EXPECT_FALSE( - [[userInfo objectForKey:notification_constants::kNotificationIncognito] - boolValue]); - EXPECT_TRUE( - [[userInfo objectForKey:notification_constants::kNotificationCreatorPid] - isEqualToNumber:@1]); - EXPECT_TRUE( - [[userInfo objectForKey:notification_constants::kNotificationType] - isEqualToNumber:@0]); + [userInfo[notification_constants::kNotificationIncognito] boolValue]); + EXPECT_TRUE([userInfo[notification_constants::kNotificationCreatorPid] + isEqualToNumber:@1]); + EXPECT_TRUE([userInfo[notification_constants::kNotificationType] + isEqualToNumber:@0]); } }
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm index 4374b98..2e4cbaac 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm +++ b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.mm
@@ -18,28 +18,24 @@ NSDictionary* userInfo = [[[[response notification] request] content] userInfo]; - NSString* origin = - [userInfo objectForKey:notification_constants::kNotificationOrigin] - ? [userInfo objectForKey:notification_constants::kNotificationOrigin] - : @""; - DCHECK([userInfo objectForKey:notification_constants::kNotificationId]); - NSString* notificationId = - [userInfo objectForKey:notification_constants::kNotificationId]; + NSString* origin = userInfo[notification_constants::kNotificationOrigin] + ? userInfo[notification_constants::kNotificationOrigin] + : @""; + DCHECK(userInfo[notification_constants::kNotificationId]); + NSString* notificationId = userInfo[notification_constants::kNotificationId]; - DCHECK( - [userInfo objectForKey:notification_constants::kNotificationProfileId]); + DCHECK(userInfo[notification_constants::kNotificationProfileId]); NSString* profileId = - [userInfo objectForKey:notification_constants::kNotificationProfileId]; + userInfo[notification_constants::kNotificationProfileId]; NSNumber* creatorPid = - [userInfo objectForKey:notification_constants::kNotificationCreatorPid]; + userInfo[notification_constants::kNotificationCreatorPid]; - DCHECK( - [userInfo objectForKey:notification_constants::kNotificationIncognito]); + DCHECK(userInfo[notification_constants::kNotificationIncognito]); NSNumber* incognito = - [userInfo objectForKey:notification_constants::kNotificationIncognito]; + userInfo[notification_constants::kNotificationIncognito]; NSNumber* notificationType = - [userInfo objectForKey:notification_constants::kNotificationType]; + userInfo[notification_constants::kNotificationType]; int buttonIndex = notification_constants::kNotificationInvalidButtonIndex;
diff --git a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm index f62039b..a567dff 100644 --- a/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm +++ b/chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac_unittest.mm
@@ -31,7 +31,7 @@ [builder setProfileId:@"profileId"]; [builder setIncognito:false]; [builder setCreatorPid:@1]; - [builder setNotificationType:[NSNumber numberWithInt:static_cast<int>(type)]]; + [builder setNotificationType:@(static_cast<int>(type))]; return builder; } @@ -54,7 +54,7 @@ buildDictionary:static_cast<UNNotificationResponse*>(fakeResponse.get()) fromAlert:NO]; NSNumber* creatorPid = - [response objectForKey:notification_constants::kNotificationCreatorPid]; + response[notification_constants::kNotificationCreatorPid]; EXPECT_TRUE([creatorPid isEqualToNumber:@0]); } } @@ -75,9 +75,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; - NSNumber* buttonIndex = [response - objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); @@ -103,9 +103,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; - NSNumber* buttonIndex = [response - objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE), operation.intValue); @@ -132,9 +132,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; - NSNumber* buttonIndex = [response - objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLOSE), operation.intValue); @@ -161,9 +161,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; - NSNumber* buttonIndex = [response - objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_SETTINGS), operation.intValue); @@ -190,9 +190,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; - NSNumber* buttonIndex = [response - objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); @@ -218,9 +218,9 @@ fromAlert:NO]; NSNumber* operation = - [response objectForKey:notification_constants::kNotificationOperation]; - NSNumber* buttonIndex = [response - objectForKey:notification_constants::kNotificationButtonIndex]; + response[notification_constants::kNotificationOperation]; + NSNumber* buttonIndex = + response[notification_constants::kNotificationButtonIndex]; EXPECT_EQ(static_cast<int>(NotificationOperation::NOTIFICATION_CLICK), operation.intValue); @@ -240,14 +240,16 @@ UNNotificationResponse* response = static_cast<UNNotificationResponse*>(fakeResponse.get()); - EXPECT_NSEQ(@NO, - [[UNNotificationResponseBuilder buildDictionary:response - fromAlert:NO] - objectForKey:notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ( + @NO, + [UNNotificationResponseBuilder + buildDictionary:response + fromAlert:NO][notification_constants::kNotificationIsAlert]); - EXPECT_NSEQ(@YES, - [[UNNotificationResponseBuilder buildDictionary:response - fromAlert:YES] - objectForKey:notification_constants::kNotificationIsAlert]); + EXPECT_NSEQ( + @YES, + [UNNotificationResponseBuilder + buildDictionary:response + fromAlert:YES][notification_constants::kNotificationIsAlert]); } }
diff --git a/chrome/browser/ui/cocoa/profiles/profile_menu_controller.h b/chrome/browser/ui/cocoa/profiles/profile_menu_controller.h index 6f056138c..0cde881 100644 --- a/chrome/browser/ui/cocoa/profiles/profile_menu_controller.h +++ b/chrome/browser/ui/cocoa/profiles/profile_menu_controller.h
@@ -33,7 +33,7 @@ } // Designated initializer. -- (id)initWithMainMenuItem:(NSMenuItem*)item; +- (instancetype)initWithMainMenuItem:(NSMenuItem*)item; // Actions for the menu items. - (IBAction)switchToProfileFromMenu:(id)sender;
diff --git a/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm b/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm index bc68beb2..a624e55 100644 --- a/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm +++ b/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm
@@ -86,7 +86,7 @@ @implementation ProfileMenuController -- (id)initWithMainMenuItem:(NSMenuItem*)item { +- (instancetype)initWithMainMenuItem:(NSMenuItem*)item { if ((self = [super init])) { _mainMenuItem = item;
diff --git a/chrome/browser/ui/cocoa/status_icons/status_icon_mac.mm b/chrome/browser/ui/cocoa/status_icons/status_icon_mac.mm index b7493dc..69be5869 100644 --- a/chrome/browser/ui/cocoa/status_icons/status_icon_mac.mm +++ b/chrome/browser/ui/cocoa/status_icons/status_icon_mac.mm
@@ -17,14 +17,14 @@ @interface StatusItemController : NSObject { StatusIconMac* _statusIcon; // weak } -- (id)initWithIcon:(StatusIconMac*)icon; +- (instancetype)initWithIcon:(StatusIconMac*)icon; - (void)handleClick:(id)sender; @end // @interface StatusItemController @implementation StatusItemController -- (id)initWithIcon:(StatusIconMac*)icon { +- (instancetype)initWithIcon:(StatusIconMac*)icon { _statusIcon = icon; return self; }
diff --git a/chrome/browser/ui/cocoa/task_manager_mac.h b/chrome/browser/ui/cocoa/task_manager_mac.h index 0fa4c8d..f6d918a 100644 --- a/chrome/browser/ui/cocoa/task_manager_mac.h +++ b/chrome/browser/ui/cocoa/task_manager_mac.h
@@ -50,8 +50,9 @@ } // Creates and shows the task manager's window. -- (id)initWithTaskManagerMac:(task_manager::TaskManagerMac*)taskManagerMac - tableModel:(task_manager::TaskManagerTableModel*)tableModel; +- (instancetype) + initWithTaskManagerMac:(task_manager::TaskManagerMac*)taskManagerMac + tableModel:(task_manager::TaskManagerTableModel*)tableModel; // Refreshes all data in the task manager table. - (void)reloadData;
diff --git a/chrome/browser/ui/cocoa/task_manager_mac.mm b/chrome/browser/ui/cocoa/task_manager_mac.mm index b007dcd..b62a1cea 100644 --- a/chrome/browser/ui/cocoa/task_manager_mac.mm +++ b/chrome/browser/ui/cocoa/task_manager_mac.mm
@@ -57,8 +57,9 @@ @implementation TaskManagerWindowController -- (id)initWithTaskManagerMac:(task_manager::TaskManagerMac*)taskManagerMac - tableModel:(task_manager::TaskManagerTableModel*)tableModel { +- (instancetype) + initWithTaskManagerMac:(task_manager::TaskManagerMac*)taskManagerMac + tableModel:(task_manager::TaskManagerTableModel*)tableModel { base::scoped_nsobject<NSWindow> window = [self createAndLayOutWindow]; if ((self = [super initWithWindow:window])) { _taskManagerMac = taskManagerMac; @@ -605,7 +606,7 @@ NSSortDescriptor* initialDescriptor = [column sortDescriptorPrototype]; if ([newDescriptor ascending] == [initialDescriptor ascending]) { _withinSortDescriptorsDidChange = YES; - [_tableView setSortDescriptors:[NSArray array]]; + [_tableView setSortDescriptors:@[]]; newDescriptor = nil; _withinSortDescriptorsDidChange = NO; }
diff --git a/chrome/browser/ui/cocoa/task_manager_mac_browsertest.mm b/chrome/browser/ui/cocoa/task_manager_mac_browsertest.mm index 6b7a625..1cde8847 100644 --- a/chrome/browser/ui/cocoa/task_manager_mac_browsertest.mm +++ b/chrome/browser/ui/cocoa/task_manager_mac_browsertest.mm
@@ -138,10 +138,8 @@ EXPECT_EQ(0u, [[table sortDescriptors] count]); NSArray* tableColumns = [table tableColumns]; for (size_t i = 0; i < kColumnsSize; ++i) { - EXPECT_EQ(kColumns[i].id, - [[[tableColumns objectAtIndex:i] identifier] intValue]); - EXPECT_EQ(kColumns[i].default_visibility, - ![[tableColumns objectAtIndex:i] isHidden]); + EXPECT_EQ(kColumns[i].id, [[tableColumns[i] identifier] intValue]); + EXPECT_EQ(kColumns[i].default_visibility, ![tableColumns[i] isHidden]); } } @@ -160,10 +158,8 @@ EXPECT_EQ(0u, [[table sortDescriptors] count]); NSArray* tableColumns = [table tableColumns]; for (size_t i = 0; i < kColumnsSize; ++i) { - EXPECT_EQ(kColumns[i].id, - [[[tableColumns objectAtIndex:i] identifier] intValue]); - EXPECT_EQ(kColumns[i].default_visibility, - ![[tableColumns objectAtIndex:i] isHidden]); + EXPECT_EQ(kColumns[i].id, [[tableColumns[i] identifier] intValue]); + EXPECT_EQ(kColumns[i].default_visibility, ![tableColumns[i] isHidden]); ToggleColumnVisibility(task_manager, kColumns[i].id); }
diff --git a/chrome/browser/ui/cocoa/test/run_loop_testing.mm b/chrome/browser/ui/cocoa/test/run_loop_testing.mm index 64ed994..44d2b717 100644 --- a/chrome/browser/ui/cocoa/test/run_loop_testing.mm +++ b/chrome/browser/ui/cocoa/test/run_loop_testing.mm
@@ -16,12 +16,12 @@ @private base::MessagePumpNSRunLoop* _pump; } -- (id)initWithMessagePump:(base::MessagePumpNSRunLoop*)pump; +- (instancetype)initWithMessagePump:(base::MessagePumpNSRunLoop*)pump; - (void)doQuit; @end @implementation CocoaQuitTask -- (id)initWithMessagePump:(base::MessagePumpNSRunLoop*)pump { +- (instancetype)initWithMessagePump:(base::MessagePumpNSRunLoop*)pump { if ((self = [super init])) { _pump = pump; }
diff --git a/chrome/browser/ui/cocoa/test/run_loop_testing_unittest.mm b/chrome/browser/ui/cocoa/test/run_loop_testing_unittest.mm index 87cf2af..f515284d 100644 --- a/chrome/browser/ui/cocoa/test/run_loop_testing_unittest.mm +++ b/chrome/browser/ui/cocoa/test/run_loop_testing_unittest.mm
@@ -22,7 +22,7 @@ @synthesize didWork = _didWork; @synthesize next = _next; -- (id)init { +- (instancetype)init { if ((self = [super init])) { [self performSelector:@selector(doWork) withObject:nil afterDelay:0]; }
diff --git a/chrome/browser/ui/cocoa/window_size_autosaver.h b/chrome/browser/ui/cocoa/window_size_autosaver.h index 3967eb2..ee3b5445 100644 --- a/chrome/browser/ui/cocoa/window_size_autosaver.h +++ b/chrome/browser/ui/cocoa/window_size_autosaver.h
@@ -26,9 +26,9 @@ const char* _path; } -- (id)initWithWindow:(NSWindow*)window - prefService:(PrefService*)prefs - path:(const char*)path; +- (instancetype)initWithWindow:(NSWindow*)window + prefService:(PrefService*)prefs + path:(const char*)path; @end #endif // CHROME_BROWSER_UI_COCOA_WINDOW_SIZE_AUTOSAVER_H_
diff --git a/chrome/browser/ui/cocoa/window_size_autosaver.mm b/chrome/browser/ui/cocoa/window_size_autosaver.mm index 12f1d12..c86282bb 100644 --- a/chrome/browser/ui/cocoa/window_size_autosaver.mm +++ b/chrome/browser/ui/cocoa/window_size_autosaver.mm
@@ -24,9 +24,9 @@ @implementation WindowSizeAutosaver -- (id)initWithWindow:(NSWindow*)window - prefService:(PrefService*)prefs - path:(const char*)path { +- (instancetype)initWithWindow:(NSWindow*)window + prefService:(PrefService*)prefs + path:(const char*)path { if ((self = [super init])) { _window = window; _prefService = prefs;
diff --git a/chrome/browser/ui/global_media_controls/cast_media_notification_item.cc b/chrome/browser/ui/global_media_controls/cast_media_notification_item.cc index 9ff51b7..fcd507b 100644 --- a/chrome/browser/ui/global_media_controls/cast_media_notification_item.cc +++ b/chrome/browser/ui/global_media_controls/cast_media_notification_item.cc
@@ -249,9 +249,8 @@ CastMediaNotificationItem::ImageDownloader::ImageDownloader( Profile* profile, base::RepeatingCallback<void(const SkBitmap&)> callback) - : url_loader_factory_( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess()), + : url_loader_factory_(profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()), callback_(std::move(callback)) {} CastMediaNotificationItem::ImageDownloader::~ImageDownloader() = default;
diff --git a/chrome/browser/ui/login/login_handler_browsertest.cc b/chrome/browser/ui/login/login_handler_browsertest.cc index c064970..4056801 100644 --- a/chrome/browser/ui/login/login_handler_browsertest.cc +++ b/chrome/browser/ui/login/login_handler_browsertest.cc
@@ -375,7 +375,9 @@ SimulateNetworkServiceCrash(); // Flush the network interface to make sure it notices the crash. - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); } @@ -1466,7 +1468,9 @@ EXPECT_EQ(1, observer.auth_needed_count()); base::RunLoop run_loop; - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->ClearHttpCache(base::Time(), base::Time(), nullptr, run_loop.QuitClosure()); @@ -1523,7 +1527,9 @@ // the same pipe that the pref change uses, making sure the change is applied // before the network process receives credentials, but seems safest to flush // the NetworkContext pipe explicitly. - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); GURL test_page = embedded_test_server()->GetURL(kAuthBasicPage); @@ -1553,7 +1559,9 @@ EXPECT_EQ(1, observer.auth_needed_count()); base::RunLoop run_loop; - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->ClearHttpCache(base::Time(), base::Time(), nullptr, run_loop.QuitClosure()); @@ -1841,7 +1849,9 @@ if (crash_network_service && content::IsOutOfProcessNetworkService()) { SimulateNetworkServiceCrash(); // Flush the network interface to make sure it notices the crash. - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->FlushNetworkInterfaceForTesting(); }
diff --git a/chrome/browser/ui/login/login_tab_helper.cc b/chrome/browser/ui/login/login_tab_helper.cc index b15a43d5..f7f8a1ef 100644 --- a/chrome/browser/ui/login/login_tab_helper.cc +++ b/chrome/browser/ui/login/login_tab_helper.cc
@@ -223,8 +223,7 @@ if (credentials.has_value()) { content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - web_contents()->GetBrowserContext(), + web_contents()->GetBrowserContext()->GetStoragePartition( web_contents()->GetSiteInstance()); // Pass a weak pointer for the callback, as the WebContents (and thus this // LoginTabHelper) could be destroyed while the network service is
diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc index 16ddb9f..b1aa610 100644 --- a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc +++ b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc
@@ -182,8 +182,8 @@ if (loader_factory_for_testing_) { loader_factory = loader_factory_for_testing_.get(); } else { - loader_factory = content::BrowserContext::GetDefaultStoragePartition( - controller->GetBrowserContext()) + loader_factory = controller->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); }
diff --git a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc index e999342..b14570f 100644 --- a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc +++ b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
@@ -12,6 +12,7 @@ #include "base/run_loop.h" #include "base/scoped_observer.h" #include "base/stl_util.h" +#include "base/strings/strcat.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_task_runner_handle.h" @@ -68,14 +69,14 @@ namespace { -const char kSearchKeyword[] = "foo"; -const char kSearchKeyword2[] = "footest.com"; +const char16_t kSearchKeyword[] = u"foo"; +const char16_t kSearchKeyword2[] = u"footest.com"; const ui::KeyboardCode kSearchKeywordKeys[] = { ui::VKEY_F, ui::VKEY_O, ui::VKEY_O, ui::VKEY_UNKNOWN }; const char kSearchURL[] = "http://www.foo.com/search?q={searchTerms}"; -const char kSearchShortName[] = "foo"; -const char kSearchText[] = "abc"; +const char16_t kSearchShortName[] = u"foo"; +const char16_t kSearchText[] = u"abc"; const ui::KeyboardCode kSearchTextKeys[] = { ui::VKEY_A, ui::VKEY_B, ui::VKEY_C, ui::VKEY_UNKNOWN }; @@ -266,13 +267,13 @@ ASSERT_TRUE(model->loaded()); TemplateURLData data; - data.SetShortName(ASCIIToUTF16(kSearchShortName)); - data.SetKeyword(ASCIIToUTF16(kSearchKeyword)); + data.SetShortName(kSearchShortName); + data.SetKeyword(kSearchKeyword); data.SetURL(kSearchURL); TemplateURL* template_url = model->Add(std::make_unique<TemplateURL>(data)); model->SetUserSelectedDefaultSearchProvider(template_url); - data.SetKeyword(ASCIIToUTF16(kSearchKeyword2)); + data.SetKeyword(kSearchKeyword2); model->Add(std::make_unique<TemplateURL>(data)); // Remove built-in template urls, like google.com, bing.com etc., as they @@ -481,22 +482,22 @@ // Trigger keyword hint mode. ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); // Trigger keyword mode. ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); // Backspace without search text should bring back keyword hint mode. ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); // Trigger keyword mode again. ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); // Input something as search text. ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); @@ -506,7 +507,7 @@ for (size_t i = 0; i < base::size(kSearchText) - 1; ++i) { ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); } // Input something as search text. @@ -526,12 +527,12 @@ // persist as long as the entry begins with a keyword. if (OmniboxFieldTrial::IsKeywordSearchButtonEnabled()) { ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); } else { ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); ASSERT_EQ(std::u16string(), omnibox_view->model()->keyword()); - ASSERT_EQ(std::string(kSearchKeyword) + ' ' + kSearchText, - UTF16ToUTF8(omnibox_view->GetText())); + ASSERT_EQ(base::StrCat({kSearchKeyword, u" ", kSearchText}), + omnibox_view->GetText()); } } @@ -572,7 +573,7 @@ // can set "abc" as temporary text in the omnibox. TemplateURLData data; data.SetShortName(u"abc"); - data.SetKeyword(ASCIIToUTF16(kSearchText)); + data.SetKeyword(kSearchText); data.SetURL("http://abc.com/"); template_url_service->Add(std::make_unique<TemplateURL>(data)); @@ -840,7 +841,8 @@ OmniboxView* omnibox_view = NULL; ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view)); - ASSERT_GT(strlen(url::kAboutBlankURL), strlen(kSearchKeyword)); + ASSERT_GT(strlen(url::kAboutBlankURL), + std::char_traits<char16_t>::length(kSearchKeyword)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); // Make sure nothing DCHECKs. @@ -852,7 +854,7 @@ OmniboxView* omnibox_view = NULL; ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view)); - std::u16string search_keyword(ASCIIToUTF16(kSearchKeyword)); + std::u16string search_keyword(kSearchKeyword); // If the user gets into keyword mode by typing '?', they should be put into // keyword mode for their default search provider. @@ -906,7 +908,7 @@ // Add a non-default substituting keyword. TemplateURLData data; data.SetShortName(u"Search abc"); - data.SetKeyword(ASCIIToUTF16(kSearchText)); + data.SetKeyword(kSearchText); data.SetURL("http://abc.com/{searchTerms}"); TemplateURL* template_url = template_url_service->Add(std::make_unique<TemplateURL>(data)); @@ -1048,7 +1050,7 @@ OmniboxView* omnibox_view = NULL; ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view)); - std::u16string text = ASCIIToUTF16(kSearchKeyword); + std::u16string text = kSearchKeyword; // Trigger keyword hint mode. ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); @@ -1092,12 +1094,12 @@ // Trigger keyword hint mode. ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); // Trigger keyword mode. ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); // Create a new tab. chrome::NewTab(browser()); @@ -1108,7 +1110,7 @@ // Make sure we're still in keyword mode. ASSERT_TRUE(omnibox_view->model()->is_keyword_selected()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); ASSERT_EQ(omnibox_view->GetText(), std::u16string()); // Input something as search text. @@ -1122,8 +1124,8 @@ // Make sure we're still in keyword mode. ASSERT_TRUE(omnibox_view->model()->is_keyword_selected()); - ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(omnibox_view->model()->keyword())); - ASSERT_EQ(omnibox_view->GetText(), base::ASCIIToUTF16(kSearchText)); + ASSERT_EQ(kSearchKeyword, omnibox_view->model()->keyword()); + ASSERT_EQ(omnibox_view->GetText(), kSearchText); } IN_PROC_BROWSER_TEST_F(OmniboxViewTest, @@ -1270,10 +1272,10 @@ EXPECT_FALSE(popup_model->IsOpen()); // Paste should yield the expected text and open the popup. - SetClipboardText(ASCIIToUTF16(kSearchText)); + SetClipboardText(kSearchText); ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_V, kCtrlOrCmdMask)); ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); - EXPECT_EQ(ASCIIToUTF16(kSearchText), omnibox_view->GetText()); + EXPECT_EQ(kSearchText, omnibox_view->GetText()); EXPECT_TRUE(popup_model->IsOpen()); // Close the popup and select all. @@ -1284,7 +1286,7 @@ // Pasting the same text again over itself should re-open the popup. ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_V, kCtrlOrCmdMask)); ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); - EXPECT_EQ(ASCIIToUTF16(kSearchText), omnibox_view->GetText()); + EXPECT_EQ(kSearchText, omnibox_view->GetText()); EXPECT_TRUE(popup_model->IsOpen()); omnibox_view->CloseOmniboxPopup(); EXPECT_FALSE(popup_model->IsOpen());
diff --git a/chrome/browser/ui/page_info/DEPS b/chrome/browser/ui/page_info/DEPS new file mode 100644 index 0000000..dc05027 --- /dev/null +++ b/chrome/browser/ui/page_info/DEPS
@@ -0,0 +1,6 @@ +specific_include_rules = { + # Allow access from test file. + "page_info_unittest\.cc": [ + "+chrome/browser/ui/views", + ] +}
diff --git a/chrome/browser/ui/page_info/page_info_unittest.cc b/chrome/browser/ui/page_info/page_info_unittest.cc index 33c8b152..0f09d86e 100644 --- a/chrome/browser/ui/page_info/page_info_unittest.cc +++ b/chrome/browser/ui/page_info/page_info_unittest.cc
@@ -19,7 +19,7 @@ #include "build/chromeos_buildflags.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/page_specific_content_settings_delegate.h" -#include "chrome/browser/infobars/mock_infobar_service.h" +#include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/ssl/stateful_ssl_host_state_delegate_factory.h" #include "chrome/browser/ssl/tls_deprecation_test_utils.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" @@ -66,6 +66,7 @@ #include "chrome/browser/android/android_theme_resources.h" #else #include "base/test/scoped_feature_list.h" +#include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/common/pref_names.h" #include "components/prefs/pref_service.h" #include "media/base/media_switches.h" @@ -138,7 +139,7 @@ net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); ASSERT_TRUE(cert_); - MockInfoBarService::CreateForWebContents(web_contents()); + InfoBarService::CreateForWebContents(web_contents()); content_settings::PageSpecificContentSettings::CreateForWebContents( web_contents(), std::make_unique<chrome::PageSpecificContentSettingsDelegate>( @@ -271,6 +272,10 @@ std::unique_ptr<PageInfo> incognito_page_info_; std::unique_ptr<MockPageInfoUI> incognito_mock_ui_; +#if !defined(OS_ANDROID) + ChromeLayoutProvider layout_provider_; +#endif + scoped_refptr<net::X509Certificate> cert_; GURL url_; url::Origin origin_;
diff --git a/chrome/browser/ui/passwords/bubble_controllers/auto_sign_in_bubble_controller_unittest.cc b/chrome/browser/ui/passwords/bubble_controllers/auto_sign_in_bubble_controller_unittest.cc index 16f5d523..7a655da 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/auto_sign_in_bubble_controller_unittest.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/auto_sign_in_bubble_controller_unittest.cc
@@ -18,8 +18,8 @@ namespace { constexpr char kSiteOrigin[] = "http://example.com/login/"; -constexpr char kUsername[] = "Admin"; -constexpr char kPassword[] = "AdminPass"; +constexpr char16_t kUsername[] = u"Admin"; +constexpr char16_t kPassword[] = u"AdminPass"; constexpr char kUIDismissalReasonGeneralMetric[] = "PasswordManager.UIDismissalReason"; @@ -34,8 +34,8 @@ .WillByDefault(Return(nullptr)); pending_password_.url = GURL(kSiteOrigin); pending_password_.signon_realm = kSiteOrigin; - pending_password_.username_value = base::ASCIIToUTF16(kUsername); - pending_password_.password_value = base::ASCIIToUTF16(kPassword); + pending_password_.username_value = kUsername; + pending_password_.password_value = kPassword; } ~AutoSignInBubbleControllerTest() override = default;
diff --git a/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc b/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc index 047a84f..30aed0b 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc
@@ -41,6 +41,7 @@ #include "testing/gtest/include/gtest/gtest.h" using ::testing::_; +using ::testing::Eq; using ::testing::Return; using ::testing::ReturnRef; @@ -49,11 +50,11 @@ constexpr ukm::SourceId kTestSourceId = 0x1234; constexpr char kSiteOrigin[] = "http://example.com/login"; -constexpr char kUsername[] = "Admin"; -constexpr char kUsernameExisting[] = "User"; -constexpr char kUsernameNew[] = "User585"; -constexpr char kPassword[] = "AdminPass"; -constexpr char kPasswordEdited[] = "asDfjkl;"; +constexpr char16_t kUsername[] = u"Admin"; +constexpr char16_t kUsernameExisting[] = u"User"; +constexpr char16_t kUsernameNew[] = u"User585"; +constexpr char16_t kPassword[] = u"AdminPass"; +constexpr char16_t kPasswordEdited[] = u"asDfjkl;"; constexpr char kUIDismissalReasonGeneralMetric[] = "PasswordManager.UIDismissalReason"; constexpr char kUIDismissalReasonSaveMetric[] = @@ -97,8 +98,8 @@ profile(), base::BindRepeating(&BuildTestSyncService)); pending_password_.url = GURL(kSiteOrigin); pending_password_.signon_realm = kSiteOrigin; - pending_password_.username_value = base::ASCIIToUTF16(kUsername); - pending_password_.password_value = base::ASCIIToUTF16(kPassword); + pending_password_.username_value = kUsername; + pending_password_.password_value = kPassword; } void TearDown() override { @@ -230,7 +231,7 @@ SaveUpdateWithAccountStoreBubbleControllerTest::GetTestStats() { password_manager::InteractionsStats result; result.origin_domain = GURL(kSiteOrigin).GetOrigin(); - result.username_value = base::ASCIIToUTF16(kUsername); + result.username_value = kUsername; result.dismissal_count = 5; result.update_time = base::Time::FromTimeT(1); return result; @@ -239,7 +240,7 @@ std::vector<std::unique_ptr<password_manager::PasswordForm>> SaveUpdateWithAccountStoreBubbleControllerTest::GetCurrentForms() const { password_manager::PasswordForm form(pending_password()); - form.username_value = base::ASCIIToUTF16(kUsernameExisting); + form.username_value = kUsernameExisting; form.password_value = u"123456"; password_manager::PasswordForm preferred_form(pending_password()); @@ -387,13 +388,11 @@ PretendUpdatePasswordWaiting(); // Edit username, now it's a new credential. - controller()->OnCredentialEdited(base::ASCIIToUTF16(kUsernameNew), - base::ASCIIToUTF16(kPasswordEdited)); + controller()->OnCredentialEdited(kUsernameNew, kPasswordEdited); EXPECT_FALSE(controller()->IsCurrentStateUpdate()); EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); - EXPECT_CALL(*delegate(), SavePassword(base::ASCIIToUTF16(kUsernameNew), - base::ASCIIToUTF16(kPasswordEdited))); + EXPECT_CALL(*delegate(), SavePassword(Eq(kUsernameNew), Eq(kPasswordEdited))); EXPECT_CALL(*delegate(), NeverSavePassword()).Times(0); EXPECT_CALL(*delegate(), OnNopeUpdateClicked()).Times(0); controller()->OnSaveClicked(); @@ -432,13 +431,12 @@ PretendPasswordWaiting(); // Edit username, now it's an existing credential. - controller()->OnCredentialEdited(base::ASCIIToUTF16(kUsernameExisting), - base::ASCIIToUTF16(kPasswordEdited)); + controller()->OnCredentialEdited(kUsernameExisting, kPasswordEdited); EXPECT_TRUE(controller()->IsCurrentStateUpdate()); EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); - EXPECT_CALL(*delegate(), SavePassword(base::ASCIIToUTF16(kUsernameExisting), - base::ASCIIToUTF16(kPasswordEdited))); + EXPECT_CALL(*delegate(), + SavePassword(Eq(kUsernameExisting), Eq(kPasswordEdited))); EXPECT_CALL(*delegate(), NeverSavePassword()).Times(0); EXPECT_CALL(*delegate(), OnNopeUpdateClicked()).Times(0); controller()->OnSaveClicked(); @@ -448,8 +446,7 @@ TEST_F(SaveUpdateWithAccountStoreBubbleControllerTest, GetInitialUsername_MatchedUsername) { PretendUpdatePasswordWaiting(); - EXPECT_EQ(base::UTF8ToUTF16(kUsername), - controller()->pending_password().username_value); + EXPECT_EQ(kUsername, controller()->pending_password().username_value); } TEST_F(SaveUpdateWithAccountStoreBubbleControllerTest, EditCredential) {
diff --git a/chrome/browser/ui/passwords/credential_manager_dialog_controller_impl_unittest.cc b/chrome/browser/ui/passwords/credential_manager_dialog_controller_impl_unittest.cc index 9c3a74e7..aee4b0e 100644 --- a/chrome/browser/ui/passwords/credential_manager_dialog_controller_impl_unittest.cc +++ b/chrome/browser/ui/passwords/credential_manager_dialog_controller_impl_unittest.cc
@@ -29,8 +29,8 @@ using testing::Pointee; using testing::StrictMock; -const char kUsername[] = "user1"; -const char kUsername2[] = "user2"; +const char16_t kUsername[] = u"user1"; +const char16_t kUsername2[] = u"user2"; class MockPasswordPrompt : public AccountChooserPrompt, public AutoSigninFirstRunPrompt { @@ -47,7 +47,7 @@ password_manager::PasswordForm GetLocalForm() { password_manager::PasswordForm form; - form.username_value = base::ASCIIToUTF16(kUsername); + form.username_value = kUsername; form.url = GURL("http://example.com"); return form; } @@ -77,7 +77,7 @@ StrictMock<MockPasswordPrompt> prompt; password_manager::PasswordForm local_form = GetLocalForm(); password_manager::PasswordForm local_form2 = local_form; - local_form2.username_value = base::ASCIIToUTF16(kUsername2); + local_form2.username_value = kUsername2; std::vector<std::unique_ptr<password_manager::PasswordForm>> locals; locals.push_back( std::make_unique<password_manager::PasswordForm>(local_form));
diff --git a/chrome/browser/ui/passwords/manage_passwords_test.cc b/chrome/browser/ui/passwords/manage_passwords_test.cc index 1a0cda6e..665f4a5 100644 --- a/chrome/browser/ui/passwords/manage_passwords_test.cc +++ b/chrome/browser/ui/passwords/manage_passwords_test.cc
@@ -42,7 +42,7 @@ using testing::ReturnRef; namespace { -constexpr char kTestUsername[] = "test_username"; +constexpr char16_t kTestUsername[] = u"test_username"; constexpr char kTestOrigin[] = "https://www.example.com"; } // namespace @@ -51,7 +51,7 @@ password_form_.signon_realm = kTestOrigin; password_form_.url = GURL(kTestOrigin); - password_form_.username_value = ASCIIToUTF16(kTestUsername); + password_form_.username_value = kTestUsername; password_form_.password_value = u"test_password"; federated_form_.signon_realm = @@ -156,7 +156,7 @@ ServiceAccessType::IMPLICIT_ACCESS); // This is an unrelated insecure credential that should still be fixed. password_manager::InsecureCredential credential( - "https://somesite.com/", ASCIIToUTF16(kTestUsername), base::Time(), + "https://somesite.com/", kTestUsername, base::Time(), password_manager::InsecureType::kLeaked, password_manager::IsMuted(false)); password_store->AddInsecureCredential(credential);
diff --git a/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc b/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc index e407b17..2fb06b99 100644 --- a/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc +++ b/chrome/browser/ui/passwords/settings/password_manager_presenter_unittest.cc
@@ -65,6 +65,7 @@ constexpr char kUsername2[] = "user2"; #if !defined(OS_ANDROID) constexpr char kHistogramName[] = "PasswordManager.AccessPasswordInSettings"; +constexpr char16_t kPassword16[] = u"pass"; #endif MATCHER(IsNotBlocked, "") { return !arg->blocked_by_user; @@ -350,8 +351,7 @@ UpdatePasswordLists(); base::MockOnceCallback<void(base::Optional<std::u16string>)> password_callback; - EXPECT_CALL(password_callback, - Run(testing::Eq(base::ASCIIToUTF16(kPassword)))); + EXPECT_CALL(password_callback, Run(testing::Eq(kPassword16))); std::string sort_key = password_manager::CreateSortKey(form); GetUIController().GetPasswordManagerPresenter()->RequestPlaintextPassword( sort_key, password_manager::PlaintextReason::kView, @@ -372,8 +372,7 @@ UpdatePasswordLists(); base::MockOnceCallback<void(base::Optional<std::u16string>)> password_callback; - EXPECT_CALL(password_callback, - Run(testing::Eq(base::ASCIIToUTF16(kPassword)))); + EXPECT_CALL(password_callback, Run(testing::Eq(kPassword16))); std::string sort_key = password_manager::CreateSortKey(form); GetUIController().GetPasswordManagerPresenter()->RequestPlaintextPassword( sort_key, password_manager::PlaintextReason::kEdit,
diff --git a/chrome/browser/ui/passwords/well_known_change_password_navigation_throttle.cc b/chrome/browser/ui/passwords/well_known_change_password_navigation_throttle.cc index f72dd99..62b62f1d 100644 --- a/chrome/browser/ui/passwords/well_known_change_password_navigation_throttle.cc +++ b/chrome/browser/ui/passwords/well_known_change_password_navigation_throttle.cc
@@ -128,10 +128,11 @@ NavigationThrottle::ThrottleCheckResult WellKnownChangePasswordNavigationThrottle::WillStartRequest() { - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition( - navigation_handle()->GetWebContents()->GetBrowserContext()) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = navigation_handle() + ->GetWebContents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); // In order to avoid bypassing Sec-Fetch-Site headers and extracting user data // across redirects, we need to set both the initiator origin and network // isolation key when fetching the well-known non-existing resource.
diff --git a/chrome/browser/ui/profile_picker.h b/chrome/browser/ui/profile_picker.h index 32b3ddc2..8dffa545 100644 --- a/chrome/browser/ui/profile_picker.h +++ b/chrome/browser/ui/profile_picker.h
@@ -85,21 +85,6 @@ // for the sign-in flow. static void CancelSignIn(); - // Finishes the sign-in flow by moving to the sync confirmation screen. It - // uses the same new profile created by `SwitchToSignIn()`. - static void SwitchToSyncConfirmation(); - - // Finishes the sign-in flow by moving to the enterprise profile welcome - // screen. It uses the same new profile created by `SwitchToSignIn()`. - static void SwitchToEnterpriseProfileWelcome( - EnterpriseProfileWelcomeUI::ScreenType type, - base::OnceCallback<void(bool)> proceed_callback); - - // When the sign-in flow cannot be completed because another profile at - // `profile_path` is already syncing with a chosen account, shows the profile - // switch screen. It uses the system profile. - static void SwitchToProfileSwitch(const base::FilePath& profile_path); - // Shows a dialog where the user can auth the profile or see the // auth error message. If a dialog is already shown, this destroys the current // dialog and creates a new one.
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc index 1c4e80b..2c44db5 100644 --- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc +++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -588,7 +588,7 @@ // Now that a restore is no longer possible, it is safe to clear DOM storage, // unless this is a crash recovery. if (!is_post_crash_launch) { - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetDOMStorageContext() ->StartScavengingUnusedSessionStorage(); }
diff --git a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc index a1633c8..177d509 100644 --- a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc +++ b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc
@@ -132,7 +132,7 @@ class SaveCardBubbleViewsFullFormBrowserTest : public SyncTest, - public AutofillHandler::ObserverForTest, + public AutofillManager::ObserverForTest, public CreditCardSaveManager::ObserverForTest, public SaveCardBubbleControllerImpl::ObserverForTest { protected: @@ -226,11 +226,11 @@ AddEventObserverToController(); // Set up this class as the ObserverForTest implementation. - AutofillHandler* autofill_handler = + AutofillManager* autofill_manager = ContentAutofillDriver::GetForRenderFrameHost( GetActiveWebContents()->GetMainFrame()) - ->autofill_handler(); - autofill_handler->SetEventObserverForTesting(this); + ->autofill_manager(); + autofill_manager->SetEventObserverForTesting(this); // Set up the fake geolocation data. geolocation_overrider_ = @@ -238,7 +238,7 @@ kFakeGeolocationLatitude, kFakeGeolocationLongitude); } - // AutofillHandler::ObserverForTest: + // AutofillManager::ObserverForTest: void OnFormParsed() override { if (event_waiter_) event_waiter_->OnEvent(DialogEvent::DYNAMIC_FORM_PARSED);
diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc index dd14a35..5f517bef 100644 --- a/chrome/browser/ui/views/frame/browser_frame.cc +++ b/chrome/browser/ui/views/frame/browser_frame.cc
@@ -29,6 +29,7 @@ #include "chrome/browser/ui/views/frame/system_menu_model_builder.h" #include "chrome/browser/ui/views/frame/top_container_view.h" #include "chrome/browser/ui/web_applications/app_browser_controller.h" +#include "chrome/common/chrome_features.h" #include "chrome/common/chrome_switches.h" #include "ui/base/hit_test.h" #include "ui/events/event_handler.h" @@ -337,10 +338,21 @@ // Select between regular, dark and GTK theme. ui::NativeTheme* native_theme = ui::NativeTheme::GetInstanceForNativeUi(); - if (browser_view_->browser()->profile()->IsIncognitoProfile() && - ThemeServiceFactory::GetForProfile(browser_view_->browser()->profile()) - ->UsingDefaultTheme()) { - native_theme = ui::NativeTheme::GetInstanceForDarkUI(); + if (browser_view_->browser()->profile()->IsIncognitoProfile()) { + // If the flag is enabled, then no matter if we are using the default theme + // or not we always use the dark ui instance. + if (base::FeatureList::IsEnabled( + features::kIncognitoBrandConsistencyForDesktop)) { + SetNativeTheme(ui::NativeTheme::GetInstanceForDarkUI()); + return; + } + + // Flag is disabled, fallback to using dark theme only if the incognito + // profile is using a default theme. + if (ThemeServiceFactory::GetForProfile(browser_view_->browser()->profile()) + ->UsingDefaultTheme()) { + native_theme = ui::NativeTheme::GetInstanceForDarkUI(); + } } #if defined(OS_LINUX) || defined(IS_CHROMEOS_LACROS)
diff --git a/chrome/browser/ui/views/frame/browser_frame_ash.cc b/chrome/browser/ui/views/frame/browser_frame_ash.cc index 00c43374..0b87abd 100644 --- a/chrome/browser/ui/views/frame/browser_frame_ash.cc +++ b/chrome/browser/ui/views/frame/browser_frame_ash.cc
@@ -7,6 +7,7 @@ #include <memory> #include "ash/public/cpp/app_types.h" +#include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/window_properties.h" #include "ash/shell.h" #include "ash/wm/window_properties.h" @@ -15,6 +16,7 @@ #include "ash/wm/window_util.h" #include "base/macros.h" #include "build/build_config.h" +#include "chrome/browser/lifetime/browser_shutdown.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/views/frame/browser_view.h" @@ -111,17 +113,37 @@ void BrowserFrameAsh::GetWindowPlacement( gfx::Rect* bounds, ui::WindowShowState* show_state) const { - gfx::Rect* override_bounds = GetWidget()->GetNativeWindow()->GetProperty( - ash::kRestoreBoundsOverrideKey); + aura::Window* window = GetWidget()->GetNativeWindow(); + gfx::Rect* override_bounds = + window->GetProperty(ash::kRestoreBoundsOverrideKey); if (override_bounds && !override_bounds->IsEmpty()) { *bounds = *override_bounds; - *show_state = - chromeos::ToWindowShowState(GetWidget()->GetNativeWindow()->GetProperty( - ash::kRestoreWindowStateTypeOverrideKey)); + *show_state = chromeos::ToWindowShowState( + window->GetProperty(ash::kRestoreWindowStateTypeOverrideKey)); } else { - *bounds = GetWidget()->GetRestoredBounds(); - *show_state = GetWidget()->GetNativeWindow()->GetProperty( - aura::client::kShowStateKey); + // Snapped state is a ash only state which is normally not restored except + // when the full restore feature is turned on. `Widget::GetRestoreBounds()` + // will not return the restore bounds for a snapped window because to + // Widget/NativeWidgetAura the window is a normal window, so get the restore + // bounds directly from the ash window state. + bool used_window_state_restore_bounds = false; + if (ash::features::IsFullRestoreEnabled()) { + auto* window_state = ash::WindowState::Get(window); + if (window_state->IsSnapped() && window_state->HasRestoreBounds()) { + // Additionally, if the window is closed, and not from logging out we + // want to use the regular restore bounds, otherwise the next time the + // user opens a window it will be in a different place than closed, + // since session restore does not restore ash snapped state. + if (browser_shutdown::IsTryingToQuit() || !GetWidget()->IsClosed()) { + used_window_state_restore_bounds = true; + *bounds = window_state->GetRestoreBoundsInScreen(); + } + } + } + + if (!used_window_state_restore_bounds) + *bounds = GetWidget()->GetRestoredBounds(); + *show_state = window->GetProperty(aura::client::kShowStateKey); } // Session restore might be unable to correctly restore other states.
diff --git a/chrome/browser/ui/views/frame/browser_frame_ash_browsertest.cc b/chrome/browser/ui/views/frame/browser_frame_ash_browsertest.cc index f2611b26..299cf4ab 100644 --- a/chrome/browser/ui/views/frame/browser_frame_ash_browsertest.cc +++ b/chrome/browser/ui/views/frame/browser_frame_ash_browsertest.cc
@@ -4,6 +4,8 @@ #include "chrome/browser/ui/views/frame/browser_frame_ash.h" +#include "ash/wm/window_state.h" +#include "ash/wm/wm_event.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/views/frame/browser_view.h" @@ -78,6 +80,33 @@ << (is_test_app ? "for app window" : "for tabbed browser window"); } +using BrowserFrameAshTest = InProcessBrowserTest; + +// Tests that the correct bounds are being saved when a snapped window is +// closed. +IN_PROC_BROWSER_TEST_F(BrowserFrameAshTest, SnappedWindowSaveBounds) { + aura::Window* window = browser()->window()->GetNativeWindow(); + const gfx::Rect restored_bounds(200, 200); + window->SetBounds(restored_bounds); + + // Snap the window to the left. + const ash::WMEvent left_snap_event(ash::WM_EVENT_SNAP_LEFT); + ash::WindowState::Get(window)->OnWMEvent(&left_snap_event); + const gfx::Size snapped_size = window->GetBoundsInScreen().size(); + + // Get the params using the same profile. + Browser::CreateParams params = + Browser::CreateParams(browser()->profile(), /*user_gesture=*/true); + browser()->window()->Close(); + + // Recreate the browser window. Test that the bounds are the same as the + // snapped size (position has been shifted by the ash auto window positioner). + Browser* browser = Browser::Create(params); + browser->window()->Show(); + aura::Window* new_window = browser->window()->GetNativeWindow(); + EXPECT_EQ(snapped_size, new_window->GetBoundsInScreen().size()); +} + INSTANTIATE_TEST_SUITE_P(BrowserTestTabbedOrApp, BrowserTestParam, testing::Bool());
diff --git a/chrome/browser/ui/views/location_bar/permission_chip.cc b/chrome/browser/ui/views/location_bar/permission_chip.cc index 664f4e2..6fc7f88 100644 --- a/chrome/browser/ui/views/location_bar/permission_chip.cc +++ b/chrome/browser/ui/views/location_bar/permission_chip.cc
@@ -114,6 +114,7 @@ void PermissionChip::FinalizeRequest() { SetVisible(false); + chip_button_->ResetAnimation(); collapse_timer_.AbandonAndStop(); dismiss_timer_.AbandonAndStop(); delegate_ = nullptr;
diff --git a/chrome/browser/ui/views/media_router/presentation_receiver_window_view.cc b/chrome/browser/ui/views/media_router/presentation_receiver_window_view.cc index e58f902..839e83b 100644 --- a/chrome/browser/ui/views/media_router/presentation_receiver_window_view.cc +++ b/chrome/browser/ui/views/media_router/presentation_receiver_window_view.cc
@@ -149,6 +149,10 @@ auto* const web_contents = GetWebContents(); DCHECK(web_contents); + // InfoBarService comes before common tab helpers since + // ContentSubresourceFilterThrottleManager has it as a dependency. + InfoBarService::CreateForWebContents(web_contents); + SecurityStateTabHelper::CreateForWebContents(web_contents); ChromeTranslateClient::CreateForWebContents(web_contents); autofill::ChromeAutofillClient::CreateForWebContents(web_contents); @@ -165,7 +169,6 @@ TabDialogs::CreateForWebContents(web_contents); FramebustBlockTabHelper::CreateForWebContents(web_contents); CreateSubresourceFilterThrottleManagerForWebContents(web_contents); - InfoBarService::CreateForWebContents(web_contents); MixedContentSettingsTabHelper::CreateForWebContents(web_contents); blocked_content::PopupBlockerTabHelper::CreateForWebContents(web_contents); content_settings::PageSpecificContentSettings::CreateForWebContents(
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc index 85a2948..3c4a045f 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
@@ -1084,8 +1084,8 @@ omnibox_textfield()->OnFocus(); omnibox_view()->OnInlineAutocompleteTextMaybeChanged( - base::ASCIIToUTF16("user text. Followed by very long autocompleted text " - "that is unlikely to fit in |kOmniboxWidth|"), + u"user text. Followed by very long autocompleted text that is unlikely " + u"to fit in |kOmniboxWidth|", {{94, 10}}, 10); // NOTE: Technically (depending on the font), this expectation could fail if
diff --git a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc index 55600e3..ae29d81d 100644 --- a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc +++ b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc
@@ -119,8 +119,8 @@ &AccountChooserDialogView::CredentialsItemPressed, base::Unretained(this), base::Unretained(form.get())), titles.first, titles.second, form.get(), - content::BrowserContext::GetDefaultStoragePartition( - Profile::FromBrowserContext(web_contents_->GetBrowserContext())) + web_contents_->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get())); credential_view->SetStoreIndicatorIcon(form->in_store);
diff --git a/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc b/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc index b9a3958..8c0ed78 100644 --- a/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc +++ b/chrome/browser/ui/views/passwords/password_auto_sign_in_view.cc
@@ -47,8 +47,8 @@ views::Button::PressedCallback(), l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_AUTO_SIGNIN_TITLE_MD), form.username_value, &form, - content::BrowserContext::GetDefaultStoragePartition( - controller_.GetProfile()) + controller_.GetProfile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), views::style::STYLE_HINT, views::style::STYLE_PRIMARY));
diff --git a/chrome/browser/ui/views/passwords/password_save_update_view.cc b/chrome/browser/ui/views/passwords/password_save_update_view.cc index 32a4b87b..96bbfddb 100644 --- a/chrome/browser/ui/views/passwords/password_save_update_view.cc +++ b/chrome/browser/ui/views/passwords/password_save_update_view.cc
@@ -267,8 +267,8 @@ AddChildView(std::make_unique<CredentialsItemView>( views::Button::PressedCallback(), titles.first, titles.second, &password_form, - content::BrowserContext::GetDefaultStoragePartition( - controller_.GetProfile()) + controller_.GetProfile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get())) ->SetEnabled(false);
diff --git a/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc b/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc index dad5fea..84e09fb 100644 --- a/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc +++ b/chrome/browser/ui/views/passwords/password_save_update_with_account_store_view.cc
@@ -365,8 +365,8 @@ AddChildView(std::make_unique<CredentialsItemView>( views::Button::PressedCallback(), titles.first, titles.second, &password_form, - content::BrowserContext::GetDefaultStoragePartition( - controller_.GetProfile()) + controller_.GetProfile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get())) ->SetEnabled(false);
diff --git a/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc b/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc index 55b3e308..0e88968c 100644 --- a/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc +++ b/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc
@@ -57,8 +57,8 @@ frame_routing_id_( web_contents->GetMainFrame()->GetGlobalFrameRoutingId()), payments_client_( - content::BrowserContext::GetDefaultStoragePartition( - web_contents->GetBrowserContext()) + web_contents->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), IdentityManagerFactory::GetForProfile( Profile::FromBrowserContext(web_contents->GetBrowserContext())
diff --git a/chrome/browser/ui/views/payments/payment_handler_icon_refetch_browsertest.cc b/chrome/browser/ui/views/payments/payment_handler_icon_refetch_browsertest.cc index 3f613aeb..a9cd7a35 100644 --- a/chrome/browser/ui/views/payments/payment_handler_icon_refetch_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_handler_icon_refetch_browsertest.cc
@@ -43,7 +43,7 @@ content::BrowserContext* context = GetActiveWebContents()->GetBrowserContext(); auto downloader = std::make_unique<TestDownloader>( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); downloader->AddTestServerURL("https://kylepay.com/", kylepay_server_.GetURL("kylepay.com", "/"));
diff --git a/chrome/browser/ui/views/payments/payment_method_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/payment_method_view_controller_browsertest.cc index 77b144a..fa57b9b 100644 --- a/chrome/browser/ui/views/payments/payment_method_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_method_view_controller_browsertest.cc
@@ -43,7 +43,7 @@ content::BrowserContext* context = GetActiveWebContents()->GetBrowserContext(); auto downloader = std::make_unique<TestDownloader>( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); downloader->AddTestServerURL("https://kylepay.com/", kylepay_server_.GetURL("kylepay.com", "/"));
diff --git a/chrome/browser/ui/views/payments/payment_request_payment_app_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_payment_app_browsertest.cc index 5f94c60..4916af2 100644 --- a/chrome/browser/ui/views/payments/payment_request_payment_app_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_payment_app_browsertest.cc
@@ -127,8 +127,8 @@ content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); auto downloader = std::make_unique<TestDownloader>( - content::BrowserContext::GetDefaultStoragePartition( - web_contents->GetBrowserContext()) + web_contents->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); downloader->AddTestServerURL("https://alicepay.com/", alicepay_.GetURL("alicepay.com", "/"));
diff --git a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc index 5b68fcb..eec3e88 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc
@@ -247,6 +247,47 @@ return gaia::ExtractDomainName(email_); } +void ProfilePickerSignInFlowController::SwitchToSyncConfirmation() { + view_->ShowScreen( + contents(), GURL(chrome::kChromeUISyncConfirmationURL), + /*show_toolbar=*/false, + /*enable_navigating_back=*/false, + /*navigation_finished_closure=*/ + base::BindOnce( + &ProfilePickerSignInFlowController::SwitchToSyncConfirmationFinished, + // Unretained is enough as the callback is called by the + // owner of this instance. + base::Unretained(this))); +} + +void ProfilePickerSignInFlowController::SwitchToProfileSwitch( + const base::FilePath& profile_path) { + // The sign-in flow is finished, no profile window should be shown in the end. + Cancel(); + + switch_profile_path_ = profile_path; + view_->ShowScreenInSystemContents( + GURL(chrome::kChromeUIProfilePickerUrl).Resolve("profile-switch"), + /*show_toolbar=*/false, + /*enable_navigating_back=*/false); +} + +void ProfilePickerSignInFlowController::SwitchToEnterpriseProfileWelcome( + EnterpriseProfileWelcomeUI::ScreenType type, + base::OnceCallback<void(bool)> proceed_callback) { + view_->ShowScreen(contents(), + GURL(chrome::kChromeUIEnterpriseProfileWelcomeURL), + /*show_toolbar=*/false, + /*enable_navigating_back=*/false, + /*navigation_finished_closure=*/ + base::BindOnce(&ProfilePickerSignInFlowController:: + SwitchToEnterpriseProfileWelcomeFinished, + // Unretained is enough as the callback is + // called by the owner of this instance. + base::Unretained(this), type, + std::move(proceed_callback))); +} + bool ProfilePickerSignInFlowController::HandleContextMenu( content::RenderFrameHost* render_frame_host, const content::ContextMenuParams& params) { @@ -281,7 +322,7 @@ content::InvalidateTypes changed_flags) { if (IsSigningIn() && source == contents_.get() && IsExternalURL(contents_->GetVisibleURL())) { - FinishSignedInCreationFlowForSAML(); + FinishAndOpenBrowserForSAML(); } } @@ -295,11 +336,11 @@ DCHECK(!account_info.IsEmpty()); email_ = account_info.email; - base::OnceClosure sync_consent_completed_closure = base::BindOnce( - &ProfilePickerSignInFlowController::FinishSignedInCreationFlow, - weak_ptr_factory_.GetWeakPtr(), - base::BindOnce(&ShowCustomizationBubble, profile_color_), - /*enterprise_sync_consent_needed=*/false); + base::OnceClosure sync_consent_completed_closure = + base::BindOnce(&ProfilePickerSignInFlowController::FinishAndOpenBrowser, + weak_ptr_factory_.GetWeakPtr(), + base::BindOnce(&ShowCustomizationBubble, profile_color_), + /*enterprise_sync_consent_needed=*/false); // Stop with the sign-in navigation and show a spinner instead. The spinner // will be shown until DiceTurnSyncOnHelper (below) figures out whether it's a @@ -324,10 +365,7 @@ signin_metrics::Reason::kSigninPrimaryAccount, account_info.account_id, DiceTurnSyncOnHelper::SigninAbortedMode::KEEP_ACCOUNT, std::make_unique<ProfilePickerViewSyncDelegate>( - profile(), - base::BindOnce( - &ProfilePickerSignInFlowController::FinishSignedInCreationFlow, - weak_ptr_factory_.GetWeakPtr())), + weak_ptr_factory_.GetWeakPtr(), profile()), std::move(sync_consent_completed_closure)); } @@ -359,7 +397,30 @@ std::move(on_profile_name_available_).Run(); } -void ProfilePickerSignInFlowController::FinishSignedInCreationFlow( +void ProfilePickerSignInFlowController::SwitchToSyncConfirmationFinished() { + // Initialize the WebUI page once we know it's committed. + SyncConfirmationUI* sync_confirmation_ui = + static_cast<SyncConfirmationUI*>(contents()->GetWebUI()->GetController()); + + sync_confirmation_ui->InitializeMessageHandlerForCreationFlow( + GetProfileColor()); +} + +void ProfilePickerSignInFlowController:: + SwitchToEnterpriseProfileWelcomeFinished( + EnterpriseProfileWelcomeUI::ScreenType type, + base::OnceCallback<void(bool)> proceed_callback) { + // Initialize the WebUI page once we know it's committed. + EnterpriseProfileWelcomeUI* enterprise_profile_welcome_ui = + contents() + ->GetWebUI() + ->GetController() + ->GetAs<EnterpriseProfileWelcomeUI>(); + enterprise_profile_welcome_ui->Initialize( + type, GetUserDomain(), GetProfileColor(), std::move(proceed_callback)); +} + +void ProfilePickerSignInFlowController::FinishAndOpenBrowser( BrowserOpenedCallback callback, bool enterprise_sync_consent_needed) { // Do nothing if the sign-in flow is aborted or if this has already been @@ -372,17 +433,16 @@ if (name_for_signed_in_profile_.empty()) { on_profile_name_available_ = base::BindOnce( - &ProfilePickerSignInFlowController::FinishSignedInCreationFlowImpl, + &ProfilePickerSignInFlowController::FinishAndOpenBrowserImpl, weak_ptr_factory_.GetWeakPtr(), std::move(callback), enterprise_sync_consent_needed); return; } - FinishSignedInCreationFlowImpl(std::move(callback), - enterprise_sync_consent_needed); + FinishAndOpenBrowserImpl(std::move(callback), enterprise_sync_consent_needed); } -void ProfilePickerSignInFlowController::FinishSignedInCreationFlowImpl( +void ProfilePickerSignInFlowController::FinishAndOpenBrowserImpl( BrowserOpenedCallback callback, bool enterprise_sync_consent_needed) { DCHECK(!name_for_signed_in_profile_.empty()); @@ -436,7 +496,7 @@ profile(), Profile::CREATE_STATUS_INITIALIZED); } -void ProfilePickerSignInFlowController::FinishSignedInCreationFlowForSAML() { +void ProfilePickerSignInFlowController::FinishAndOpenBrowserForSAML() { // First, free up `contents()` to be moved to a new browser window. view_->ShowScreenInSystemContents( GURL(url::kAboutBlankURL), @@ -457,7 +517,7 @@ name_for_signed_in_profile_ = profiles::GetDefaultNameForNewEnterpriseProfile(); contents_->SetDelegate(nullptr); - FinishSignedInCreationFlowImpl( + FinishAndOpenBrowserImpl( base::BindOnce(&ContinueSAMLSignin, std::move(contents_)), /*enterprise_sync_consent_needed=*/true); }
diff --git a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h index 7d9962b..cdfc998 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h +++ b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h
@@ -76,6 +76,30 @@ Profile* profile() const { return profile_; } + // Getter of the path of profile which is displayed on the profile switch + // screen. Returns an empty path if no such screen has been displayed. + base::FilePath switch_profile_path() const { return switch_profile_path_; } + + // Finishes the creation flow by marking `profile_being_created_` as fully + // created, opening a browser window for this profile and calling + // `callback`. + void FinishAndOpenBrowser(BrowserOpenedCallback callback, + bool enterprise_sync_consent_needed); + + // Finishes the sign-in process by moving to the sync confirmation screen. + void SwitchToSyncConfirmation(); + + // Finishes the sign-in process by moving to the enterprise profile welcome + // screen. + void SwitchToEnterpriseProfileWelcome( + EnterpriseProfileWelcomeUI::ScreenType type, + base::OnceCallback<void(bool)> proceed_callback); + + // When the sign-in flow cannot be completed because another profile at + // `profile_path` is already syncing with a chosen account, shows the profile + // switch screen. It uses the system profile for showing the switch screen. + void SwitchToProfileSwitch(const base::FilePath& profile_path); + private: // content::WebContentsDelegate: bool HandleContextMenu(content::RenderFrameHost* render_frame_host, @@ -106,17 +130,18 @@ void OnExtendedAccountInfoTimeout(const CoreAccountInfo& account); void OnProfileNameAvailable(); - // Finishes the creation flow by marking `profile_being_created_` as fully - // created, opening a browser window for this profile and calling - // `callback`. - void FinishSignedInCreationFlow(BrowserOpenedCallback callback, - bool enterprise_sync_consent_needed); - void FinishSignedInCreationFlowImpl(BrowserOpenedCallback callback, - bool enterprise_sync_consent_needed); + // Callbacks that finalize initialization of WebUI pages. + void SwitchToSyncConfirmationFinished(); + void SwitchToEnterpriseProfileWelcomeFinished( + EnterpriseProfileWelcomeUI::ScreenType type, + base::OnceCallback<void(bool)> proceed_callback); + + void FinishAndOpenBrowserImpl(BrowserOpenedCallback callback, + bool enterprise_sync_consent_needed); // Finishes the flow by finalizing the profile and continuing the SAML // sign-in in a browser window. - void FinishSignedInCreationFlowForSAML(); + void FinishAndOpenBrowserForSAML(); void OnSignInContentsFreedUp(); // Internal callback to finish the last steps of the signed-in creation @@ -151,6 +176,9 @@ // sign-in flow on GAIA and Chrome receives the account info. std::string email_; + // Path to a profile that should be displayed on the profile switch screen. + base::FilePath switch_profile_path_; + std::u16string name_for_signed_in_profile_; base::OnceClosure on_profile_name_available_;
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.cc b/chrome/browser/ui/views/profiles/profile_picker_view.cc index 59ae9c76..5996f74 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view.cc
@@ -169,8 +169,8 @@ // static base::FilePath ProfilePicker::GetSwitchProfilePath() { - if (g_profile_picker_view) { - return g_profile_picker_view->GetSwitchProfilePath(); + if (g_profile_picker_view && g_profile_picker_view->sign_in_) { + return g_profile_picker_view->sign_in_->switch_profile_path(); } return base::FilePath(); } @@ -193,30 +193,6 @@ } // static -void ProfilePicker::SwitchToSyncConfirmation() { - if (g_profile_picker_view) { - g_profile_picker_view->SwitchToSyncConfirmation(); - } -} - -// static -void ProfilePicker::SwitchToProfileSwitch(const base::FilePath& profile_path) { - if (g_profile_picker_view) { - g_profile_picker_view->SwitchToProfileSwitch(profile_path); - } -} - -// static -void ProfilePicker::SwitchToEnterpriseProfileWelcome( - EnterpriseProfileWelcomeUI::ScreenType type, - base::OnceCallback<void(bool)> proceed_callback) { - if (g_profile_picker_view) { - g_profile_picker_view->SwitchToEnterpriseProfileWelcome( - type, std::move(proceed_callback)); - } -} - -// static void ProfilePicker::ShowDialog(content::BrowserContext* browser_context, const GURL& url, const base::FilePath& profile_path) { @@ -641,69 +617,6 @@ sign_in_->Init(); } -void ProfilePickerView::SwitchToSyncConfirmation() { - ShowScreen( - sign_in_->contents(), GURL(chrome::kChromeUISyncConfirmationURL), - /*show_toolbar=*/false, - /*enable_navigating_back=*/false, - /*navigation_finished_closure=*/ - base::BindOnce(&ProfilePickerView::SwitchToSyncConfirmationFinished, - // Unretained is enough as the callback is called by a - // member of this class appearing after `sign_in_`. - base::Unretained(this))); -} - -void ProfilePickerView::SwitchToSyncConfirmationFinished() { - // Initialize the WebUI page once we know it's committed. - SyncConfirmationUI* sync_confirmation_ui = static_cast<SyncConfirmationUI*>( - sign_in_->contents()->GetWebUI()->GetController()); - - sync_confirmation_ui->InitializeMessageHandlerForCreationFlow( - sign_in_->GetProfileColor()); -} - -void ProfilePickerView::SwitchToProfileSwitch( - const base::FilePath& profile_path) { - DCHECK(sign_in_); - // The sign-in flow is finished, no profile window should be shown in the end. - sign_in_->Cancel(); - - switch_profile_path_ = profile_path; - ShowScreenInSystemContents( - GURL(chrome::kChromeUIProfilePickerUrl).Resolve("profile-switch"), - /*show_toolbar=*/false, - /*enable_navigating_back=*/false); -} - -void ProfilePickerView::SwitchToEnterpriseProfileWelcome( - EnterpriseProfileWelcomeUI::ScreenType type, - base::OnceCallback<void(bool)> proceed_callback) { - ShowScreen(sign_in_->contents(), - GURL(chrome::kChromeUIEnterpriseProfileWelcomeURL), - /*show_toolbar=*/false, - /*enable_navigating_back=*/false, - /*navigation_finished_closure=*/ - base::BindOnce( - &ProfilePickerView::SwitchToEnterpriseProfileWelcomeFinished, - // Unretained is enough as the callback is called by a member - // of this class appearing after `sign_in_`. - base::Unretained(this), type, std::move(proceed_callback))); -} - -void ProfilePickerView::SwitchToEnterpriseProfileWelcomeFinished( - EnterpriseProfileWelcomeUI::ScreenType type, - base::OnceCallback<void(bool)> proceed_callback) { - // Initialize the WebUI page once we know it's committed. - EnterpriseProfileWelcomeUI* enterprise_profile_welcome_ui = - sign_in_->contents() - ->GetWebUI() - ->GetController() - ->GetAs<EnterpriseProfileWelcomeUI>(); - enterprise_profile_welcome_ui->Initialize(type, sign_in_->GetUserDomain(), - sign_in_->GetProfileColor(), - std::move(proceed_callback)); -} - void ProfilePickerView::WindowClosing() { // Now that the window is closed, we can allow a new one to be opened. // (WindowClosing comes in asynchronously from the call to Close() and we @@ -961,10 +874,6 @@ return on_select_profile_target_url_; } -base::FilePath ProfilePickerView::GetSwitchProfilePath() const { - return switch_profile_path_; -} - BEGIN_METADATA(ProfilePickerView, views::WidgetDelegateView) ADD_READONLY_PROPERTY_METADATA(bool, SigningIn) ADD_READONLY_PROPERTY_METADATA(base::FilePath, ForceSigninProfilePath)
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.h b/chrome/browser/ui/views/profiles/profile_picker_view.h index 72069c5..0ae98c6 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view.h +++ b/chrome/browser/ui/views/profiles/profile_picker_view.h
@@ -138,18 +138,6 @@ base::RepeatingCallback<void(bool)> switch_finished_callback, Profile* new_profile, Profile::CreateStatus status); - // Switches the layout to the sync confirmation screen. - void SwitchToSyncConfirmation(); - void SwitchToSyncConfirmationFinished(); - // Switches the layout to the profile switch screen. - void SwitchToProfileSwitch(const base::FilePath& profile_path); - // Switches the layout to the enterprise welcome screen. - void SwitchToEnterpriseProfileWelcome( - EnterpriseProfileWelcomeUI::ScreenType type, - base::OnceCallback<void(bool)> proceed_callback); - void SwitchToEnterpriseProfileWelcomeFinished( - EnterpriseProfileWelcomeUI::ScreenType type, - base::OnceCallback<void(bool)> proceed_callback); // views::WidgetDelegate: void WindowClosing() override; @@ -213,10 +201,6 @@ // profile selection instead of the new tab page. GURL GetOnSelectProfileTargetUrl() const; - // Getter of the path of profile which is displayed on the profile switch - // screen. - base::FilePath GetSwitchProfilePath() const; - ScopedKeepAlive keep_alive_; ProfilePicker::EntryPoint entry_point_ = ProfilePicker::EntryPoint::kOnStartup; @@ -258,9 +242,6 @@ // page. GURL on_select_profile_target_url_; - // Path to a profile that should be displayed on the profile switch screen. - base::FilePath switch_profile_path_; - base::WeakPtrFactory<ProfilePickerView> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc index 30d188b..1c86aee 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
@@ -42,6 +42,7 @@ #include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/profile_deletion_observer.h" #include "components/feature_engagement/public/feature_constants.h" #include "components/feature_engagement/public/tracker.h" #include "components/feature_engagement/test/test_tracker.h" @@ -1243,6 +1244,7 @@ Cancel) { ASSERT_EQ(1u, BrowserList::GetInstance()->size()); Profile* profile_being_created = StartSigninFlow(); + base::FilePath profile_path = profile_being_created->GetPath(); // Consumer-looking gmail address avoids code that forces the sync service to // actually start which would add overhead in mocking further stuff. @@ -1255,6 +1257,7 @@ WaitForFirstPaint(web_contents(), GURL("chrome://enterprise-profile-welcome/")); + ProfileDeletionObserver observer; ExpectEnterpriseScreenTypeAndProceed( /*expected_type=*/EnterpriseProfileWelcomeUI::ScreenType:: kEntepriseAccountSyncEnabled, @@ -1262,12 +1265,13 @@ // As the profile creation flow was opened directly, the window is closed now. WaitForPickerClosed(); + observer.Wait(); // The profile entry is deleted ProfileAttributesEntry* entry = g_browser_process->profile_manager() ->GetProfileAttributesStorage() - .GetProfileAttributesWithPath(profile_being_created->GetPath()); + .GetProfileAttributesWithPath(profile_path); EXPECT_EQ(entry, nullptr); }
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.cc b/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.cc index c58d631..29d82fd 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.cc
@@ -82,10 +82,9 @@ } // namespace ProfilePickerViewSyncDelegate::ProfilePickerViewSyncDelegate( - Profile* profile, - OpenBrowserCallback open_browser_callback) - : profile_(profile), - open_browser_callback_(std::move(open_browser_callback)) {} + base::WeakPtr<ProfilePickerSignInFlowController> controller, + Profile* profile) + : controller_(controller), profile_(profile) {} ProfilePickerViewSyncDelegate::~ProfilePickerViewSyncDelegate() = default; @@ -99,21 +98,19 @@ if (error.type() == SigninUIError::Type::kAccountAlreadyUsedByAnotherProfile && IsEnterpriseFlowEnabled()) { - ProfilePicker::SwitchToProfileSwitch(error.another_profile_path()); + if (controller_) { + controller_->SwitchToProfileSwitch(error.another_profile_path()); + } return; } // Open the browser and when it's done, show the login error. - // TODO(crbug.com/1126913): In some cases, the current behavior is not ideal - // because it is not designed with profile creation in mind. Concretely, for - // sync not being available because there already is a syncing profile with - // this account, we should likely auto-delete the profile and offer to either - // switch or to start sign-in once again. - std::move(open_browser_callback_) - .Run( - base::BindOnce( - &DiceTurnSyncOnHelper::Delegate::ShowLoginErrorForBrowser, error), - /*enterprise_sync_consent_needed=*/false); + if (controller_) { + controller_->FinishAndOpenBrowser( + base::BindOnce( + &DiceTurnSyncOnHelper::Delegate::ShowLoginErrorForBrowser, error), + /*enterprise_sync_consent_needed=*/false); + } } void ProfilePickerViewSyncDelegate::ShowMergeSyncDataConfirmation( @@ -136,12 +133,14 @@ // Open the browser and when it's done, show the confirmation dialog. // We have a guarantee that the profile is brand new, no need to prompt for // another profile. - std::move(open_browser_callback_) - .Run(base::BindOnce(&DiceTurnSyncOnHelper::Delegate:: - ShowEnterpriseAccountConfirmationForBrowser, - email, /*prompt_for_new_profile=*/false, - std::move(wrapped_callback)), - /*enterprise_sync_consent_needed=*/true); + if (controller_) { + controller_->FinishAndOpenBrowser( + base::BindOnce(&DiceTurnSyncOnHelper::Delegate:: + ShowEnterpriseAccountConfirmationForBrowser, + email, /*prompt_for_new_profile=*/false, + std::move(wrapped_callback)), + /*enterprise_sync_consent_needed=*/true); + } return; } @@ -202,9 +201,11 @@ } // Open the browser and when it's done, show the confirmation dialog. - std::move(open_browser_callback_) - .Run(base::BindOnce(&OpenSyncConfirmationDialogInBrowser), - /*enterprise_sync_consent_needed=*/false); + if (controller_) { + controller_->FinishAndOpenBrowser( + base::BindOnce(&OpenSyncConfirmationDialogInBrowser), + /*enterprise_sync_consent_needed=*/false); + } return; } @@ -225,9 +226,10 @@ } // Open the browser and when it's done, open settings in the browser. - std::move(open_browser_callback_) - .Run(base::BindOnce(&OpenSettingsInBrowser), - /*enterprise_sync_consent_needed=*/false); + if (controller_) { + controller_->FinishAndOpenBrowser(base::BindOnce(&OpenSettingsInBrowser), + /*enterprise_sync_consent_needed=*/false); + } } void ProfilePickerViewSyncDelegate::SwitchToProfile(Profile* new_profile) { @@ -253,7 +255,8 @@ scoped_login_ui_service_observation_.Observe( LoginUIServiceFactory::GetForProfile(profile_)); - ProfilePicker::SwitchToSyncConfirmation(); + if (controller_) + controller_->SwitchToSyncConfirmation(); } void ProfilePickerViewSyncDelegate::FinishSyncConfirmation( @@ -270,10 +273,12 @@ DCHECK(sync_confirmation_callback_); // Unretained as the delegate lives until `sync_confirmation_callback_` gets // called and thus always outlives the enterprise screen. - ProfilePicker::SwitchToEnterpriseProfileWelcome( - type, - base::BindOnce(&ProfilePickerViewSyncDelegate::OnEnterpriseWelcomeClosed, - base::Unretained(this), type)); + if (controller_) { + controller_->SwitchToEnterpriseProfileWelcome( + type, base::BindOnce( + &ProfilePickerViewSyncDelegate::OnEnterpriseWelcomeClosed, + base::Unretained(this), type)); + } } void ProfilePickerViewSyncDelegate::OnEnterpriseWelcomeClosed(
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h b/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h index 510f31b..88842fa7 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h +++ b/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_VIEW_SYNC_DELEGATE_H_ #define CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_VIEW_SYNC_DELEGATE_H_ +#include "base/memory/weak_ptr.h" #include "base/scoped_observation.h" #include "chrome/browser/profiles/profile_metrics.h" #include "chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h" @@ -23,12 +24,9 @@ class ProfilePickerViewSyncDelegate : public DiceTurnSyncOnHelper::Delegate, public LoginUIService::Observer { public: - using OpenBrowserCallback = base::OnceCallback<void( - ProfilePickerSignInFlowController::BrowserOpenedCallback, - bool enterprise_sync_consent_needed)>; - - ProfilePickerViewSyncDelegate(Profile* profile, - OpenBrowserCallback open_browser_callback); + ProfilePickerViewSyncDelegate( + base::WeakPtr<ProfilePickerSignInFlowController> controller, + Profile* profile); ~ProfilePickerViewSyncDelegate() override; private: @@ -70,10 +68,13 @@ void OnEnterpriseWelcomeClosed(EnterpriseProfileWelcomeUI::ScreenType type, bool proceed); + // Controls the sign-in flow. Is not guaranteed to outlive this object (gets + // destroyed when the flow window closes). + base::WeakPtr<ProfilePickerSignInFlowController> controller_; + Profile* profile_; bool enterprise_account_ = false; bool sync_disabled_ = false; - OpenBrowserCallback open_browser_callback_; base::OnceCallback<void(LoginUIService::SyncConfirmationUIClosedResult)> sync_confirmation_callback_; base::ScopedObservation<LoginUIService, LoginUIService::Observer>
diff --git a/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc b/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc index 0801ab0e..cf73e80 100644 --- a/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc +++ b/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc
@@ -477,7 +477,7 @@ } scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory() { - return content::BrowserContext::GetDefaultStoragePartition(profile_) + return profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); } @@ -536,7 +536,8 @@ MockSyncStarterInlineSigninHelper* helper = new MockSyncStarterInlineSigninHelper( handler.GetWeakPtr(), - content::BrowserContext::GetDefaultStoragePartition(profile()) + profile() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), profile(), url, "foo@gmail.com", "gaiaid-12345", "password", "auth_code", /*signin_scoped_device_id=*/std::string(),
diff --git a/chrome/browser/ui/views/user_education/new_badge_label_unittest.cc b/chrome/browser/ui/views/user_education/new_badge_label_unittest.cc index 7e26a97..61da091 100644 --- a/chrome/browser/ui/views/user_education/new_badge_label_unittest.cc +++ b/chrome/browser/ui/views/user_education/new_badge_label_unittest.cc
@@ -33,11 +33,10 @@ ->SetOrientation(views::LayoutOrientation::kVertical) .SetCrossAxisAlignment(views::LayoutAlignment::kStart); - const std::u16string text = base::ASCIIToUTF16("test"); control_label_ = contents_->AddChildView( - std::make_unique<views::Label>(text, views::style::CONTEXT_LABEL)); + std::make_unique<views::Label>(u"test", views::style::CONTEXT_LABEL)); new_badge_label_ = contents_->AddChildView( - std::make_unique<NewBadgeLabel>(text, views::style::CONTEXT_LABEL)); + std::make_unique<NewBadgeLabel>(u"test", views::style::CONTEXT_LABEL)); } void TearDown() override {
diff --git a/chrome/browser/ui/views/user_education/tutorial_dialog_browsertest.cc b/chrome/browser/ui/views/user_education/tutorial_dialog_browsertest.cc index a144bf89..e74230b 100644 --- a/chrome/browser/ui/views/user_education/tutorial_dialog_browsertest.cc +++ b/chrome/browser/ui/views/user_education/tutorial_dialog_browsertest.cc
@@ -21,7 +21,7 @@ FeaturePromoBubbleView::CreateParams params; params.anchor_view = browser_view->toolbar()->app_menu_button(); params.arrow = views::BubbleBorder::TOP_RIGHT; - params.body_text = base::ASCIIToUTF16("Hello world, I am a tutorial"); + params.body_text = u"Hello world, I am a tutorial"; params.focusable = true; params.persist_on_blur = true; params.tutorial_progress_current = 3;
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc index 583574c5..f06c846 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -60,7 +60,6 @@ #include "chrome/browser/lifetime/browser_shutdown.h" #include "chrome/browser/net/system_network_context_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/browser/ui/webui/chromeos/login/cookie_waiter.h" #include "chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h"
diff --git a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc index f416604a..c1ac2f3 100644 --- a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc
@@ -15,7 +15,6 @@ #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/browser/ui/ash/system_tray_client.h" #include "chrome/grit/generated_resources.h" #include "components/arc/arc_prefs.h"
diff --git a/chrome/browser/ui/webui/devtools_ui.cc b/chrome/browser/ui/webui/devtools_ui.cc index 8d56b44..4e33e8f 100644 --- a/chrome/browser/ui/webui/devtools_ui.cc +++ b/chrome/browser/ui/webui/devtools_ui.cc
@@ -65,8 +65,9 @@ DevToolsUI::DevToolsUI(content::WebUI* web_ui) : WebUIController(web_ui), bindings_(web_ui->GetWebContents()) { web_ui->SetBindings(content::BINDINGS_POLICY_NONE); - auto factory = content::BrowserContext::GetDefaultStoragePartition( - web_ui->GetWebContents()->GetBrowserContext()) + auto factory = web_ui->GetWebContents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); content::URLDataSource::Add( web_ui->GetWebContents()->GetBrowserContext(),
diff --git a/chrome/browser/ui/webui/domain_reliability_internals_ui.cc b/chrome/browser/ui/webui/domain_reliability_internals_ui.cc index 8424e4b..5262795 100644 --- a/chrome/browser/ui/webui/domain_reliability_internals_ui.cc +++ b/chrome/browser/ui/webui/domain_reliability_internals_ui.cc
@@ -61,8 +61,7 @@ Profile* profile = Profile::FromWebUI(web_ui()); network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetNetworkContext(); + profile->GetDefaultStoragePartition()->GetNetworkContext(); network_context->GetDomainReliabilityJSON( base::BindOnce(&DomainReliabilityInternalsHandler::OnDataUpdated, weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc index 81b12b40..8fb6d50 100644 --- a/chrome/browser/ui/webui/management/management_ui_handler.cc +++ b/chrome/browser/ui/webui/management/management_ui_handler.cc
@@ -860,10 +860,9 @@ icon_fetcher_->Init(std::string(), net::ReferrerPolicy::NEVER_CLEAR, network::mojom::CredentialsMode::kOmit); auto* profile = Profile::FromWebUI(web_ui()); - icon_fetcher_->Start( - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess() - .get()); + icon_fetcher_->Start(profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get()); } #endif // BUILDFLAG(IS_CHROMEOS_ASH) }
diff --git a/chrome/browser/ui/webui/net_export_ui.cc b/chrome/browser/ui/webui/net_export_ui.cc index da891181..fcd1f66b 100644 --- a/chrome/browser/ui/webui/net_export_ui.cc +++ b/chrome/browser/ui/webui/net_export_ui.cc
@@ -322,8 +322,8 @@ path, capture_mode_, max_log_file_size_, base::CommandLine::ForCurrentProcess()->GetCommandLineString(), chrome::GetChannelName(chrome::WithExtendedStable(true)), - content::BrowserContext::GetDefaultStoragePartition( - Profile::FromWebUI(web_ui())) + Profile::FromWebUI(web_ui()) + ->GetDefaultStoragePartition() ->GetNetworkContext()); }
diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc index 6f8158d..4f589d65 100644 --- a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc +++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
@@ -313,8 +313,9 @@ network::mojom::NetworkContext* NetInternalsMessageHandler::GetNetworkContext() { - return content::BrowserContext::GetDefaultStoragePartition( - web_ui_->GetWebContents()->GetBrowserContext()) + return web_ui_->GetWebContents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetNetworkContext(); }
diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui_browsertest.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui_browsertest.cc index 63737cdf..fe710aa2 100644 --- a/chrome/browser/ui/webui/net_internals/net_internals_ui_browsertest.cc +++ b/chrome/browser/ui/webui/net_internals/net_internals_ui_browsertest.cc
@@ -232,7 +232,9 @@ new DnsLookupClient(client.InitWithNewPipeAndPassReceiver(), base::BindOnce(&MessageHandler::RunJavascriptCallback, weak_factory_.GetWeakPtr())); - content::BrowserContext::GetDefaultStoragePartition(browser()->profile()) + browser() + ->profile() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->ResolveHost(net::HostPortPair(hostname, 80), network_isolation_key_, std::move(resolve_host_parameters), std::move(client));
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc index 16edb3c..5e45235b 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc
@@ -1108,9 +1108,8 @@ } } })"); - auto url_loader_factory = - content::BrowserContext::GetDefaultStoragePartition(profile_) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = profile_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); auto request = std::make_unique<network::ResourceRequest>(); request->url = url; auto loader =
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc index 53fc894..3976130a 100644 --- a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
@@ -48,6 +48,7 @@ namespace { const char kDummyInitiatorName[] = "TestInitiator"; +const char16_t kDummyInitiatorName16[] = u"TestInitiator"; const char kEmptyPrinterName[] = "EmptyPrinter"; const char kTestData[] = "abc"; @@ -356,7 +357,7 @@ auto preview_ui = std::make_unique<FakePrintPreviewUI>( web_ui(), std::move(preview_handler)); - preview_ui->SetInitiatorTitle(base::ASCIIToUTF16(kDummyInitiatorName)); + preview_ui->SetInitiatorTitle(kDummyInitiatorName16); web_ui()->SetController(std::move(preview_ui)); }
diff --git a/chrome/browser/ui/webui/profile_helper_browsertest.cc b/chrome/browser/ui/webui/profile_helper_browsertest.cc index 6292dac..d1d9970d36 100644 --- a/chrome/browser/ui/webui/profile_helper_browsertest.cc +++ b/chrome/browser/ui/webui/profile_helper_browsertest.cc
@@ -17,6 +17,7 @@ #include "chrome/browser/ui/browser_list_observer.h" #include "chrome/browser/ui/webui/profile_helper.h" #include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/profile_deletion_observer.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/browsing_data_remover.h" #include "content/public/test/browser_test.h" @@ -98,32 +99,6 @@ base::RunLoop run_loop_; }; -class ProfileDeletionObserver : public ProfileAttributesStorage::Observer { - public: - ProfileDeletionObserver() { - g_browser_process->profile_manager() - ->GetProfileAttributesStorage() - .AddObserver(this); - } - - ~ProfileDeletionObserver() override { - g_browser_process->profile_manager() - ->GetProfileAttributesStorage() - .RemoveObserver(this); - } - - void Wait() { run_loop_.Run(); } - - // ProfileAttributesStorage::Observer: - void OnProfileWasRemoved(const base::FilePath& profile_path, - const std::u16string& profile_name) override { - run_loop_.Quit(); - } - - private: - base::RunLoop run_loop_; -}; - } // namespace class ProfileHelperTest : public InProcessBrowserTest {
diff --git a/chrome/browser/ui/webui/quota_internals/quota_internals_handler.cc b/chrome/browser/ui/webui/quota_internals/quota_internals_handler.cc index 26ea75da2..2ca773d 100644 --- a/chrome/browser/ui/webui/quota_internals/quota_internals_handler.cc +++ b/chrome/browser/ui/webui/quota_internals/quota_internals_handler.cc
@@ -101,9 +101,9 @@ if (!proxy_.get()) proxy_ = new QuotaInternalsProxy(this); ReportStoragePressureFlag(); - proxy_->RequestInfo( - BrowserContext::GetDefaultStoragePartition( - Profile::FromWebUI(web_ui()))->GetQuotaManager()); + proxy_->RequestInfo(Profile::FromWebUI(web_ui()) + ->GetDefaultStoragePartition() + ->GetQuotaManager()); } void QuotaInternalsHandler::OnTriggerStoragePressure( @@ -116,10 +116,10 @@ if (!proxy_.get()) proxy_ = new QuotaInternalsProxy(this); - proxy_->TriggerStoragePressure( - url::Origin::Create(url), - BrowserContext::GetDefaultStoragePartition(Profile::FromWebUI(web_ui())) - ->GetQuotaManager()); + proxy_->TriggerStoragePressure(url::Origin::Create(url), + Profile::FromWebUI(web_ui()) + ->GetDefaultStoragePartition() + ->GetQuotaManager()); } } // namespace quota_internals
diff --git a/chrome/browser/ui/webui/sanitized_image_source.cc b/chrome/browser/ui/webui/sanitized_image_source.cc index d2e0f7d..339769e 100644 --- a/chrome/browser/ui/webui/sanitized_image_source.cc +++ b/chrome/browser/ui/webui/sanitized_image_source.cc
@@ -25,11 +25,10 @@ #include "url/url_util.h" SanitizedImageSource::SanitizedImageSource(Profile* profile) - : SanitizedImageSource( - profile, - content::BrowserContext::GetDefaultStoragePartition(profile) - ->GetURLLoaderFactoryForBrowserProcess(), - std::make_unique<ImageDecoderImpl>()) {} + : SanitizedImageSource(profile, + profile->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), + std::make_unique<ImageDecoderImpl>()) {} SanitizedImageSource::SanitizedImageSource( Profile* profile,
diff --git a/chrome/browser/ui/webui/settings/chromeos/calculator/size_calculator.cc b/chrome/browser/ui/webui/settings/chromeos/calculator/size_calculator.cc index f68d8ba..cee7265 100644 --- a/chrome/browser/ui/webui/settings/chromeos/calculator/size_calculator.cc +++ b/chrome/browser/ui/webui/settings/chromeos/calculator/size_calculator.cc
@@ -161,15 +161,14 @@ // Fetch the size of http cache in browsing data. browsing_data::ConditionalCacheCountingHelper::Count( - content::BrowserContext::GetDefaultStoragePartition(profile_), - base::Time(), base::Time::Max(), + profile_->GetDefaultStoragePartition(), base::Time(), base::Time::Max(), base::BindOnce(&BrowsingDataSizeCalculator::OnGetCacheSize, weak_ptr_factory_.GetWeakPtr())); // Fetch the size of site data in browsing data. if (!site_data_size_collector_.get()) { content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(profile_); + profile_->GetDefaultStoragePartition(); site_data_size_collector_ = std::make_unique<SiteDataSizeCollector>( storage_partition->GetPath(), new browsing_data::CookieHelper(storage_partition,
diff --git a/chrome/browser/ui/webui/settings/safety_check_handler.cc b/chrome/browser/ui/webui/settings/safety_check_handler.cc index 2d38cfbf..3687324d 100644 --- a/chrome/browser/ui/webui/settings/safety_check_handler.cc +++ b/chrome/browser/ui/webui/settings/safety_check_handler.cc
@@ -289,8 +289,8 @@ DCHECK(version_updater_); if (!update_helper_) { update_helper_ = std::make_unique<safety_check::UpdateCheckHelper>( - content::BrowserContext::GetDefaultStoragePartition( - Profile::FromWebUI(web_ui())) + Profile::FromWebUI(web_ui()) + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); } DCHECK(update_helper_);
diff --git a/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc b/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc index 36ddfefc..98ac695 100644 --- a/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc +++ b/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc
@@ -143,8 +143,10 @@ } network::mojom::NetworkContext* SecureDnsHandler::GetNetworkContext() { - return content::BrowserContext::GetDefaultStoragePartition( - web_ui()->GetWebContents()->GetBrowserContext()) + return web_ui() + ->GetWebContents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetNetworkContext(); }
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc index 021c2e6c..cea84e2 100644 --- a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
@@ -187,8 +187,7 @@ void TearDown() override { if (profile_) { - auto* partition = - content::BrowserContext::GetDefaultStoragePartition(profile_.get()); + auto* partition = profile_->GetDefaultStoragePartition(); if (partition) partition->WaitForDeletionTasksForTesting(); }
diff --git a/chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.cc b/chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.cc index aa0b56ae..5c3d9c7 100644 --- a/chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.cc +++ b/chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.cc
@@ -395,7 +395,7 @@ policy::UserPolicySigninServiceFactory::GetForProfile(profile_); policy_service->FetchPolicyForSignedInUser( AccountIdFromAccountInfo(account_info_), dm_token_, client_id_, - content::BrowserContext::GetDefaultStoragePartition(profile_) + profile_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), base::BindOnce(&DiceTurnSyncOnHelper::OnPolicyFetchComplete, weak_pointer_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ui/webui/signin/profile_picker_handler.cc b/chrome/browser/ui/webui/signin/profile_picker_handler.cc index 27c7c7e1..42e6b494 100644 --- a/chrome/browser/ui/webui/signin/profile_picker_handler.cc +++ b/chrome/browser/ui/webui/signin/profile_picker_handler.cc
@@ -796,9 +796,7 @@ // Should only happen the first time the function is called. // Profile creation and deletion are handled at // 'OnProfileAdded', 'OnProfileWasRemoved'. - // TODO(https://crbug.com/1195784): revert CHECK back to DCHECKs after the - // crash is investigated. - CHECK(!profiles_order_.size()); + DCHECK(!profiles_order_.size()); SetProfilesOrder(ordered_entries); return ordered_entries; } @@ -806,12 +804,10 @@ // Vector of nullptr entries. std::vector<ProfileAttributesEntry*> entries(number_of_profiles); for (ProfileAttributesEntry* entry : ordered_entries) { - // TODO(https://crbug.com/1195784): revert CHECKs back to DCHECKs after the - // crash is investigated. - CHECK(profiles_order_.find(entry->GetPath()) != profiles_order_.end()); + DCHECK(profiles_order_.find(entry->GetPath()) != profiles_order_.end()); size_t index = profiles_order_[entry->GetPath()]; - CHECK_LT(index, number_of_profiles); - CHECK(!entries[index]); + DCHECK_LT(index, number_of_profiles); + DCHECK(!entries[index]); entries[index] = entry; } return entries;
diff --git a/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc b/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc index 1c61f4f..06cee0c1 100644 --- a/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc +++ b/chrome/browser/web_applications/components/web_app_install_utils_unittest.cc
@@ -26,8 +26,8 @@ namespace { -const char kAppShortName[] = "Test short name"; -const char kAppTitle[] = "Test title"; +const char16_t kAppShortName[] = u"Test short name"; +const char16_t kAppTitle[] = u"Test title"; const char kAlternativeAppTitle[] = "Different test title"; const char kShortcutItemName[] = "shortcut item "; @@ -62,7 +62,7 @@ const GURL kAppUrl("http://www.chromium.org/index.html"); manifest.start_url = kAppUrl; manifest.scope = kAppUrl.GetWithoutFilename(); - manifest.short_name = base::ASCIIToUTF16(kAppShortName); + manifest.short_name = kAppShortName; { blink::Manifest::FileHandler handler; @@ -89,7 +89,7 @@ const GURL kAppManifestUrl("http://www.chromium.org/manifest.json"); UpdateWebAppInfoFromManifest(manifest, kAppManifestUrl, &web_app_info); - EXPECT_EQ(base::UTF8ToUTF16(kAppShortName), web_app_info.title); + EXPECT_EQ(kAppShortName, web_app_info.title); EXPECT_EQ(kAppUrl, web_app_info.start_url); EXPECT_EQ(kAppUrl.GetWithoutFilename(), web_app_info.scope); EXPECT_EQ(DisplayMode::kBrowser, web_app_info.display_mode); @@ -103,7 +103,7 @@ // Test that |manifest.name| takes priority over |manifest.short_name|, and // that icons provided by the manifest replace icons in |web_app_info|. - manifest.name = base::ASCIIToUTF16(kAppTitle); + manifest.name = kAppTitle; manifest.display = DisplayMode::kMinimalUi; blink::Manifest::ImageResource icon; @@ -121,7 +121,7 @@ manifest.display_override.push_back(DisplayMode::kStandalone); UpdateWebAppInfoFromManifest(manifest, kAppManifestUrl, &web_app_info); - EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title); + EXPECT_EQ(kAppTitle, web_app_info.title); EXPECT_EQ(DisplayMode::kMinimalUi, web_app_info.display_mode); ASSERT_EQ(2u, web_app_info.display_override.size()); EXPECT_EQ(DisplayMode::kMinimalUi, web_app_info.display_override[0]); @@ -157,11 +157,11 @@ blink::Manifest manifest; manifest.name = std::u16string(); - manifest.short_name = base::ASCIIToUTF16(kAppShortName); + manifest.short_name = kAppShortName; UpdateWebAppInfoFromManifest( manifest, GURL("http://www.chromium.org/manifest.json"), &web_app_info); - EXPECT_EQ(base::UTF8ToUTF16(kAppShortName), web_app_info.title); + EXPECT_EQ(kAppShortName, web_app_info.title); } // Test that maskable icons are parsed as separate icon_infos from the manifest. @@ -317,7 +317,7 @@ const GURL kAppUrl("http://www.chromium.org/index.html"); manifest.start_url = kAppUrl; manifest.scope = kAppUrl.GetWithoutFilename(); - manifest.short_name = base::ASCIIToUTF16(kAppShortName); + manifest.short_name = kAppShortName; { blink::Manifest::FileHandler handler; @@ -344,7 +344,7 @@ const GURL kAppManifestUrl("http://www.chromium.org/manifest.json"); UpdateWebAppInfoFromManifest(manifest, kAppManifestUrl, &web_app_info); - EXPECT_EQ(base::UTF8ToUTF16(kAppShortName), web_app_info.title); + EXPECT_EQ(kAppShortName, web_app_info.title); EXPECT_EQ(kAppUrl, web_app_info.start_url); EXPECT_EQ(kAppUrl.GetWithoutFilename(), web_app_info.scope); EXPECT_EQ(DisplayMode::kBrowser, web_app_info.display_mode); @@ -369,7 +369,7 @@ // Test that |manifest.name| takes priority over |manifest.short_name|, and // that icons provided by the manifest replace icons in |web_app_info|. - manifest.name = base::ASCIIToUTF16(kAppTitle); + manifest.name = kAppTitle; manifest.display = DisplayMode::kMinimalUi; blink::Manifest::ImageResource icon; @@ -411,7 +411,7 @@ manifest.shortcuts.push_back(shortcut_item); UpdateWebAppInfoFromManifest(manifest, kAppManifestUrl, &web_app_info); - EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title); + EXPECT_EQ(kAppTitle, web_app_info.title); EXPECT_EQ(DisplayMode::kMinimalUi, web_app_info.display_mode); EXPECT_EQ(2u, web_app_info.icon_infos.size());
diff --git a/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc b/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc index b6adabb..286f9d0 100644 --- a/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc +++ b/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc
@@ -63,9 +63,8 @@ content::WebContents::Create( content::WebContents::CreateParams(browser()->profile())); content::ServiceWorkerContext* service_worker_context = - content::BrowserContext::GetStoragePartition( - Profile::FromBrowserContext(web_contents->GetBrowserContext()), - web_contents->GetSiteInstance()) + web_contents->GetBrowserContext() + ->GetStoragePartition(web_contents->GetSiteInstance()) ->GetServiceWorkerContext(); service_worker_context->CheckHasServiceWorker( url,
diff --git a/chrome/browser/web_applications/externally_managed_app_registration_task.cc b/chrome/browser/web_applications/externally_managed_app_registration_task.cc index 3d634e8..935fc4a 100644 --- a/chrome/browser/web_applications/externally_managed_app_registration_task.cc +++ b/chrome/browser/web_applications/externally_managed_app_registration_task.cc
@@ -35,8 +35,7 @@ web_contents_(web_contents), callback_(std::move(callback)) { content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - Profile::FromBrowserContext(web_contents_->GetBrowserContext()), + web_contents_->GetBrowserContext()->GetStoragePartition( web_contents_->GetSiteInstance()); DCHECK(storage_partition);
diff --git a/chrome/browser/web_applications/test/service_worker_registration_waiter.cc b/chrome/browser/web_applications/test/service_worker_registration_waiter.cc index fe74a95..f664dad 100644 --- a/chrome/browser/web_applications/test/service_worker_registration_waiter.cc +++ b/chrome/browser/web_applications/test/service_worker_registration_waiter.cc
@@ -15,7 +15,7 @@ const GURL& url) : url_(std::move(url)) { content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartitionForUrl(browser_context, url_); + browser_context->GetStoragePartitionForUrl(url_); DCHECK(storage_partition); service_worker_context_ = storage_partition->GetServiceWorkerContext();
diff --git a/chrome/browser/webapps/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenIPHController.java b/chrome/browser/webapps/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenIPHController.java index e4bb8c4..027f73e8 100644 --- a/chrome/browser/webapps/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenIPHController.java +++ b/chrome/browser/webapps/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenIPHController.java
@@ -172,7 +172,8 @@ .with(MessageBannerProperties.ON_PRIMARY_ACTION, () -> onMessageAddButtonClicked(tab)) .build(); - mMessageDispatcher.enqueueMessage(model, tab.getWebContents(), MessageScopeType.NAVIGATION); + mMessageDispatcher.enqueueMessage( + model, tab.getWebContents(), MessageScopeType.NAVIGATION, false); RecordUserAction.record("Android.AddToHomescreenIPH.Message.Shown"); }
diff --git a/chrome/browser/webshare/mac/sharing_service_operation.mm b/chrome/browser/webshare/mac/sharing_service_operation.mm index acd8bee46..84a85b1 100644 --- a/chrome/browser/webshare/mac/sharing_service_operation.mm +++ b/chrome/browser/webshare/mac/sharing_service_operation.mm
@@ -97,7 +97,7 @@ BrowserContext* browser_context = web_contents()->GetBrowserContext(); StoragePartition* const partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); directory_ = partition->GetPath().Append(kWebShareDirname); prepare_directory_task_ = std::make_unique<PrepareDirectoryTask>(
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 6a33e5b..7d43bdb 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1619672805-fa4a84cc78f76e86554b1c1cdf6d56a9360a0315.profdata +chrome-mac-master-1619697388-9f31f86f9595af924e1ca1d2577fe4a30c9d0604.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 419ebcd..5721025 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1619672805-ce53f98f92ccde0f80efffd2968099c86b1e3cb3.profdata +chrome-win32-master-1619697388-2e39591d1d1f0989422cf9650fbb22981b2d456d.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 0e576701..014d6e1 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1619672805-1a739302f722be6d61a7e6509e6039d1e86f5d75.profdata +chrome-win64-master-1619708235-7e1e7e3636eed85ed74cd7563556a99c585fc339.profdata
diff --git a/chrome/services/speech/soda/BUILD.gn b/chrome/services/speech/soda/BUILD.gn index 7c45cb4c..04249ac 100644 --- a/chrome/services/speech/soda/BUILD.gn +++ b/chrome/services/speech/soda/BUILD.gn
@@ -14,6 +14,7 @@ "soda_async_impl.h", "soda_client.cc", "soda_client.h", + "soda_test_paths.h", ] deps = [ @@ -40,7 +41,15 @@ if (enable_soda) { sources = [ "soda_client_unittest.cc" ] - data_deps = [ "//third_party/soda:soda_resources" ] + if (is_mac) { + data_deps = [ "//third_party/soda-mac:soda_resources" ] + } else if (is_win && target_cpu == "x86") { + data_deps = [ "//third_party/soda-win32:soda_resources" ] + } else if (is_win && target_cpu == "x64") { + data_deps = [ "//third_party/soda-win64:soda_resources" ] + } else { + data_deps = [ "//third_party/soda:soda_resources" ] + } deps = [ ":soda",
diff --git a/chrome/services/speech/soda/soda_client_unittest.cc b/chrome/services/speech/soda/soda_client_unittest.cc index 04af72f..b6089e2 100644 --- a/chrome/services/speech/soda/soda_client_unittest.cc +++ b/chrome/services/speech/soda/soda_client_unittest.cc
@@ -12,24 +12,13 @@ #include "base/notreached.h" #include "base/path_service.h" #include "chrome/services/speech/soda/proto/soda_api.pb.h" +#include "chrome/services/speech/soda/soda_test_paths.h" #include "media/audio/wav_audio_handler.h" #include "media/base/audio_bus.h" #include "testing/gtest/include/gtest/gtest.h" namespace soda { -constexpr base::FilePath::CharType kSodaResourcesDir[] = - FILE_PATH_LITERAL("third_party/soda/resources"); - -constexpr base::FilePath::CharType kSodaTestBinaryRelativePath[] = - FILE_PATH_LITERAL("libsoda_for_testing.so"); - -constexpr base::FilePath::CharType kSodaTestonfigRelativePath[] = - FILE_PATH_LITERAL("en_us"); - -constexpr base::FilePath::CharType kSodaTestAudioRelativePath[] = - FILE_PATH_LITERAL("hey_google.wav"); - class SodaClientUnitTest : public testing::Test { public: SodaClientUnitTest() = default; @@ -75,8 +64,9 @@ void SodaClientUnitTest::SetUp() { ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir_)); - auto libsoda_path = test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(base::FilePath(kSodaTestBinaryRelativePath)); + auto libsoda_path = + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(base::FilePath(soda::kSodaTestBinaryRelativePath)); ASSERT_TRUE(base::PathExists(libsoda_path)); soda_client_ = std::make_unique<soda::SodaClient>(libsoda_path); ASSERT_TRUE(soda_client_.get()); @@ -84,8 +74,9 @@ } TEST_F(SodaClientUnitTest, CreateSodaClient) { - auto audio_file = test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(base::FilePath(kSodaTestAudioRelativePath)); + auto audio_file = + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(base::FilePath(soda::kSodaTestAudioRelativePath)); ASSERT_TRUE(base::PathExists(audio_file)); std::string buffer; @@ -96,8 +87,8 @@ ASSERT_EQ(handler->num_channels(), 1); auto config_file_path = - test_data_dir_.Append(base::FilePath(kSodaResourcesDir)) - .Append(base::FilePath(kSodaTestonfigRelativePath)); + test_data_dir_.Append(base::FilePath(soda::kSodaResourcePath)) + .Append(base::FilePath(soda::kSodaLanguagePackRelativePath)); ASSERT_TRUE(base::PathExists(config_file_path)); speech::soda::chrome::ExtendedSodaConfigMsg config_msg;
diff --git a/chrome/services/speech/soda/soda_test_paths.h b/chrome/services/speech/soda/soda_test_paths.h new file mode 100644 index 0000000..d2119943 --- /dev/null +++ b/chrome/services/speech/soda/soda_test_paths.h
@@ -0,0 +1,55 @@ +// 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_SPEECH_SODA_SODA_TEST_PATHS_H_ +#define CHROME_SERVICES_SPEECH_SODA_SODA_TEST_PATHS_H_ + +#include "base/files/file_path.h" +#include "build/build_config.h" + +namespace soda { + +#if defined(OS_MAC) + +constexpr base::FilePath::CharType kSodaResourcePath[] = + FILE_PATH_LITERAL("third_party/soda-mac64/resources"); + +constexpr base::FilePath::CharType kSodaTestBinaryRelativePath = + FILE_PATH_LITERAL("libsoda_for_testing.so"); + +#elif defined(OS_WIN) && defined(ARCH_CPU_64_BITS) + +constexpr base::FilePath::CharType kSodaResourcePath[] = + FILE_PATH_LITERAL("third_party/soda-win64/resources"); + +constexpr base::FilePath::CharType kSodaTestBinaryRelativePath = + FILE_PATH_LITERAL("SODA_for_testing.dll"); + +#elif defined(OS_WIN) && defined(ARCH_CPU_32_BITS) + +constexpr base::FilePath::CharType kSodaResourcePath[] = + FILE_PATH_LITERAL("third_party/soda-win32/resources"); + +constexpr base::FilePath::CharType kSodaTestBinaryRelativePath = + FILE_PATH_LITERAL("SODA_for_testing.dll"); + +#elif defined(OS_LINUX) + +constexpr base::FilePath::CharType kSodaResourcePath[] = + FILE_PATH_LITERAL("third_party/soda/resources"); + +constexpr base::FilePath::CharType kSodaTestBinaryRelativePath[] = + FILE_PATH_LITERAL("libsoda_for_testing.so"); + +#endif + +constexpr base::FilePath::CharType kSodaLanguagePackRelativePath[] = + FILE_PATH_LITERAL("en_us"); + +constexpr base::FilePath::CharType kSodaTestAudioRelativePath[] = + FILE_PATH_LITERAL("hey_google.wav"); + +} // namespace soda + +#endif // CHROME_SERVICES_SPEECH_SODA_SODA_TEST_PATHS_H_
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 927c8633..49a5874 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -145,6 +145,8 @@ "base/find_result_waiter.h", "base/js_test_api.cc", "base/js_test_api.h", + "base/profile_deletion_observer.cc", + "base/profile_deletion_observer.h", "base/profile_waiter.cc", "base/profile_waiter.h", "base/scoped_browser_locale.cc", @@ -1713,7 +1715,15 @@ if (enable_soda) { sources += [ "../browser/speech/speech_recognition_service_browsertest.cc" ] - data_deps += [ "//third_party/soda:soda_resources" ] + if (is_mac) { + data_deps += [ "//third_party/soda-mac:soda_resources" ] + } else if (is_win && target_cpu == "x86") { + data_deps += [ "//third_party/soda-win32:soda_resources" ] + } else if (is_win && target_cpu == "x64") { + data_deps += [ "//third_party/soda-win64:soda_resources" ] + } else { + data_deps += [ "//third_party/soda:soda_resources" ] + } } if (use_ozone) { @@ -3620,8 +3630,6 @@ "../browser/history/history_tab_helper_unittest.cc", "../browser/history_clusters/history_clusters_tab_helper_unittest.cc", "../browser/idle/idle_detection_permission_context_unittest.cc", - "../browser/infobars/mock_infobar_service.cc", - "../browser/infobars/mock_infobar_service.h", "../browser/internal_auth_unittest.cc", "../browser/language/language_model_manager_factory_unittest.cc", "../browser/language/url_language_histogram_factory_unittest.cc",
diff --git a/chrome/test/base/OWNERS b/chrome/test/base/OWNERS index 28da547c..1b33b4f 100644 --- a/chrome/test/base/OWNERS +++ b/chrome/test/base/OWNERS
@@ -4,6 +4,8 @@ per-file testing_browser_process*=* per-file testing_profile*=* +per-file profile_deletion_observer.cc=file://chrome/browser/profiles/OWNERS + per-file javascript_browser_test.*=dtseng@chromium.org per-file js2gtest.*=dtseng@chromium.org per-file js2gtest.*=file://ui/webui/PLATFORM_OWNERS
diff --git a/chrome/test/base/javascript_browser_test.cc b/chrome/test/base/javascript_browser_test.cc index 7269b7a..02953948e 100644 --- a/chrome/test/base/javascript_browser_test.cc +++ b/chrome/test/base/javascript_browser_test.cc
@@ -64,7 +64,19 @@ ++user_libraries_iterator) { std::string library_content; base::FilePath library_absolute_path; - if (user_libraries_iterator->IsAbsolute()) { + std::vector<base::FilePath::StringType> components; + user_libraries_iterator->GetComponents(&components); + if (components[0] == FILE_PATH_LITERAL("ROOT_GEN_DIR")) { + base::FilePath exe_dir; + base::PathService::Get(base::DIR_EXE, &exe_dir); + library_absolute_path = exe_dir.AppendASCII("gen"); + for (size_t i = 1; i < components.size(); i++) + library_absolute_path = library_absolute_path.Append(components[i]); + library_absolute_path = library_absolute_path.NormalizePathSeparators(); + ASSERT_TRUE( + base::ReadFileToString(library_absolute_path, &library_content)) + << user_libraries_iterator->value(); + } else if (user_libraries_iterator->IsAbsolute()) { library_absolute_path = *user_libraries_iterator; ASSERT_TRUE( base::ReadFileToString(library_absolute_path, &library_content))
diff --git a/chrome/test/base/profile_deletion_observer.cc b/chrome/test/base/profile_deletion_observer.cc new file mode 100644 index 0000000..903eff7 --- /dev/null +++ b/chrome/test/base/profile_deletion_observer.cc
@@ -0,0 +1,31 @@ +// 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/test/base/profile_deletion_observer.h" + +#include "chrome/browser/browser_process.h" +#include "chrome/browser/profiles/profile_manager.h" + +ProfileDeletionObserver::ProfileDeletionObserver() { + g_browser_process->profile_manager() + ->GetProfileAttributesStorage() + .AddObserver(this); +} + +ProfileDeletionObserver::~ProfileDeletionObserver() { + g_browser_process->profile_manager() + ->GetProfileAttributesStorage() + .RemoveObserver(this); +} + +void ProfileDeletionObserver::Wait() { + run_loop_.Run(); +} + +// ProfileAttributesStorage::Observer: +void ProfileDeletionObserver::OnProfileWasRemoved( + const base::FilePath& profile_path, + const std::u16string& profile_name) { + run_loop_.Quit(); +}
diff --git a/chrome/test/base/profile_deletion_observer.h b/chrome/test/base/profile_deletion_observer.h new file mode 100644 index 0000000..d616d5f --- /dev/null +++ b/chrome/test/base/profile_deletion_observer.h
@@ -0,0 +1,32 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_TEST_BASE_PROFILE_DELETION_OBSERVER_H_ +#define CHROME_TEST_BASE_PROFILE_DELETION_OBSERVER_H_ + +#include <string> + +#include "base/files/file_path.h" +#include "base/run_loop.h" +#include "chrome/browser/profiles/profile_attributes_storage.h" + +class ProfileDeletionObserver : public ProfileAttributesStorage::Observer { + public: + ProfileDeletionObserver(); + ~ProfileDeletionObserver() override; + + // Synchronously waits until a single Profile is removed from + // ProfileAttributesStorage, marking the end of a + // ScheduleProfileForDeletion() operation. + void Wait(); + + // ProfileAttributesStorage::Observer: + void OnProfileWasRemoved(const base::FilePath& profile_path, + const std::u16string& profile_name) override; + + private: + base::RunLoop run_loop_; +}; + +#endif // CHROME_TEST_BASE_PROFILE_DELETION_OBSERVER_H_
diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc index 9ad4c78f..f3520cf74 100644 --- a/chrome/test/base/testing_profile.cc +++ b/chrome/test/base/testing_profile.cc
@@ -546,7 +546,6 @@ // Make sure SharedProtoDatabase doesn't post delayed tasks anymore. ForEachStoragePartition( - this, base::BindRepeating([](content::StoragePartition* storage_partition) { if (auto* provider = storage_partition->GetProtoDatabaseProviderForTesting()) { @@ -837,7 +836,7 @@ #if !defined(OS_ANDROID) ChromeZoomLevelPrefs* TestingProfile::GetZoomLevelPrefs() { return static_cast<ChromeZoomLevelPrefs*>( - GetDefaultStoragePartition(this)->GetZoomLevelDelegate()); + GetDefaultStoragePartition()->GetZoomLevelDelegate()); } #endif // !defined(OS_ANDROID)
diff --git a/chrome/test/base/testing_profile_key.cc b/chrome/test/base/testing_profile_key.cc index 6bc7f2a..2bd9c66a 100644 --- a/chrome/test/base/testing_profile_key.cc +++ b/chrome/test/base/testing_profile_key.cc
@@ -16,7 +16,6 @@ leveldb_proto::ProtoDatabaseProvider* TestingProfileKey::GetProtoDatabaseProvider() { - auto* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(testing_profile_); + auto* storage_partition = testing_profile_->GetDefaultStoragePartition(); return storage_partition->GetProtoDatabaseProvider(); }
diff --git a/chrome/test/base/testing_profile_manager.cc b/chrome/test/base/testing_profile_manager.cc index bb4483c..38c94e7 100644 --- a/chrome/test/base/testing_profile_manager.cc +++ b/chrome/test/base/testing_profile_manager.cc
@@ -8,11 +8,13 @@ #include <utility> #include "base/bind.h" +#include "base/feature_list.h" #include "base/memory/ref_counted.h" #include "base/strings/utf_string_conversions.h" #include "base/test/test_file_util.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" +#include "chrome/browser/browser_features.h" #include "chrome/browser/profiles/profile_attributes_entry.h" #include "chrome/browser/profiles/profile_attributes_storage.h" #include "chrome/browser/profiles/profile_info_cache.h" @@ -114,6 +116,7 @@ entry->SetLocalProfileName(user_name, entry->IsUsingDefaultName()); testing_profiles_.insert(std::make_pair(profile_name, profile_ptr)); + profile_observations_.AddObservation(profile_ptr); return profile_ptr; } @@ -157,6 +160,7 @@ profile_manager_->SetNonPersonalProfilePrefs(profile_ptr); testing_profiles_.insert(std::make_pair(kGuestProfileName, profile_ptr)); + profile_observations_.AddObservation(profile_ptr); return profile_ptr; } @@ -184,16 +188,19 @@ DCHECK(called_set_up_); auto it = testing_profiles_.find(name); - DCHECK(it != testing_profiles_.end()); + if (it == testing_profiles_.end()) { + // Profile was already deleted, probably due to the + // DestroyProfileOnBrowserClose flag. + DCHECK( + base::FeatureList::IsEnabled(features::kDestroyProfileOnBrowserClose)); + return; + } TestingProfile* profile = it->second; profile_manager_->GetProfileAttributesStorage().RemoveProfile( profile->GetPath()); - profile_manager_->profiles_info_.erase(profile->GetPath()); - - testing_profiles_.erase(it); } void TestingProfileManager::DeleteAllTestingProfiles() { @@ -202,9 +209,15 @@ for (auto it = testing_profiles_.begin(); it != testing_profiles_.end(); ++it) { TestingProfile* profile = it->second; + if (profile->IsGuestSession() || profile->IsSystemProfile() || + profile->IsEphemeralGuestProfile()) { + // This Profile was skipped in ProfileManager::AddProfileToStorage(). + continue; + } storage.RemoveProfile(profile->GetPath()); } testing_profiles_.clear(); + profile_observations_.RemoveAllObservations(); } @@ -256,6 +269,11 @@ return profile_info_cache(); } +void TestingProfileManager::OnProfileWillBeDestroyed(Profile* profile) { + testing_profiles_.erase(profile->GetProfileUserName()); + profile_observations_.RemoveObservation(profile); +} + void TestingProfileManager::SetUpInternal(const base::FilePath& profiles_path) { ASSERT_FALSE(browser_process_->profile_manager()) << "ProfileManager already exists";
diff --git a/chrome/test/base/testing_profile_manager.h b/chrome/test/base/testing_profile_manager.h index 1c576074..d4bf032 100644 --- a/chrome/test/base/testing_profile_manager.h +++ b/chrome/test/base/testing_profile_manager.h
@@ -11,7 +11,9 @@ #include "base/compiler_specific.h" #include "base/files/file_path.h" +#include "base/scoped_multi_source_observation.h" #include "base/test/scoped_path_override.h" +#include "chrome/browser/profiles/profile_observer.h" #include "chrome/test/base/scoped_testing_local_state.h" #include "chrome/test/base/testing_profile.h" #include "components/policy/core/common/policy_service.h" @@ -32,14 +34,14 @@ // When a Profile is needed for testing, create it through the factory method // below instead of creating it via |new TestingProfile|. It is not possible // to register profiles created in that fashion with the ProfileManager. -class TestingProfileManager { +class TestingProfileManager : public ProfileObserver { public: explicit TestingProfileManager(TestingBrowserProcess* browser_process); TestingProfileManager(TestingBrowserProcess* browser_process, ScopedTestingLocalState* local_state); TestingProfileManager(const TestingProfileManager&) = delete; TestingProfileManager& operator=(const TestingProfileManager&) = delete; - ~TestingProfileManager(); + ~TestingProfileManager() override; // This needs to be called in testing::Test::SetUp() to put the object in a // valid state. Some work cannot be done in a constructor because it may @@ -117,6 +119,9 @@ ProfileAttributesStorage* profile_attributes_storage(); ScopedTestingLocalState* local_state() { return local_state_; } + // ProfileObserver: + void OnProfileWillBeDestroyed(Profile* profile) override; + private: friend class ProfileAttributesStorageTest; friend class ProfileInfoCacheTest; @@ -159,6 +164,10 @@ // Map of profile_name to TestingProfile* from CreateTestingProfile(). TestingProfilesMap testing_profiles_; + + // Listens for Profile* destruction to perform some cleanup. + base::ScopedMultiSourceObservation<Profile, ProfileObserver> + profile_observations_{this}; }; #endif // CHROME_TEST_BASE_TESTING_PROFILE_MANAGER_H_
diff --git a/chrome/test/data/ash/clipboard_history/image-and-text.html b/chrome/test/data/ash/clipboard_history/image-and-text.html new file mode 100644 index 0000000..da90060 --- /dev/null +++ b/chrome/test/data/ash/clipboard_history/image-and-text.html
@@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<script> +function selectPart1() { + selectText('div1'); +} +function selectPart2() { + selectText('div2'); +} + +// The helper function to select the element specified by id. +function selectText(id) { + const input = document.getElementById(id); + var range = document.createRange(); + range.selectNodeContents(input); + var selection = window.getSelection(); + selection.removeAllRanges(); + selection.addRange(range); +} + +function copyToClipboard() { + document.execCommand("copy"); +} +</script> +<body> + <div id="div1"> + <img src="../images/icon16.png"> + <p> first part </p> + </div> + <div id="div2"> + <img src="../images/icon128.png"> + <p> second part </p> + </div> +</body> +</html>
diff --git a/chrome/test/data/ash/launcher/icon128.png b/chrome/test/data/ash/images/icon128.png similarity index 100% rename from chrome/test/data/ash/launcher/icon128.png rename to chrome/test/data/ash/images/icon128.png Binary files differ
diff --git a/chrome/test/data/ash/launcher/icon16.png b/chrome/test/data/ash/images/icon16.png similarity index 100% rename from chrome/test/data/ash/launcher/icon16.png rename to chrome/test/data/ash/images/icon16.png Binary files differ
diff --git a/chrome/test/data/ash/launcher/icon48.png b/chrome/test/data/ash/images/icon48.png similarity index 100% rename from chrome/test/data/ash/launcher/icon48.png rename to chrome/test/data/ash/images/icon48.png Binary files differ
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json index edf3e4b..f1d2d32a 100644 --- a/chrome/test/data/policy/policy_test_cases.json +++ b/chrome/test/data/policy/policy_test_cases.json
@@ -8373,6 +8373,16 @@ } ] }, + "DataLeakPreventionReportingEnabled": { + "os": ["chromeos"], + "can_be_recommended": false, + "policy_pref_mapping_tests": [ + { + "policies": { "DataLeakPreventionReportingEnabled": true }, + "prefs": { "policy.dlp_reporting_enabled": { "location": "local_state" } } + } + ] + }, "DataLeakPreventionRulesList": { "os": ["chromeos"], "policy_pref_mapping_tests": [
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn index 78a7a30..875d876 100644 --- a/chrome/test/data/webui/BUILD.gn +++ b/chrome/test/data/webui/BUILD.gn
@@ -105,6 +105,7 @@ "//chrome/browser/ui", "//services/network/public/cpp", "//skia", + "//ui/webui/resources/js:unmodulize", ] if (is_chromeos_ash) { @@ -182,6 +183,7 @@ "$root_gen_dir/chrome/test/data/webui/test_browser_proxy.m.js", "$root_gen_dir/chrome/test/data/webui/test_store.m.js", "$root_gen_dir/chrome/test/data/webui/test_util.m.js", + "$root_gen_dir/ui/webui/resources/js/load_time_data.js", ] if (enable_print_preview) {
diff --git a/chrome/test/data/webui/js/i18n_process_test.js b/chrome/test/data/webui/js/i18n_process_test.js index f8c73f9d..9dc6663 100644 --- a/chrome/test/data/webui/js/i18n_process_test.js +++ b/chrome/test/data/webui/js/i18n_process_test.js
@@ -31,7 +31,7 @@ */ extraLibraries: [ '//ui/webui/resources/js/i18n_template_no_process.js', - '//ui/webui/resources/js/load_time_data.js', + '//ROOT_GEN_DIR/ui/webui/resources/js/load_time_data.js', '//third_party/mocha/mocha.js', '//chrome/test/data/webui/mocha_adapter.js', ],
diff --git a/chrome/test/data/webui/load_time_data_browsertest.js b/chrome/test/data/webui/load_time_data_browsertest.js index 9f15d8d..45c293c9 100644 --- a/chrome/test/data/webui/load_time_data_browsertest.js +++ b/chrome/test/data/webui/load_time_data_browsertest.js
@@ -20,7 +20,7 @@ extraLibraries: [ '//ui/webui/resources/js/assert.js', '//ui/webui/resources/js/parse_html_subset.js', - '//ui/webui/resources/js/load_time_data.js', + '//ROOT_GEN_DIR/ui/webui/resources/js/load_time_data.js', '//third_party/mocha/mocha.js', '//chrome/test/data/webui/mocha_adapter.js', 'js/load_time_data_test.js',
diff --git a/chrome/test/data/webui/settings/chromeos/internet_detail_menu_test.js b/chrome/test/data/webui/settings/chromeos/internet_detail_menu_test.js index 767c4a0..f8992c918 100644 --- a/chrome/test/data/webui/settings/chromeos/internet_detail_menu_test.js +++ b/chrome/test/data/webui/settings/chromeos/internet_detail_menu_test.js
@@ -20,9 +20,6 @@ let mojom; setup(function() { - loadTimeData.overrideValues({ - updatedCellularActivationUi: true, - }); mojoApi_ = new FakeNetworkConfig(); network_config.MojoInterfaceProviderImpl.getInstance().remote_ = mojoApi_; mojoApi_.resetForTest(); @@ -37,7 +34,12 @@ return result; } - async function init() { + /** @param {boolean=} opt_isGuest */ + async function init(opt_isGuest) { + const isGuest = !!opt_isGuest; + loadTimeData.overrideValues( + {updatedCellularActivationUi: true, isGuest: isGuest}); + const params = new URLSearchParams; params.append('guid', 'cellular_guid'); settings.Router.getInstance().navigateTo( @@ -104,6 +106,20 @@ assertTrue(!!tripleDot); }); + test('Do not show triple dot menu in guest mode', async function() { + addEsimCellularNetwork('100000', '11111111111111111111111111111111'); + await init(/*opt_isGuest=*/ true); + + const params = new URLSearchParams; + params.append('guid', 'cellular_guid'); + settings.Router.getInstance().navigateTo( + settings.routes.NETWORK_DETAIL, params); + await flushAsync(); + + // Has ICCID and EID, but not shown since the user is in guest mode. + assertFalse(!!internetDetailMenu.$$('#moreNetworkDetail')); + }); + test('Rename menu click', async function() { addEsimCellularNetwork('100000', '11111111111111111111111111111111'); await init();
diff --git a/chrome/test/data/webui/settings/site_settings_page_test.js b/chrome/test/data/webui/settings/site_settings_page_test.js index 43bdeb5e..818018e 100644 --- a/chrome/test/data/webui/settings/site_settings_page_test.js +++ b/chrome/test/data/webui/settings/site_settings_page_test.js
@@ -87,16 +87,24 @@ const notificationsLinkRow = /** @type {!CrLinkRowElement} */ ( page.$$('#basicPermissionsList').$$('#notifications')); - page.set('prefs.generated.notification.value', NotificationSetting.ASK); + page.set('prefs.generated.notification.value', NotificationSetting.BLOCK); + await flushTasks(); + assertEquals( + loadTimeData.getString('siteSettingsBlocked'), + notificationsLinkRow.subLabel); + + page.set( + 'prefs.generated.notification.value', + NotificationSetting.QUIETER_MESSAGING); await flushTasks(); assertEquals( loadTimeData.getString('siteSettingsAskBeforeSending'), notificationsLinkRow.subLabel); - page.set('prefs.generated.notification.value', NotificationSetting.BLOCK); + page.set('prefs.generated.notification.value', NotificationSetting.ASK); await flushTasks(); assertEquals( - loadTimeData.getString('siteSettingsBlocked'), + loadTimeData.getString('siteSettingsAskBeforeSending'), notificationsLinkRow.subLabel); }); @@ -108,6 +116,12 @@ const notificationsLinkRow = /** @type {!CrLinkRowElement} */ ( page.$$('#basicPermissionsList').$$('#notifications')); + page.set('prefs.generated.notification.value', NotificationSetting.BLOCK); + await flushTasks(); + assertEquals( + loadTimeData.getString('siteSettingsNotificationsBlocked'), + notificationsLinkRow.subLabel); + page.set( 'prefs.generated.notification.value', NotificationSetting.QUIETER_MESSAGING); @@ -121,12 +135,6 @@ assertEquals( loadTimeData.getString('siteSettingsNotificationsAllowed'), notificationsLinkRow.subLabel); - - page.set('prefs.generated.notification.value', NotificationSetting.BLOCK); - await flushTasks(); - assertEquals( - loadTimeData.getString('siteSettingsNotificationsBlocked'), - notificationsLinkRow.subLabel); }); test('ProtectedContentRow', function() {
diff --git a/chrome/test/payments/payment_request_platform_browsertest_base.cc b/chrome/test/payments/payment_request_platform_browsertest_base.cc index 154c4286..41ced3f 100644 --- a/chrome/test/payments/payment_request_platform_browsertest_base.cc +++ b/chrome/test/payments/payment_request_platform_browsertest_base.cc
@@ -86,7 +86,7 @@ content::BrowserContext* context = GetActiveWebContents()->GetBrowserContext(); auto downloader = std::make_unique<TestDownloader>( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); for (const auto& method : payment_methods) { downloader->AddTestServerURL("https://" + method.first + "/",
diff --git a/chrome/test/ppapi/ppapi_browsertest.cc b/chrome/test/ppapi/ppapi_browsertest.cc index 50791f1..6479684 100644 --- a/chrome/test/ppapi/ppapi_browsertest.cc +++ b/chrome/test/ppapi/ppapi_browsertest.cc
@@ -1238,8 +1238,7 @@ // looked up across tabs with different first party origins. void CheckTestHostNameUsedWithCorrectNetworkIsolationKey(Browser* browser) { network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser->profile()) - ->GetNetworkContext(); + browser->profile()->GetDefaultStoragePartition()->GetNetworkContext(); const net::HostPortPair kHostPortPair( net::HostPortPair("host_resolver.test", 80));
diff --git a/chromecast/bindings/bindings_manager_fuchsia.cc b/chromecast/bindings/bindings_manager_fuchsia.cc index 6f4456a1b..aea2d48 100644 --- a/chromecast/bindings/bindings_manager_fuchsia.cc +++ b/chromecast/bindings/bindings_manager_fuchsia.cc
@@ -9,6 +9,7 @@ #include "base/check.h" #include "base/fuchsia/fuchsia_logging.h" +#include "base/strings/string_piece.h" #include "components/cast/message_port/message_port_fuchsia.h" #include "fuchsia/base/mem_buffer_util.h" #include "fuchsia/base/message_port.h" @@ -22,7 +23,7 @@ void BindingsManagerFuchsia::AddBinding(base::StringPiece binding_name, base::StringPiece binding_script) { - bindings_[binding_name.as_string()] = + bindings_[std::string(binding_name)] = cr_fuchsia::MemBufferFromString(binding_script, "cast-binding-script"); }
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc index f7f5e76..ffe5ccf 100644 --- a/chromecast/browser/cast_browser_main_parts.cc +++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -559,8 +559,8 @@ cast_browser_process_->SetConnectivityChecker(ConnectivityChecker::Create( content::GetIOThreadTaskRunner({}), - content::BrowserContext::GetDefaultStoragePartition( - cast_browser_process_->browser_context()) + cast_browser_process_->browser_context() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcessIOThread(), content::GetNetworkConnectionTracker())); @@ -568,8 +568,8 @@ std::make_unique<metrics::CastMetricsServiceClient>( cast_browser_process_->browser_client(), cast_browser_process_->pref_service(), - content::BrowserContext::GetDefaultStoragePartition( - cast_browser_process_->browser_context()) + cast_browser_process_->browser_context() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess())); cast_browser_process_->SetRemoteDebuggingServer( std::make_unique<RemoteDebuggingServer>(
diff --git a/chromecast/browser/cast_extension_url_loader_factory.cc b/chromecast/browser/cast_extension_url_loader_factory.cc index fdec863a..a104f64 100644 --- a/chromecast/browser/cast_extension_url_loader_factory.cc +++ b/chromecast/browser/cast_extension_url_loader_factory.cc
@@ -180,9 +180,8 @@ : network::SelfDeletingURLLoaderFactory(std::move(factory_receiver)), extension_registry_(extensions::ExtensionRegistry::Get(browser_context)), extension_factory_(std::move(extension_factory)), - network_factory_( - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetURLLoaderFactoryForBrowserProcess()) { + network_factory_(browser_context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess()) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); // base::Unretained is safe below, because lifetime of
diff --git a/chromecast/browser/cast_network_contexts.cc b/chromecast/browser/cast_network_contexts.cc index 6d74b697..08bf982 100644 --- a/chromecast/browser/cast_network_contexts.cc +++ b/chromecast/browser/cast_network_contexts.cc
@@ -202,7 +202,7 @@ GetSystemContext()->SetAcceptLanguage(accept_language); auto* browser_context = CastBrowserProcess::GetInstance()->browser_context(); - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetNetworkContext() ->SetAcceptLanguage(accept_language); }
diff --git a/chromecast/browser/cast_web_service.cc b/chromecast/browser/cast_web_service.cc index 99df96b..1986d0d1 100644 --- a/chromecast/browser/cast_web_service.cc +++ b/chromecast/browser/cast_web_service.cc
@@ -72,8 +72,7 @@ } void CastWebService::FlushDomLocalStorage() { - content::BrowserContext::ForEachStoragePartition( - browser_context_, + browser_context_->ForEachStoragePartition( base::BindRepeating([](content::StoragePartition* storage_partition) { DVLOG(1) << "Starting DOM localStorage flush."; storage_partition->Flush(); @@ -81,8 +80,7 @@ } void CastWebService::ClearLocalStorage(base::OnceClosure callback) { - content::BrowserContext::ForEachStoragePartition( - browser_context_, + browser_context_->ForEachStoragePartition( base::BindRepeating( [](base::OnceClosure cb, content::StoragePartition* partition) { auto cookie_delete_filter =
diff --git a/chromeos/dbus/shill/fake_shill_profile_client.cc b/chromeos/dbus/shill/fake_shill_profile_client.cc index 25645df..2597ece 100644 --- a/chromeos/dbus/shill/fake_shill_profile_client.cc +++ b/chromeos/dbus/shill/fake_shill_profile_client.cc
@@ -67,6 +67,37 @@ FROM_HERE, base::BindOnce(std::move(callback), std::move(properties))); } +void FakeShillProfileClient::SetProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const base::Value& property, + base::OnceClosure callback, + ErrorCallback error_callback) { + ProfileProperties* profile = GetProfile(profile_path); + if (!profile) { + std::move(error_callback).Run("Error.InvalidProfile", "Invalid profile"); + return; + } + profile->properties.SetKey(name, property.Clone()); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback))); +} + +void FakeShillProfileClient::SetObjectPathProperty( + const dbus::ObjectPath& profile_path, + const std::string& name, + const dbus::ObjectPath& property, + base::OnceClosure callback, + ErrorCallback error_callback) { + ProfileProperties* profile = GetProfile(profile_path); + if (!profile) { + std::move(error_callback).Run("Error.InvalidProfile", "Invalid profile"); + return; + } + profile->properties.SetStringKey(name, property.value()); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback))); +} + void FakeShillProfileClient::GetEntry( const dbus::ObjectPath& profile_path, const std::string& entry_path, @@ -235,6 +266,13 @@ } } +base::Value FakeShillProfileClient::GetProfileProperties( + const std::string& profile_path) { + ProfileProperties* profile = GetProfile(dbus::ObjectPath(profile_path)); + DCHECK(profile); + return profile->properties.Clone(); +} + base::Value FakeShillProfileClient::GetService(const std::string& service_path, std::string* profile_path) { DCHECK(profile_path);
diff --git a/chromeos/dbus/shill/fake_shill_profile_client.h b/chromeos/dbus/shill/fake_shill_profile_client.h index 1981c2ae..cdd92e7 100644 --- a/chromeos/dbus/shill/fake_shill_profile_client.h +++ b/chromeos/dbus/shill/fake_shill_profile_client.h
@@ -34,6 +34,16 @@ void GetProperties(const dbus::ObjectPath& profile_path, base::OnceCallback<void(base::Value result)> callback, ErrorCallback error_callback) override; + void SetProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const base::Value& property, + base::OnceClosure callback, + ErrorCallback error_callback) override; + void SetObjectPathProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const dbus::ObjectPath& property, + base::OnceClosure callback, + ErrorCallback error_callback) override; void GetEntry(const dbus::ObjectPath& profile_path, const std::string& entry_path, base::OnceCallback<void(base::Value result)> callback, @@ -58,6 +68,7 @@ void GetProfilePathsContainingService( const std::string& service_path, std::vector<std::string>* profiles) override; + base::Value GetProfileProperties(const std::string& profile_path) override; base::Value GetService(const std::string& service_path, std::string* profile_path) override; bool HasService(const std::string& service_path) override;
diff --git a/chromeos/dbus/shill/shill_profile_client.cc b/chromeos/dbus/shill/shill_profile_client.cc index 316251e..b33b8da9 100644 --- a/chromeos/dbus/shill/shill_profile_client.cc +++ b/chromeos/dbus/shill/shill_profile_client.cc
@@ -47,6 +47,16 @@ void GetProperties(const dbus::ObjectPath& profile_path, base::OnceCallback<void(base::Value result)> callback, ErrorCallback error_callback) override; + void SetProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const base::Value& property, + base::OnceClosure callback, + ErrorCallback error_callback) override; + void SetObjectPathProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const dbus::ObjectPath& property, + base::OnceClosure callback, + ErrorCallback error_callback) override; void GetEntry(const dbus::ObjectPath& profile_path, const std::string& entry_path, base::OnceCallback<void(base::Value result)> callback, @@ -98,6 +108,38 @@ std::move(error_callback)); } +void ShillProfileClientImpl::SetProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const base::Value& property, + base::OnceClosure callback, + ErrorCallback error_callback) { + dbus::MethodCall method_call(shill::kFlimflamProfileInterface, + shill::kSetPropertyFunction); + dbus::MessageWriter writer(&method_call); + writer.AppendString(name); + ShillClientHelper::AppendValueDataAsVariant(&writer, property); + GetHelper(profile_path) + ->CallVoidMethodWithErrorCallback(&method_call, std::move(callback), + std::move(error_callback)); +} + +void ShillProfileClientImpl::SetObjectPathProperty( + const dbus::ObjectPath& profile_path, + const std::string& name, + const dbus::ObjectPath& property, + base::OnceClosure callback, + ErrorCallback error_callback) { + dbus::MethodCall method_call(shill::kFlimflamProfileInterface, + shill::kSetPropertyFunction); + + dbus::MessageWriter writer(&method_call); + writer.AppendString(shill::kAlwaysOnVpnServiceProperty); + writer.AppendVariantOfObjectPath(property); + GetHelper(profile_path) + ->CallVoidMethodWithErrorCallback(&method_call, std::move(callback), + std::move(error_callback)); +} + void ShillProfileClientImpl::GetEntry( const dbus::ObjectPath& profile_path, const std::string& entry_path,
diff --git a/chromeos/dbus/shill/shill_profile_client.h b/chromeos/dbus/shill/shill_profile_client.h index c5b809a..242d0d01 100644 --- a/chromeos/dbus/shill/shill_profile_client.h +++ b/chromeos/dbus/shill/shill_profile_client.h
@@ -70,6 +70,10 @@ const std::string& service_path, std::vector<std::string>* profiles) = 0; + // Returns the properties contained in the profile matching |profile_path|. + virtual base::Value GetProfileProperties( + const std::string& profile_path) = 0; + // Returns the entry for |service_path| if it exists in any profile and sets // |profile_path| to the path of the profile the service was found in. // Profiles are searched starting with the most recently added profile. @@ -125,6 +129,23 @@ base::OnceCallback<void(base::Value result)> callback, ErrorCallback error_callback) = 0; + // Calls the SetProperty DBus method to set a property on |profile_path| + // profile and invokes |callback| on success or |error_callback| on failure. + virtual void SetProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const base::Value& property, + base::OnceClosure callback, + ErrorCallback error_callback) = 0; + + // Calls the SetProperty DBus method to set an ObjectPath property on + // |profile_path| profile and invokes |callback| on success or + // |error_callback| on failure. + virtual void SetObjectPathProperty(const dbus::ObjectPath& profile_path, + const std::string& name, + const dbus::ObjectPath& property, + base::OnceClosure callback, + ErrorCallback error_callback) = 0; + // Calls GetEntry method. // |callback| is called after the method call succeeds. virtual void GetEntry(const dbus::ObjectPath& profile_path,
diff --git a/chromeos/network/network_profile_handler.cc b/chromeos/network/network_profile_handler.cc index cc47129c..f20284d03 100644 --- a/chromeos/network/network_profile_handler.cc +++ b/chromeos/network/network_profile_handler.cc
@@ -9,6 +9,7 @@ #include <algorithm> #include "base/bind.h" +#include "base/callback_helpers.h" #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/strings/string_util.h" @@ -41,6 +42,16 @@ << profile_path << ": " << error_message; } +void LogError(const std::string& name, + const std::string& profile_path, + const std::string& dbus_error_name, + const std::string& dbus_error_message) { + LOG(ERROR) << name << " failed:" + << " profile=" << profile_path + << " dbus-error-name=" << dbus_error_name + << " dbus-error-msg=" << dbus_error_message; +} + class ProfilePathEquals { public: explicit ProfilePathEquals(const std::string& path) @@ -202,6 +213,46 @@ return NULL; } +void NetworkProfileHandler::GetAlwaysOnVpnConfiguration( + const std::string& profile_path, + base::OnceCallback<void(std::string, std::string)> callback) { + ShillProfileClient::Get()->GetProperties( + dbus::ObjectPath(profile_path), + base::BindOnce( + &NetworkProfileHandler::GetAlwaysOnVpnConfigurationCallback, + weak_ptr_factory_.GetWeakPtr(), std::move(callback)), + base::BindOnce(&LogError, shill::kGetPropertiesFunction, profile_path)); +} + +void NetworkProfileHandler::GetAlwaysOnVpnConfigurationCallback( + base::OnceCallback<void(std::string, std::string)> callback, + base::Value properties) { + // A profile always contains the mode. + std::string* mode = + properties.FindStringPath(shill::kAlwaysOnVpnModeProperty); + DCHECK(mode); + std::string* service = + properties.FindStringPath(shill::kAlwaysOnVpnServiceProperty); + std::move(callback).Run(*mode, service ? *service : std::string()); +} + +void NetworkProfileHandler::SetAlwaysOnVpnMode(const std::string& profile_path, + const std::string& mode) { + ShillProfileClient::Get()->SetProperty( + dbus::ObjectPath(profile_path), shill::kAlwaysOnVpnModeProperty, + base::Value(mode), base::DoNothing(), + base::BindOnce(&LogError, shill::kSetPropertyFunction, profile_path)); +} + +void NetworkProfileHandler::SetAlwaysOnVpnService( + const std::string& profile_path, + const std::string& service_path) { + ShillProfileClient::Get()->SetObjectPathProperty( + dbus::ObjectPath(profile_path), shill::kAlwaysOnVpnServiceProperty, + dbus::ObjectPath(service_path), base::DoNothing(), + base::BindOnce(&LogError, shill::kSetPropertyFunction, profile_path)); +} + NetworkProfileHandler::NetworkProfileHandler() {} void NetworkProfileHandler::Init() {
diff --git a/chromeos/network/network_profile_handler.h b/chromeos/network/network_profile_handler.h index 2b607cb7..ca7061e 100644 --- a/chromeos/network/network_profile_handler.h +++ b/chromeos/network/network_profile_handler.h
@@ -52,6 +52,20 @@ // userhash. const NetworkProfile* GetDefaultUserProfile() const; + // Fetch the always-on VPN settings from |profile_path| profile. + // |callback| is called with the always-on VPN mode and service path. + void GetAlwaysOnVpnConfiguration( + const std::string& profile_path, + base::OnceCallback<void(std::string, std::string)> callback); + + // Sets the always-on VPN mode |mode| in |profile_path| profile. + void SetAlwaysOnVpnMode(const std::string& profile_path, + const std::string& mode); + + // Sets the always-on VPN service in |profile_path| profile. + void SetAlwaysOnVpnService(const std::string& profile_path, + const std::string& service_path); + static std::string GetSharedProfilePath(); static std::unique_ptr<NetworkProfileHandler> InitializeForTesting(); @@ -71,6 +85,13 @@ void RemoveProfile(const std::string& profile_path); private: + // Callback for always-on VPN configuration trigger when a result for the + // GetAlwaysOnVpnConfiguration() call is available. It extracts the two + // settings and transmit them to the original caller through |callback|. + void GetAlwaysOnVpnConfigurationCallback( + base::OnceCallback<void(std::string, std::string)> callback, + base::Value properties); + ProfileList profiles_; // Contains the profile paths for which properties were requested. Once the
diff --git a/chromeos/network/network_state_test_helper.cc b/chromeos/network/network_state_test_helper.cc index 88ec8e9..a0523cc4 100644 --- a/chromeos/network/network_state_test_helper.cc +++ b/chromeos/network/network_state_test_helper.cc
@@ -176,6 +176,25 @@ base::RunLoop().RunUntilIdle(); } +std::string NetworkStateTestHelper::GetProfileStringProperty( + const std::string& profile_path, + const std::string& key) { + base::Value properties = profile_test_->GetProfileProperties(profile_path); + std::string* result = properties.FindStringKey(key); + if (result) + return *result; + return std::string(); +} + +void NetworkStateTestHelper::SetProfileProperty(const std::string& profile_path, + const std::string& key, + const base::Value& value) { + ShillProfileClient::Get()->SetProperty(dbus::ObjectPath(profile_path), key, + value, base::BindOnce([] {}), + base::BindOnce(&FailErrorCallback)); + base::RunLoop().RunUntilIdle(); +} + network_config::mojom::NetworkStatePropertiesPtr NetworkStateTestHelper::CreateStandaloneNetworkProperties( const std::string& id,
diff --git a/chromeos/network/network_state_test_helper.h b/chromeos/network/network_state_test_helper.h index fc9a33c..ec52242 100644 --- a/chromeos/network/network_state_test_helper.h +++ b/chromeos/network/network_state_test_helper.h
@@ -79,6 +79,13 @@ const std::string& key, const base::Value& value); + std::string GetProfileStringProperty(const std::string& profile_path, + const std::string& key); + + void SetProfileProperty(const std::string& profile_path, + const std::string& key, + const base::Value& value); + network_config::mojom::NetworkStatePropertiesPtr CreateStandaloneNetworkProperties( const std::string& id,
diff --git a/chromeos/services/network_config/cros_network_config.cc b/chromeos/services/network_config/cros_network_config.cc index 39915c1..9cdf65d2 100644 --- a/chromeos/services/network_config/cros_network_config.cc +++ b/chromeos/services/network_config/cros_network_config.cc
@@ -8,6 +8,7 @@ #include "ash/constants/ash_features.h" #include "base/containers/flat_map.h" +#include "base/guid.h" #include "base/optional.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -1826,7 +1827,8 @@ NetworkHandler::Get()->cellular_esim_profile_handler(), NetworkHandler::Get()->managed_network_configuration_handler(), NetworkHandler::Get()->network_connection_handler(), - NetworkHandler::Get()->network_certificate_handler()) {} + NetworkHandler::Get()->network_certificate_handler(), + NetworkHandler::Get()->network_profile_handler()) {} CrosNetworkConfig::CrosNetworkConfig( NetworkStateHandler* network_state_handler, @@ -1835,14 +1837,16 @@ CellularESimProfileHandler* cellular_esim_profile_handler, ManagedNetworkConfigurationHandler* network_configuration_handler, NetworkConnectionHandler* network_connection_handler, - NetworkCertificateHandler* network_certificate_handler) + NetworkCertificateHandler* network_certificate_handler, + NetworkProfileHandler* network_profile_handler) : network_state_handler_(network_state_handler), network_device_handler_(network_device_handler), cellular_inhibitor_(cellular_inhibitor), cellular_esim_profile_handler_(cellular_esim_profile_handler), network_configuration_handler_(network_configuration_handler), network_connection_handler_(network_connection_handler), - network_certificate_handler_(network_certificate_handler) { + network_certificate_handler_(network_certificate_handler), + network_profile_handler_(network_profile_handler) { CHECK(network_state_handler); } @@ -2711,6 +2715,85 @@ std::move(callback).Run(std::move(server_cas), std::move(user_certs)); } +void CrosNetworkConfig::GetAlwaysOnVpn(GetAlwaysOnVpnCallback callback) { + const NetworkProfile* profile = + network_profile_handler_->GetDefaultUserProfile(); + if (!profile) { + NET_LOG(ERROR) << "GetAlwaysOnVpn: no user profile found"; + return; + } + + network_profile_handler_->GetAlwaysOnVpnConfiguration( + profile->path, + base::BindOnce(&CrosNetworkConfig::OnGetAlwaysOnVpn, + weak_factory_.GetWeakPtr(), std::move(callback))); +} + +void CrosNetworkConfig::OnGetAlwaysOnVpn(GetAlwaysOnVpnCallback callback, + std::string mode, + std::string service_path) { + mojom::AlwaysOnVpnMode vpn_mode; + if (mode == shill::kAlwaysOnVpnModeOff) { + vpn_mode = mojom::AlwaysOnVpnMode::kOff; + } else if (mode == shill::kAlwaysOnVpnModeBestEffort) { + vpn_mode = mojom::AlwaysOnVpnMode::kBestEffort; + } else if (mode == shill::kAlwaysOnVpnModeStrict) { + vpn_mode = mojom::AlwaysOnVpnMode::kStrict; + } else { + NOTREACHED() << "OnGetAlwaysOnVpn: invalid always-on VPN mode: " << mode; + vpn_mode = mojom::AlwaysOnVpnMode::kOff; + } + + std::string guid; + const NetworkState* network = + network_state_handler_->GetNetworkState(service_path); + // |network| is expected to be null when the service has not been set (yet) + // or has been removed. + if (network) { + guid = network->guid(); + } + + mojom::AlwaysOnVpnPropertiesPtr properties = + mojom::AlwaysOnVpnProperties::New(vpn_mode, guid); + std::move(callback).Run(std::move(properties)); +} + +void CrosNetworkConfig::SetAlwaysOnVpn( + mojom::AlwaysOnVpnPropertiesPtr properties) { + const NetworkProfile* profile = + network_profile_handler_->GetDefaultUserProfile(); + if (!profile) { + NET_LOG(ERROR) << "SetAlwaysOnVpn: no user profile found"; + return; + } + + std::string mode; + switch (properties->mode) { + case mojom::AlwaysOnVpnMode::kBestEffort: + mode = shill::kAlwaysOnVpnModeBestEffort; + break; + case mojom::AlwaysOnVpnMode::kStrict: + mode = shill::kAlwaysOnVpnModeStrict; + break; + case mojom::AlwaysOnVpnMode::kOff: + mode = shill::kAlwaysOnVpnModeOff; + break; + default: + NOTREACHED() << "SetAlwaysOnVpn: invalid mode: " << properties->mode; + return; + } + network_profile_handler_->SetAlwaysOnVpnMode(profile->path, mode); + + if (properties->service_guid.empty()) { + return; + } + std::string service_path = GetServicePathFromGuid(properties->service_guid); + if (service_path.empty()) { + return; + } + network_profile_handler_->SetAlwaysOnVpnService(profile->path, service_path); +} + // NetworkStateHandlerObserver void CrosNetworkConfig::NetworkListChanged() { for (auto& observer : observers_)
diff --git a/chromeos/services/network_config/cros_network_config.h b/chromeos/services/network_config/cros_network_config.h index 10a68d6..295ab5d 100644 --- a/chromeos/services/network_config/cros_network_config.h +++ b/chromeos/services/network_config/cros_network_config.h
@@ -9,6 +9,7 @@ #include "base/memory/weak_ptr.h" #include "chromeos/network/cellular_inhibitor.h" #include "chromeos/network/network_certificate_handler.h" +#include "chromeos/network/network_profile_handler.h" #include "chromeos/network/network_state_handler_observer.h" #include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h" #include "mojo/public/cpp/bindings/pending_receiver.h" @@ -48,7 +49,8 @@ CellularESimProfileHandler* cellular_esim_profile_handler, ManagedNetworkConfigurationHandler* network_configuration_handler, NetworkConnectionHandler* network_connection_handler, - NetworkCertificateHandler* network_certificate_handler); + NetworkCertificateHandler* network_certificate_handler, + NetworkProfileHandler* network_profile_handler); ~CrosNetworkConfig() override; void BindReceiver(mojo::PendingReceiver<mojom::CrosNetworkConfig> receiver); @@ -90,6 +92,8 @@ void SetVpnProviders(std::vector<mojom::VpnProviderPtr> providers) override; void GetVpnProviders(GetVpnProvidersCallback callback) override; void GetNetworkCertificates(GetNetworkCertificatesCallback callback) override; + void GetAlwaysOnVpn(GetAlwaysOnVpnCallback callback) override; + void SetAlwaysOnVpn(mojom::AlwaysOnVpnPropertiesPtr properties) override; private: void OnGetManagedProperties(GetManagedPropertiesCallback callback, @@ -146,6 +150,9 @@ int callback_id, const std::string& error_name, std::unique_ptr<base::DictionaryValue> error_data); + void OnGetAlwaysOnVpn(GetAlwaysOnVpnCallback callback, + std::string mode, + std::string service_path); // NetworkStateHandlerObserver: void NetworkListChanged() override; @@ -174,6 +181,7 @@ network_configuration_handler_; // Unowned NetworkConnectionHandler* network_connection_handler_; // Unowned NetworkCertificateHandler* network_certificate_handler_; // Unowned + NetworkProfileHandler* network_profile_handler_; // Unowned mojo::RemoteSet<mojom::CrosNetworkConfigObserver> observers_; mojo::ReceiverSet<mojom::CrosNetworkConfig> receivers_;
diff --git a/chromeos/services/network_config/cros_network_config_unittest.cc b/chromeos/services/network_config/cros_network_config_unittest.cc index 1183e6d..fdefd0a 100644 --- a/chromeos/services/network_config/cros_network_config_unittest.cc +++ b/chromeos/services/network_config/cros_network_config_unittest.cc
@@ -125,7 +125,8 @@ helper_.network_state_handler(), network_device_handler_.get(), cellular_inhibitor_.get(), cellular_esim_profile_handler_.get(), managed_network_configuration_handler_.get(), - network_connection_handler_.get(), network_certificate_handler_.get()); + network_connection_handler_.get(), network_certificate_handler_.get(), + network_profile_handler_.get()); SetupPolicy(); SetupNetworks(); } @@ -233,7 +234,7 @@ "Cellular.EID": "%s", "Profile": "%s"})", kCellularTestIccid, kCellularTestEid, NetworkProfileHandler::GetSharedProfilePath().c_str())); - helper().ConfigureService( + vpn_path_ = helper().ConfigureService( R"({"GUID": "vpn_guid", "Type": "vpn", "State": "association", "Provider": {"Type": "l2tpipsec"}})"); @@ -535,6 +536,26 @@ run_loop.Run(); } + mojom::AlwaysOnVpnPropertiesPtr GetAlwaysOnVpn() { + mojom::AlwaysOnVpnPropertiesPtr result; + base::RunLoop run_loop; + cros_network_config()->GetAlwaysOnVpn(base::BindOnce( + [](mojom::AlwaysOnVpnPropertiesPtr* result, + base::OnceClosure quit_closure, + mojom::AlwaysOnVpnPropertiesPtr properties) { + *result = std::move(properties); + std::move(quit_closure).Run(); + }, + &result, run_loop.QuitClosure())); + run_loop.Run(); + return result; + } + + void SetAlwaysOnVpn(mojom::AlwaysOnVpnPropertiesPtr properties) { + cros_network_config()->SetAlwaysOnVpn(std::move(properties)); + base::RunLoop().RunUntilIdle(); + } + bool ContainsVpnDeviceState( std::vector<mojom::DeviceStatePropertiesPtr> devices) { for (auto& device : devices) { @@ -574,6 +595,7 @@ return network_certificate_handler_.get(); } std::string wifi1_path() { return wifi1_path_; } + std::string vpn_path() { return vpn_path_; } protected: sync_preferences::TestingPrefServiceSyncable user_prefs_; @@ -596,6 +618,7 @@ std::unique_ptr<CrosNetworkConfig> cros_network_config_; std::unique_ptr<CrosNetworkConfigTestObserver> observer_; std::string wifi1_path_; + std::string vpn_path_; DISALLOW_COPY_AND_ASSIGN(CrosNetworkConfigTest); }; @@ -1723,5 +1746,67 @@ EXPECT_EQ(kTestProfileName, properties->name->active_value); } +TEST_F(CrosNetworkConfigTest, GetAlwaysOnVpn) { + mojom::AlwaysOnVpnPropertiesPtr properties; + + helper().SetProfileProperty(helper().ProfilePathUser(), + shill::kAlwaysOnVpnModeProperty, + base::Value("off")); + helper().SetProfileProperty(helper().ProfilePathUser(), + shill::kAlwaysOnVpnServiceProperty, + base::Value(vpn_path())); + properties = GetAlwaysOnVpn(); + EXPECT_EQ(mojom::AlwaysOnVpnMode::kOff, properties->mode); + EXPECT_EQ("vpn_guid", properties->service_guid); + + helper().SetProfileProperty(helper().ProfilePathUser(), + shill::kAlwaysOnVpnModeProperty, + base::Value("best-effort")); + properties = GetAlwaysOnVpn(); + EXPECT_EQ(mojom::AlwaysOnVpnMode::kBestEffort, properties->mode); + + helper().SetProfileProperty(helper().ProfilePathUser(), + shill::kAlwaysOnVpnModeProperty, + base::Value("strict")); + properties = GetAlwaysOnVpn(); + EXPECT_EQ(mojom::AlwaysOnVpnMode::kStrict, properties->mode); +} + +TEST_F(CrosNetworkConfigTest, SetAlwaysOnVpn) { + mojom::AlwaysOnVpnPropertiesPtr properties = + mojom::AlwaysOnVpnProperties::New(mojom::AlwaysOnVpnMode::kBestEffort, + "vpn_guid"); + SetAlwaysOnVpn(std::move(properties)); + + EXPECT_EQ("best-effort", + helper().GetProfileStringProperty(helper().ProfilePathUser(), + shill::kAlwaysOnVpnModeProperty)); + EXPECT_EQ(vpn_path(), helper().GetProfileStringProperty( + helper().ProfilePathUser(), + shill::kAlwaysOnVpnServiceProperty)); + + properties = mojom::AlwaysOnVpnProperties::New(mojom::AlwaysOnVpnMode::kOff, + std::string()); + SetAlwaysOnVpn(std::move(properties)); + + EXPECT_EQ("off", + helper().GetProfileStringProperty(helper().ProfilePathUser(), + shill::kAlwaysOnVpnModeProperty)); + EXPECT_EQ(vpn_path(), helper().GetProfileStringProperty( + helper().ProfilePathUser(), + shill::kAlwaysOnVpnServiceProperty)); + + properties = mojom::AlwaysOnVpnProperties::New(mojom::AlwaysOnVpnMode::kOff, + "another_service"); + SetAlwaysOnVpn(std::move(properties)); + + EXPECT_EQ("off", + helper().GetProfileStringProperty(helper().ProfilePathUser(), + shill::kAlwaysOnVpnModeProperty)); + EXPECT_EQ(vpn_path(), helper().GetProfileStringProperty( + helper().ProfilePathUser(), + shill::kAlwaysOnVpnServiceProperty)); +} + } // namespace network_config } // namespace chromeos
diff --git a/chromeos/services/network_config/public/cpp/cros_network_config_test_helper.cc b/chromeos/services/network_config/public/cpp/cros_network_config_test_helper.cc index 8a02619e..f3899c35 100644 --- a/chromeos/services/network_config/public/cpp/cros_network_config_test_helper.cc +++ b/chromeos/services/network_config/public/cpp/cros_network_config_test_helper.cc
@@ -36,7 +36,8 @@ /*cellular_esim_profile_handler=*/nullptr, network_configuration_handler, /*network_connection_handler=*/nullptr, - /*network_certificate_handler=*/nullptr); + /*network_certificate_handler=*/nullptr, + /*network_profile_handler=*/nullptr); } OverrideInProcessInstanceForTesting(cros_network_config_impl_.get()); }
diff --git a/chromeos/services/network_config/public/mojom/cros_network_config.mojom b/chromeos/services/network_config/public/mojom/cros_network_config.mojom index 1ee98d37..676e0d5 100644 --- a/chromeos/services/network_config/public/mojom/cros_network_config.mojom +++ b/chromeos/services/network_config/public/mojom/cros_network_config.mojom
@@ -135,6 +135,18 @@ kRefreshingProfileList }; +// Always-on VPN operating mode. +enum AlwaysOnVpnMode { + // Always-on VPN is disabled. + kOff, + // Always-on VPN is enabled, traffic goes through the tunnel as long as it is + // available, otherwise it falls back to the default network. + kBestEffort, + // Always-on VPN is enabled and traffic is blocked when the tunnel is not + // available. + kStrict, +}; + // The SIM card lock status for Cellular networks. struct SIMLockStatus { // The status of SIM lock. Possible values are 'sim-pin', 'sim-puk' or empty. @@ -883,6 +895,18 @@ bool device_wide; }; +// Always-on VPN configuration obtained with GetAlwaysOnVpn and set using +// SetAlwaysOnVpn for the purpose of enabling/disabling the feature and choosing +// the service to be automatically started. +struct AlwaysOnVpnProperties { + // Always-on VPN operating mode. + AlwaysOnVpnMode mode; + // GUID of the VPN service managed by always-on VPN. This can be configured + // independently of |mode|, but it expected to be only used when |mode| is not + // AlwaysOnVpnMode::kOff. + string service_guid; +}; + // Interface for fetching and setting network configuration properties, e.g. // from Settings WebUI or the SystemTray. interface CrosNetworkConfig { @@ -992,6 +1016,13 @@ // available for network configuration. See NetworkCerificate for more info. GetNetworkCertificates() => (array<NetworkCertificate> server_cas, array<NetworkCertificate> user_certs); + + // Returns the current always-on VPN configuration. + GetAlwaysOnVpn() => (AlwaysOnVpnProperties properties); + + // Sets the always-on VPN mode and service with |properties.mode| and + // |properties.service_guid|. The service GUID must match a VPN service. + SetAlwaysOnVpn(AlwaysOnVpnProperties properties); }; interface CrosNetworkConfigObserver {
diff --git a/chromeos/strings/chromeos_strings_af.xtb b/chromeos/strings/chromeos_strings_af.xtb index 3492a774..7d6c361 100644 --- a/chromeos/strings/chromeos_strings_af.xtb +++ b/chromeos/strings/chromeos_strings_af.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Stawing</translation> <translation id="5154917547274118687">Geheue</translation> <translation id="5168185087976003268">Batterygesondheid</translation> +<translation id="5170568018924773124">Wys in vouer</translation> <translation id="5212543919916444558">Ek kry niks op jou skerm waarmee ek kan help nie. Probeer die mikrofoon tik om my enigiets te vra.</translation> <translation id="5222676887888702881">Meld af</translation>
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index cdace21..2fcda37 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ማረጋገጥ</translation> <translation id="5154917547274118687">ማህደረ ትውስታ</translation> <translation id="5168185087976003268">የባትሪ ጤንነት</translation> +<translation id="5170568018924773124">በአቃፊ አሳይ</translation> <translation id="5212543919916444558">እኔ ላግዝ የምችልበት ምንም ነገር በእርስዎ ማያ ገጽ ላይ አላገኘሁም። ማንኛውም ነገር እኔን ለመጠየቅ ማይክሮፎኑን መታ አድርገው ይሞክሩ።</translation> <translation id="5222676887888702881">ዘግተህ ውጣ</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb index be088b06..54d36014 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">المصادقة</translation> <translation id="5154917547274118687">الذاكرة</translation> <translation id="5168185087976003268">حالة البطارية</translation> +<translation id="5170568018924773124">العرض في المجلد</translation> <translation id="5212543919916444558">يتعذَّر عليَّ العثور على شيء مفيد في هذه الشاشة. يُرجى تجربة النقر على الميكروفون لمطالبتي بأي شيء.</translation> <translation id="5222676887888702881">تسجيل الخروج</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index 13af07d..0a4ec2b 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">বিশ্বাসযোগ্যতাৰ প্ৰমাণীকৰণ</translation> <translation id="5154917547274118687">মেম’ৰি</translation> <translation id="5168185087976003268">বেটাৰীৰ অৱস্থা</translation> +<translation id="5170568018924773124">ফ’ল্ডাৰত দেখুৱাওক</translation> <translation id="5212543919916444558">আপোনাক সহায় কৰিব পৰাকৈ মই আপোনাৰ স্ক্ৰীণত একো বিচাৰি পোৱা নাই। মোক কিবা সুধিবলৈ মাইকটো টিপক।</translation> <translation id="5222676887888702881">ছাইন আউট কৰক</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index 45a1e0e0..823268e 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">İdentifikasiya</translation> <translation id="5154917547274118687">Yaddaş</translation> <translation id="5168185087976003268">Enerji statusu</translation> +<translation id="5170568018924773124">Qovluqda göstərin</translation> <translation id="5212543919916444558">Ekranınızda kömək edə biləcəyim heç nə tapmadım. Məndən hər hansı bir şey soruşmaq üçün mikrofona klikləyin.</translation> <translation id="5222676887888702881">Hesabdan çıxın</translation> <translation id="5252456968953390977">Rominq</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb index 9953aa5f..f0f1b3b 100644 --- a/chromeos/strings/chromeos_strings_be.xtb +++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Аўтэнтыфікацыя</translation> <translation id="5154917547274118687">Памяць</translation> <translation id="5168185087976003268">Стан акумулятара</translation> +<translation id="5170568018924773124">Паказаць у папцы</translation> <translation id="5212543919916444558">Я не магу знайсці на экране нічога, з чым я мог бы вам дапамагчы. Каб спытаць мяне аб чым-небудзь, паспрабуйце дакрануцца да мікрафона.</translation> <translation id="5222676887888702881">Выйсці</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb index 4729c91..b75b33f 100644 --- a/chromeos/strings/chromeos_strings_bg.xtb +++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Удостоверяване</translation> <translation id="5154917547274118687">Памет</translation> <translation id="5168185087976003268">Състояние на батерията</translation> +<translation id="5170568018924773124">Показване в папката</translation> <translation id="5212543919916444558">На екрана ви не намирам нищо, за което да мога да ви помогна. Докоснете иконата на микрофон, за да ме попитате каквото и да е.</translation> <translation id="5222676887888702881">Изход</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb index 04dfdb27..0d142cf 100644 --- a/chromeos/strings/chromeos_strings_bn.xtb +++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">প্রমাণীকরণ</translation> <translation id="5154917547274118687">স্মৃতি</translation> <translation id="5168185087976003268">ব্যাটারির স্বাস্থ্য</translation> +<translation id="5170568018924773124">ফোল্ডারে দেখান</translation> <translation id="5212543919916444558">আপনাকে সাহায্য করতে পারি এমন কিছুই আপনার স্ক্রিনে আমি খুঁজে পাইনি। আমাকে কিছু জিজ্ঞাসা করতে মাইকে ট্যাপ করুন।</translation> <translation id="5222676887888702881">সাইন-আউট করুন</translation> <translation id="5252456968953390977">রোমিং</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index 3d95db6a3..e591e1f 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentifikacija</translation> <translation id="5154917547274118687">Memorija</translation> <translation id="5168185087976003268">Stanje baterije</translation> +<translation id="5170568018924773124">Pokaži u mapi</translation> <translation id="5212543919916444558">Ne mogu pronaći ništa na ekranu u vezi s čim mogu pomoći. Pokušajte dodirnuti mikrofon da me nešto pitate.</translation> <translation id="5222676887888702881">Odjava</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb index a5f9bbbf..bf86b7bd 100644 --- a/chromeos/strings/chromeos_strings_ca.xtb +++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autenticació</translation> <translation id="5154917547274118687">Memòria</translation> <translation id="5168185087976003268">Estat de la bateria</translation> +<translation id="5170568018924773124">Mostra a la carpeta</translation> <translation id="5212543919916444558">No he trobat res a la pantalla amb què et pugui ajudar. Toca el micròfon per demanar-me qualsevol cosa.</translation> <translation id="5222676887888702881">Tanca la sessió</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb index b8a61f6..8c1b5a61 100644 --- a/chromeos/strings/chromeos_strings_cs.xtb +++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Ověření</translation> <translation id="5154917547274118687">Paměť</translation> <translation id="5168185087976003268">Opotřebení baterie</translation> +<translation id="5170568018924773124">Zobrazit ve složce</translation> <translation id="5212543919916444558">Na obrazovce nevidím nic, s čím vám můžu pomoct. Zkuste klepnout na mikrofon a zeptat se.</translation> <translation id="5222676887888702881">Odhlásit se</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb index 078e6b1d..d0a9ddc 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Godkendelse</translation> <translation id="5154917547274118687">Hukommelse</translation> <translation id="5168185087976003268">Batteriets tilstand</translation> +<translation id="5170568018924773124">Vis i mappe</translation> <translation id="5212543919916444558">Jeg kan ikke finde noget på skærmen, jeg kan hjælpe med. Prøv at trykke på mikrofonen for at spørge mig om noget.</translation> <translation id="5222676887888702881">Log ud</translation> <translation id="5252456968953390977">Roaming</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb index 302fe0d..4e53fe4 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Authentifizierung</translation> <translation id="5154917547274118687">Speicher</translation> <translation id="5168185087976003268">Akkuzustand</translation> +<translation id="5170568018924773124">In Ordner zeigen</translation> <translation id="5212543919916444558">Ich finde nichts auf deinem Display, wobei ich dir helfen könnte. Tippe auf das Mikrofon und sag mir, was du wissen möchtest.</translation> <translation id="5222676887888702881">Abmelden</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb index 0fc07e4..d5538c1d 100644 --- a/chromeos/strings/chromeos_strings_el.xtb +++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Έλεγχος ταυτότητας</translation> <translation id="5154917547274118687">Μνήμη</translation> <translation id="5168185087976003268">Κατάσταση μπαταρίας</translation> +<translation id="5170568018924773124">Εμφάνιση στο φάκελο</translation> <translation id="5212543919916444558">Δεν βρέθηκε κάτι με το οποίο να μπορώ να σας βοηθήσω στην οθόνη σας. Πατήστε στο μικρόφωνο για να ρωτήσετε οτιδήποτε θέλετε.</translation> <translation id="5222676887888702881">Έξοδος</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index 5c3dbcd..1f9f951 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -81,6 +81,7 @@ <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="2983662233540284543">Learn from a game creator, get game design apps and more</translation> <translation id="3008341117444806826">REFRESH</translation> <translation id="3009958530611748826">Select a folder to save to</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> @@ -192,6 +193,8 @@ <translation id="5142961317498132443">Authentication</translation> <translation id="5154917547274118687">Memory</translation> <translation id="5168185087976003268">Battery health</translation> +<translation id="5170568018924773124">Show in folder</translation> +<translation id="519607504553633437">Design and build your own games</translation> <translation id="5212543919916444558">I can't find anything on your screen that I can help with. Try tapping the mic to ask me anything.</translation> <translation id="5222676887888702881">Sign out</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index 9ee59e8..d2b715b 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autenticación</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Estado de la batería</translation> +<translation id="5170568018924773124">Mostrar en carpeta</translation> <translation id="5212543919916444558">No hay nada en la pantalla con lo que pueda ayudarte. Intenta presionar el micrófono para hacerme una pregunta.</translation> <translation id="5222676887888702881">Salir</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb index 708baab..95bd398 100644 --- a/chromeos/strings/chromeos_strings_es.xtb +++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autenticación</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Estado de la batería</translation> +<translation id="5170568018924773124">Mostrar en carpeta</translation> <translation id="5212543919916444558">No encuentro nada en la pantalla con lo que pueda ayudarte. Toca el micrófono para pedirme algo.</translation> <translation id="5222676887888702881">Cerrar sesión</translation> <translation id="5252456968953390977">Roaming</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb index 6c45b7f4..04417c0 100644 --- a/chromeos/strings/chromeos_strings_et.xtb +++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentimine</translation> <translation id="5154917547274118687">Mälu</translation> <translation id="5168185087976003268">Aku seisukord</translation> +<translation id="5170568018924773124">Kuva kaustas</translation> <translation id="5212543919916444558">Ma ei leia teie ekraanilt midagi, mille puhul saaksin aidata. Kui soovite mulle küsimuse esitada, puudutage mikrofoni.</translation> <translation id="5222676887888702881">Logi välja</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb index c58f20d..0e42567 100644 --- a/chromeos/strings/chromeos_strings_eu.xtb +++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentifikazioa</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Bateriaren egoera</translation> +<translation id="5170568018924773124">Erakutsi karpetan</translation> <translation id="5212543919916444558">Ezin dizut lagundu pantailako ezerekin. Sakatu mikrofonoa zerbait galdetu nahi badidazu.</translation> <translation id="5222676887888702881">Amaitu saioa</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index ab948a8..88804ed 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">اصالتسنجی</translation> <translation id="5154917547274118687">حافظه</translation> <translation id="5168185087976003268">سلامت باتری</translation> +<translation id="5170568018924773124">نمایش در پوشه</translation> <translation id="5212543919916444558">در صفحهتان چیزی پیدا نمیکنم تا درمورد آن کمکتان کنم. برای درخواست از من، روی میکروفون ضربه بزنید.</translation> <translation id="5222676887888702881">خروج از سیستم</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb index 1df70b0..602ba6f 100644 --- a/chromeos/strings/chromeos_strings_fi.xtb +++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Todennus</translation> <translation id="5154917547274118687">Muisti</translation> <translation id="5168185087976003268">Akun toiminta</translation> +<translation id="5170568018924773124">Näytä kansiossa</translation> <translation id="5212543919916444558">En löydä näytöltä mitään, minkä kanssa voisin auttaa sinua. Napauta mikrofonia, niin voit kysyä mitä haluat.</translation> <translation id="5222676887888702881">Kirjaudu ulos</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb index 04e5a46..8a3b5973 100644 --- a/chromeos/strings/chromeos_strings_fil.xtb +++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Pag-authenticate</translation> <translation id="5154917547274118687">Memorya</translation> <translation id="5168185087976003268">Tagal ng baterya</translation> +<translation id="5170568018924773124">Ipinakita sa folder</translation> <translation id="5212543919916444558">Wala akong makitang kahit ano sa iyong screen kung saan ako makakatulong. Subukang i-tap ang mikropono para humiling sa akin ng kahit ano.</translation> <translation id="5222676887888702881">Mag-sign out</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb index de6ec0e..84934ff 100644 --- a/chromeos/strings/chromeos_strings_fr-CA.xtb +++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Authentification</translation> <translation id="5154917547274118687">Mémoire</translation> <translation id="5168185087976003268">État de la pile</translation> +<translation id="5170568018924773124">Afficher dans le dossier</translation> <translation id="5212543919916444558">Je ne trouve aucun élément sur votre écran pour lequel je peux vous aider. Essayez de toucher le micro pour me demander ce que vous souhaitez.</translation> <translation id="5222676887888702881">Déconnexion</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index ab35c41..43aecbb 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Authentification</translation> <translation id="5154917547274118687">Mémoire</translation> <translation id="5168185087976003268">État de la batterie</translation> +<translation id="5170568018924773124">Afficher le dossier</translation> <translation id="5212543919916444558">Je ne parviens pas à détecter d'éléments sur votre écran pour lesquels je peux vous aider. Veuillez appuyer sur le micro pour me poser une question.</translation> <translation id="5222676887888702881">Déconnexion</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb index 585716e..f48ab068 100644 --- a/chromeos/strings/chromeos_strings_gl.xtb +++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autenticación</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Estado da batería</translation> +<translation id="5170568018924773124">Mostrar no cartafol</translation> <translation id="5212543919916444558">Non atopo nada na pantalla co que che poida axudar. Proba a tocar o micrófono para preguntarme algo.</translation> <translation id="5222676887888702881">Pechar sesión</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index 4d43a5c..cabb40f3 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">પ્રમાણીકરણ</translation> <translation id="5154917547274118687">મેમરી</translation> <translation id="5168185087976003268">બૅટરીની ક્ષમતા</translation> +<translation id="5170568018924773124">ફોલ્ડરમાં બતાવો</translation> <translation id="5212543919916444558">મને તમારી સ્ક્રીન પર એવી કોઈપણ વસ્તુ મળી નથી કે જેમાં હું તમારી સહાય કરી શકું. મને કંઈપણ પૂછવા માટે માઇકને ટૅપ કરી જુઓ.</translation> <translation id="5222676887888702881">સાઇન આઉટ</translation> <translation id="5252456968953390977">રોમિંગ</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index 22a0c32..30619a9 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">पहचान करना</translation> <translation id="5154917547274118687">मेमोरी</translation> <translation id="5168185087976003268">बैटरी की स्थिति</translation> +<translation id="5170568018924773124">फ़ोल्डर में दिखाएं</translation> <translation id="5212543919916444558">मुझे आपकी स्क्रीन पर ऐसा कुछ नहीं मिला जिसमें मैं आपकी सहायता कर पाऊं. मुझे कुछ पूछने के लिए माइक टैप करके देखें.</translation> <translation id="5222676887888702881">साइन आउट करें</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb index 044544a..694e4c7d 100644 --- a/chromeos/strings/chromeos_strings_hr.xtb +++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentifikacija</translation> <translation id="5154917547274118687">Memorija</translation> <translation id="5168185087976003268">Zdravlje baterije</translation> +<translation id="5170568018924773124">Pokaži u mapi</translation> <translation id="5212543919916444558">Na zaslonu ne mogu pronaći ništa u vezi s čime mogu pružiti pomoć. Dodirnite mikrofon da biste mi dali glasovnu naredbu.</translation> <translation id="5222676887888702881">Odjava</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb index 7c27da2..17c24178 100644 --- a/chromeos/strings/chromeos_strings_hu.xtb +++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Hitelesítés</translation> <translation id="5154917547274118687">Memória</translation> <translation id="5168185087976003268">Akkumulátor egészsége</translation> +<translation id="5170568018924773124">Megjelenítés mappában</translation> <translation id="5212543919916444558">Nem találok semmi olyat a képernyőn, amellyel kapcsolatban segíthetnék. Koppintson a mikrofonra, és kérdezzen tőlem.</translation> <translation id="5222676887888702881">Kijelentkezés</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb index 3fc2dee..d519ae80 100644 --- a/chromeos/strings/chromeos_strings_hy.xtb +++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Նույնականացում</translation> <translation id="5154917547274118687">Հիշողություն</translation> <translation id="5168185087976003268">Մարտկոցի կարգավիճակը</translation> +<translation id="5170568018924773124">Ցույց տալ պանակում</translation> <translation id="5212543919916444558">Չհաջողվեց գտնել քարտեր էկրանին: Փորձեք օգտագործել խոսափողը` առաջադրանքներ տալու համար:</translation> <translation id="5222676887888702881">Դուրս գրվել</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb index a806b7f..4d9fb43 100644 --- a/chromeos/strings/chromeos_strings_id.xtb +++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentikasi</translation> <translation id="5154917547274118687">Memori</translation> <translation id="5168185087976003268">Kesehatan baterai</translation> +<translation id="5170568018924773124">Tampilkan dalam folder</translation> <translation id="5212543919916444558">Di layar tidak ada apa pun yang membutuhkan bantuan saya. Ketuk mikrofon untuk bertanya apa saja.</translation> <translation id="5222676887888702881">Logout</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb index 7f1ac9e..038c5be 100644 --- a/chromeos/strings/chromeos_strings_is.xtb +++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Auðkenning</translation> <translation id="5154917547274118687">Minni</translation> <translation id="5168185087976003268">Ástand rafhlöðu</translation> +<translation id="5170568018924773124">Sýna í möppu</translation> <translation id="5212543919916444558">Ég finn ekkert á skjánum sem ég get aðstoðað þig með. Prófaðu að ýta á hljóðnemann til að spyrja mig að hverju sem er.</translation> <translation id="5222676887888702881">Skrá út</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index e57c6ca4..cb0e45d6 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autenticazione</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Condizioni batteria</translation> +<translation id="5170568018924773124">Mostra nella cartella</translation> <translation id="5212543919916444558">Non riesco a trovare nulla sullo schermo per cui poterti essere utile. Prova a toccare il microfono per chiedermi qualcosa.</translation> <translation id="5222676887888702881">Esci</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index a0c770d..84af803 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">אימות</translation> <translation id="5154917547274118687">זיכרון</translation> <translation id="5168185087976003268">תקינות הסוללה</translation> +<translation id="5170568018924773124">הצגה בתיקייה</translation> <translation id="5212543919916444558">לא מצאתי במסך משהו שאוכל לעזור בו. אפשר להקיש על המיקרופון כדי לשאול אותי משהו.</translation> <translation id="5222676887888702881">יציאה</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb index 50945b0..160d018 100644 --- a/chromeos/strings/chromeos_strings_ja.xtb +++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">認証</translation> <translation id="5154917547274118687">メモリ</translation> <translation id="5168185087976003268">電池の状態</translation> +<translation id="5170568018924773124">フォルダを開く</translation> <translation id="5212543919916444558">画面からはサポートできる内容が見つかりませんでした。 マイクをタップして質問してみてください。</translation> <translation id="5222676887888702881">ログアウト</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index be746dd..f731ba3 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ავტორიზაცია</translation> <translation id="5154917547274118687">მეხსიერება</translation> <translation id="5168185087976003268">ბატარეის მდგომარეობა</translation> +<translation id="5170568018924773124">საქაღალდეში ჩვენება</translation> <translation id="5212543919916444558">თქვენს ეკრანზე ვერაფერი მოიძებნა, რითაც თქვენს დახმარებას შევძლებდი. გთხოვთ, შეეხოთ მიკროფონს და მკითხოთ, რაც გსურთ.</translation> <translation id="5222676887888702881">გამოსვლა</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb index 0163c9a..3f5fb2a 100644 --- a/chromeos/strings/chromeos_strings_kk.xtb +++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Аутентификация</translation> <translation id="5154917547274118687">Жад</translation> <translation id="5168185087976003268">Батарея күйі</translation> +<translation id="5170568018924773124">Қалтада көрсету</translation> <translation id="5212543919916444558">Экранда мен көмектесе алатын ештеңе жоқ. Микрофон белгішесін түртіп, маған сұрақ қойыңыз.</translation> <translation id="5222676887888702881">Шығу</translation> <translation id="5252456968953390977">Роуминг</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb index acd05c9..98a6bbf 100644 --- a/chromeos/strings/chromeos_strings_km.xtb +++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -81,6 +81,7 @@ <translation id="2862104018715411648">ដាក់ឯកសាររបស់អ្នកនៅលើម៉ាស៊ីនស្កេន រួចជ្រើសរើស "ស្កេន" ដើម្បីចាប់ផ្ដើម</translation> <translation id="2872961005593481000">បិទ</translation> <translation id="2878387241690264070">បានឈប់សាកថ្ម <ph name="RATE" /> ក្នុងរយៈពេល <ph name="NUM_SECONDS" /> វិនាទី។</translation> +<translation id="2983662233540284543">ស្វែងយល់ពីអ្នកបង្កើតហ្គេម យកកម្មវិធីរចនាហ្គេម និងអ្វីៗជាច្រើនទៀត</translation> <translation id="3008341117444806826">ផ្ទុកឡើងវិញ</translation> <translation id="3009958530611748826">ជ្រើសរើសថត ដើម្បីរក្សាទុកឯកសារស្កេន</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> @@ -192,6 +193,8 @@ <translation id="5142961317498132443">ការផ្ទៀងផ្ទាត់</translation> <translation id="5154917547274118687">មេម៉ូរី</translation> <translation id="5168185087976003268">គុណភាពថ្ម</translation> +<translation id="5170568018924773124">បង្ហាញនៅក្នុងថតឯកសារ</translation> +<translation id="519607504553633437">រចនា និងបង្កើតហ្គេមរបស់អ្នក</translation> <translation id="5212543919916444558">ខ្ញុំរកមិនឃើញអ្វីដែលខ្ញុំអាចជួយបាននៅលើអេក្រង់របស់អ្នកទេ។ សាកល្បងចុចមីក្រូហ្វូន ដើម្បីសួរខ្ញុំអំពីអ្វីម្យ៉ាង។</translation> <translation id="5222676887888702881">ចាកចេញ</translation> <translation id="5252456968953390977">រ៉ូមីង</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb index 3fab28f79a..017b134 100644 --- a/chromeos/strings/chromeos_strings_kn.xtb +++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ಪ್ರಮಾಣೀಕರಣ</translation> <translation id="5154917547274118687">ಸ್ಮರಣೆ</translation> <translation id="5168185087976003268">ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ:</translation> +<translation id="5170568018924773124">ಫೋಲ್ಡರ್ನಲ್ಲಿ ತೋರಿಸಿ</translation> <translation id="5212543919916444558">ನಾನು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದಾದ ಯಾವುದೇ ವಿಷಯ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ನನಗೆ ಕಾಣಿಸಿಲ್ಲ. ನನ್ನ ಬಳಿ ಏನಾದರೂ ಕೇಳಬೇಕಿದ್ದರೆ, ಮೈಕ್ ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="5222676887888702881">ಸೈನ್ ಔಟ್</translation> <translation id="5252456968953390977">ರೋಮಿಂಗ್</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb index 76b4e87a..969b784 100644 --- a/chromeos/strings/chromeos_strings_ko.xtb +++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">인증</translation> <translation id="5154917547274118687">메모리</translation> <translation id="5168185087976003268">배터리 상태</translation> +<translation id="5170568018924773124">폴더 열기</translation> <translation id="5212543919916444558">화면에 도움을 드릴 수 있는 항목이 보이지 않습니다. 마이크를 탭하여 무엇이든지 물어보세요.</translation> <translation id="5222676887888702881">로그아웃</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb index 3ca52d6..98f3ae4 100644 --- a/chromeos/strings/chromeos_strings_ky.xtb +++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Аныктыгын текшерүү</translation> <translation id="5154917547274118687">Эстутум</translation> <translation id="5168185087976003268">Батареянын иштөө мөөнөтү</translation> +<translation id="5170568018924773124">Куржунда көрсөтүү</translation> <translation id="5212543919916444558">Экраныңызда эч нерсе көрүнгөн жок. Мага суроо берүү үчүн микрофонду таптап коюңуз.</translation> <translation id="5222676887888702881">Чыгуу</translation>
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb index c27f933..f1b4b8e 100644 --- a/chromeos/strings/chromeos_strings_lo.xtb +++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ການຮັບຮອງຄວາມຖືກຕ້ອງ</translation> <translation id="5154917547274118687">ຄວາມຈໍາ</translation> <translation id="5168185087976003268">ສະຖານະແບັດເຕີຣີ</translation> +<translation id="5170568018924773124">ສະແດງຢູ່ໃນໂຟລເດີ</translation> <translation id="5212543919916444558">ຂ້ອຍບໍ່ສາມາດຊອກເຫັນອັນໃດຢູ່ໃນໜ້າຈໍຂອງທ່ານທີ່ຂ້ອຍສາມາດຊ່ວຍໄດ້. ລອງແຕະໄມເພື່ອຖາມຂ້ອຍອັນໃດກໍໄດ້.</translation> <translation id="5222676887888702881">ອອກຈາກລະບົບ</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb index 7b5319eb..a1d4a06 100644 --- a/chromeos/strings/chromeos_strings_lt.xtb +++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentifikavimas</translation> <translation id="5154917547274118687">Atmintis</translation> <translation id="5168185087976003268">Akumuliatoriaus būsena</translation> +<translation id="5170568018924773124">Rodyti aplanke</translation> <translation id="5212543919916444558">Ekrane nieko nerasta, dėl ko galėtume jums padėti. Palieskite mikrofoną, kad užduotumėte reikiamus klausimus.</translation> <translation id="5222676887888702881">Atsijungti</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb index 55281b16..8375df8b 100644 --- a/chromeos/strings/chromeos_strings_lv.xtb +++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentifikācija</translation> <translation id="5154917547274118687">Atmiņa</translation> <translation id="5168185087976003268">Akumulatora stāvoklis</translation> +<translation id="5170568018924773124">Rādīt mapē</translation> <translation id="5212543919916444558">Ekrānā neredzu neko, ar ko varētu palīdzēt. Pieskarieties mikrofonam, lai uzdotu man jautājumu.</translation> <translation id="5222676887888702881">Izrakstīties</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb index 502fa25..a5fcfec8a 100644 --- a/chromeos/strings/chromeos_strings_mk.xtb +++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Проверка</translation> <translation id="5154917547274118687">Меморија</translation> <translation id="5168185087976003268">Состојба на батеријата</translation> +<translation id="5170568018924773124">Прикажи во папка</translation> <translation id="5212543919916444558">Не можам да најдам ништо на екранот со што би можел ви помогнам. Допрете го микрофонот за да ме прашате нешто.</translation> <translation id="5222676887888702881">Одјави се</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index f8d1995..e4bc4aa 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">പരിശോധിച്ചുറപ്പിക്കൽ</translation> <translation id="5154917547274118687">മെമ്മറി</translation> <translation id="5168185087976003268">ബാറ്ററിയുടെ പ്രവർത്തനക്ഷമത</translation> +<translation id="5170568018924773124">ഫോള്ഡറില് കാണിക്കുക</translation> <translation id="5212543919916444558">എനിക്ക് സഹായിക്കാനാവുന്ന ഒന്നും നിങ്ങളുടെ സ്ക്രീനിൽ കണ്ടെത്താനാവുന്നില്ല. എന്നോട് എന്തെങ്കിലും ആവശ്യപ്പെടാൻ മൈക്ക് ടാപ്പ് ചെയ്യുന്നത് പരീക്ഷിക്കൂ.</translation> <translation id="5222676887888702881">സൈൻ ഔട്ട് ചെയ്യുക</translation> <translation id="5252456968953390977">റോമിംഗ്</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb index eb81fab..14c86ea4 100644 --- a/chromeos/strings/chromeos_strings_mn.xtb +++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -81,6 +81,7 @@ <translation id="2862104018715411648">Эхлүүлэхийн тулд документоо сканнер дээр байрлуулж, скан хийхийг сонгоно уу</translation> <translation id="2872961005593481000">Унтраах</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> секундэд <ph name="RATE" /> цэнэггүй болсон.</translation> +<translation id="2983662233540284543">Тоглоомын зохиогчоос суралцаж, тоглоом бүтээх аппуудыг авч, илүү ихийг хийгээрэй</translation> <translation id="3008341117444806826">ДАХИН ШИНЭЧЛЭХ</translation> <translation id="3009958530611748826">Хадгалах фолдероо сонгоно уу</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />мA</translation> @@ -192,6 +193,8 @@ <translation id="5142961317498132443">Баталгаажуулалт</translation> <translation id="5154917547274118687">Санах ойн</translation> <translation id="5168185087976003268">Батарей барилт</translation> +<translation id="5170568018924773124">Хавтсанд харуул</translation> +<translation id="519607504553633437">Өөрийн тоглоомуудыг бүтээж, боловсруулаарай</translation> <translation id="5212543919916444558">Би таны дэлгэцээс туслах боломжтой зүйл олсонгүй. Асуух зүйл байвал микрофоныг товшиж үзнэ үү.</translation> <translation id="5222676887888702881">Гарах</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index a2dbf30a..90a8caee 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ऑथेंटिकेशन</translation> <translation id="5154917547274118687">मेमरी</translation> <translation id="5168185087976003268">बॅटरीची स्थिती</translation> +<translation id="5170568018924773124">फोल्डरमध्ये दर्शवा</translation> <translation id="5212543919916444558">मी मदत करू शकेन असे मला तुमच्या स्क्रीनवर काही आढळले नाही. मला काहीही विचारण्यासाठी माइकवर टॅप करून पाहा.</translation> <translation id="5222676887888702881">साइन आउट करा</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index e63ea43..ad6a19a4 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Pengesahan</translation> <translation id="5154917547274118687">Memori</translation> <translation id="5168185087976003268">Kesihatan bateri</translation> +<translation id="5170568018924773124">Paparkan dalam folder</translation> <translation id="5212543919916444558">Saya tidak menemui apa-apa pada skrin anda yang boleh saya bantu. Cuba ketik mikrofon untuk bertanyakan sebarang perkara kepada saya.</translation> <translation id="5222676887888702881">Log keluar</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index 204ef72..a5e7fd4 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -128,7 +128,7 @@ <translation id="397105322502079400">တွက်ချက်နေ...</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> ရက်အထက် ပရင့်ထုတ်ရန်ဖိုင်များကို ဖယ်ရှားပါမည်</translation> <translation id="4003384961948020559">မအောင်မြင်ပါ - စာရွက်ထုတ်သည့်နေရာ ပြည့်နေသည်</translation> -<translation id="4034824040120875894">ပုံနှိပ်စက်</translation> +<translation id="4034824040120875894">ပရင်တာ</translation> <translation id="4131410914670010031">အမည်း နှင့် အဖြူ</translation> <translation id="4145784616224233563">HTTP Firewall</translation> <translation id="4155551848414053977">စကင်ဖတ်စက်ဖွင့်ထားပြီး သင့်ကွန်ရက် (သို့) တိုက်ရိုက်ချိတ်ဆက်မှုမှတစ်ဆင့် သုံးနိုင်ကြောင်း သေချာပါစေ</translation> @@ -192,6 +192,7 @@ <translation id="5142961317498132443">အထောက်အထားစိစစ်မှု</translation> <translation id="5154917547274118687">မှတ်ဉာဏ်</translation> <translation id="5168185087976003268">ဘက်ထရီအခြေအနေ</translation> +<translation id="5170568018924773124">ဖိုလ်ဒါ ထဲမှာ ပြရန်</translation> <translation id="5212543919916444558">သင့်မျက်နှာပြင်တွင် ကျွန်ုပ်ကူညီနိုင်သည့် အကြောင်းအရာများကို မတွေ့ပါ။ မိုက်ကို တို့ပြီး နှစ်သက်ရာ မေးနိုင်ပါသည်။</translation> <translation id="5222676887888702881">ထွက်ခွာရန်</translation> <translation id="5252456968953390977">ရွမ်မင်း</translation> @@ -266,7 +267,7 @@ <translation id="6517239166834772319">စူးစမ်းလေ့လာခြင်း</translation> <translation id="6527081081771465939">အမည်မသိ WiFi လုံခြုံရေးပရိုတိုကော</translation> <translation id="65587193855025101">ပက်လက်တင်ရန်ဗန်း</translation> -<translation id="6564646048574748301">မအောင်မြင်ပါ - ပုံနှိပ်စက်ကို ဆက်သွယ်၍မရပါ</translation> +<translation id="6564646048574748301">မအောင်မြင်ပါ - ပရင်တာကို ဆက်သွယ်၍မရပါ</translation> <translation id="6618744767048954150">လုပ်ဆောင်နေသည်</translation> <translation id="6620487321149975369">ပရင့်ထုတ်ရန်ဖိုင်များကို ကိုယ်တိုင်မဖယ်ရှားပါက မှတ်တမ်းတွင် ပြပါမည်</translation> <translation id="6643016212128521049">ရှင်းရန်</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb index 7be17292..331861d 100644 --- a/chromeos/strings/chromeos_strings_ne.xtb +++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">प्रमाणीकरण</translation> <translation id="5154917547274118687">स्मरण</translation> <translation id="5168185087976003268">ब्याट्रीको अवस्था</translation> +<translation id="5170568018924773124">फोल्डरमा देखाउनुहोस्</translation> <translation id="5212543919916444558">मैले तपाईंको स्क्रिनमा आफूले मद्दत गर्न मिल्ने कुनै पनि कुरा फेला पार्न सकिन। मलाई केही कुरा सोध्न माइकमा ट्याप गरी हेर्नुहोस्।</translation> <translation id="5222676887888702881">साइन आउट गर्नुहोस्</translation> <translation id="5252456968953390977">रोमिङ</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index d821313..8fbca2d 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Verificatie</translation> <translation id="5154917547274118687">Geheugen</translation> <translation id="5168185087976003268">Batterijprestaties</translation> +<translation id="5170568018924773124">Tonen in map</translation> <translation id="5212543919916444558">Ik heb niets gevonden op je scherm waarmee ik kan helpen. Tik op de microfoon om me iets te vragen.</translation> <translation id="5222676887888702881">Uitloggen</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb index 6689ff4..9bde2271 100644 --- a/chromeos/strings/chromeos_strings_no.xtb +++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentisering</translation> <translation id="5154917547274118687">Minne</translation> <translation id="5168185087976003268">Batterihelse</translation> +<translation id="5170568018924773124">Vis i mappen</translation> <translation id="5212543919916444558">Jeg finner ikke noe på skjermen jeg kan hjelpe deg med. Prøv å trykke på mikrofonen for å spørre meg om noe.</translation> <translation id="5222676887888702881">Logg av</translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb index 5741757..8ebc5a89 100644 --- a/chromeos/strings/chromeos_strings_or.xtb +++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ପ୍ରମାଣିକରଣ</translation> <translation id="5154917547274118687">ମେମୋରୀ</translation> <translation id="5168185087976003268">ବ୍ୟାଟେରୀ ହେଲ୍ଥ</translation> +<translation id="5170568018924773124">ଫୋଲ୍ଡରରେ ଦେଖାନ୍ତୁ</translation> <translation id="5212543919916444558">ଆପଣଙ୍କର ସ୍କ୍ରିନ୍ରେ ମୁଁ କିଛି ଖୋଜିପାଇଲି ନାହିଁ ଯାହାଦ୍ୱାରା ମୁଁ ଆପଣଙ୍କୁ ସାହାଯ୍ୟ କରିପାରିବି। ମୋତେ ଯାହା କିଛି ପଚାରିବା ପାଇଁ ମାଇକ୍ ଟାପ୍ କରି ଦେଖନ୍ତୁ।</translation> <translation id="5222676887888702881">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb index 1481de0..4c1b2156 100644 --- a/chromeos/strings/chromeos_strings_pa.xtb +++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ਪ੍ਰਮਾਣੀਕਰਨ</translation> <translation id="5154917547274118687">ਮੈਮਰੀ</translation> <translation id="5168185087976003268">ਬੈਟਰੀ ਦੀ ਸਥਿਤੀ</translation> +<translation id="5170568018924773124">ਫੋਲਡਰ ਵਿੱਚ ਦਿਖਾਓ</translation> <translation id="5212543919916444558">ਮੈਨੂੰ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ 'ਤੇ ਅਜਿਹਾ ਕੁਝ ਵੀ ਨਹੀਂ ਮਿਲਿਆ ਜਿਸ ਵਿੱਚ ਮੈਂ ਤੁਹਾਡੀ ਮਦਦ ਕਰ ਸਕਾਂ। ਮੇਰੇ ਤੋਂ ਕੁਝ ਵੀ ਪੁੱਛਣ ਲਈ ਮਾਈਕ 'ਤੇ ਟੈਪ ਕਰਕੇ ਦੇਖੋ।</translation> <translation id="5222676887888702881">ਸਾਈਨ-ਆਊਟ ਕਰੋ</translation> <translation id="5252456968953390977">ਰੋਮਿੰਗ</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb index 220578d0..8b7a64c 100644 --- a/chromeos/strings/chromeos_strings_pl.xtb +++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Uwierzytelnianie</translation> <translation id="5154917547274118687">Pamięć</translation> <translation id="5168185087976003268">Kondycja baterii</translation> +<translation id="5170568018924773124">Pokaż w folderze</translation> <translation id="5212543919916444558">Na Twoim ekranie nie ma nic, w czym mogę pomóc. Kliknij mikrofon i zadaj pytanie.</translation> <translation id="5222676887888702881">Wyloguj się</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb index 1988ad3d..89da54f 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autenticação</translation> <translation id="5154917547274118687">Memória</translation> <translation id="5168185087976003268">Integridade da bateria</translation> +<translation id="5170568018924773124">Mostrar na pasta</translation> <translation id="5212543919916444558">Não foi possível encontrar na sua tela nada com o que eu possa ajudar. Tente tocar no microfone para me pedir algo.</translation> <translation id="5222676887888702881">Sair</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index d30b442c..f9c55e6 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autenticação</translation> <translation id="5154917547274118687">Memória</translation> <translation id="5168185087976003268">Condição da bateria</translation> +<translation id="5170568018924773124">Mostrar numa pasta</translation> <translation id="5212543919916444558">Não consigo encontrar nada no ecrã com que possa ajudar. Experimente tocar no microfone para me perguntar o que quiser.</translation> <translation id="5222676887888702881">Terminar sessão</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb index 6285849..921454b 100644 --- a/chromeos/strings/chromeos_strings_ro.xtb +++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -81,6 +81,7 @@ <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="2983662233540284543">Învață de la un creator de jocuri, descarcă aplicații de design pentru jocuri și altele</translation> <translation id="3008341117444806826">ACTUALIZEAZĂ</translation> <translation id="3009958530611748826">Selectează un dosar în care să salvezi</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> @@ -192,6 +193,8 @@ <translation id="5142961317498132443">Autentificare</translation> <translation id="5154917547274118687">Memorie</translation> <translation id="5168185087976003268">Buna funcționare a bateriei:</translation> +<translation id="5170568018924773124">Afișează în dosar</translation> +<translation id="519607504553633437">Dezvoltă și creează propriile jocuri</translation> <translation id="5212543919916444558">Nu găsesc conținut pe ecran în privința căruia te-aș putea ajuta. Atinge microfonul și întreabă orice dorești.</translation> <translation id="5222676887888702881">Deconectează-te</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb index 7ae4c77..03882df 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Аутентификация</translation> <translation id="5154917547274118687">Память</translation> <translation id="5168185087976003268">Уровень заряда</translation> +<translation id="5170568018924773124">Показать в папке</translation> <translation id="5212543919916444558">Я не нашла на экране ничего подходящего. Попробуйте озвучить запрос, нажав на значок микрофона.</translation> <translation id="5222676887888702881">Выйти</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb index f1413a2..b156003 100644 --- a/chromeos/strings/chromeos_strings_si.xtb +++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">සත්යාපනය</translation> <translation id="5154917547274118687">මතකය</translation> <translation id="5168185087976003268">බැටරි සුවතාව</translation> +<translation id="5170568018924773124">ෆෝල්ඩරයේ පෙන්වන්න</translation> <translation id="5212543919916444558">මට ඔබට උදවු විය හැකි කිසිවක් ඔබේ තිරය මත සොයා ගැනීමට නොහැකිය. මගෙන් යම් දෙයක් ඇසීමට මයික්රෆෝනය තට්ටු කිරීම උත්සාහ කරන්න.</translation> <translation id="5222676887888702881">පිටවීම</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb index 3cb3eab..131c430 100644 --- a/chromeos/strings/chromeos_strings_sk.xtb +++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Overenie totožnosti</translation> <translation id="5154917547274118687">Pamäť</translation> <translation id="5168185087976003268">Stav batérie</translation> +<translation id="5170568018924773124">Zobraziť v priečinku</translation> <translation id="5212543919916444558">Na obrazovke nie je nič, s čím by som mohol pomôcť. Skúste klepnúť na mikrofón a niečo prikázať.</translation> <translation id="5222676887888702881">Odhlásiť sa</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index fecbbad1..8dead0f 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Preverjanje pristnosti</translation> <translation id="5154917547274118687">Pomnilnik</translation> <translation id="5168185087976003268">Stanje baterije</translation> +<translation id="5170568018924773124">Prikaži v mapi</translation> <translation id="5212543919916444558">Na zaslonu ni ničesar uporabnega. Poskusite vprašati tako, da se dotaknete mikrofona.</translation> <translation id="5222676887888702881">Odjava</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb index 688349bd..e48437e 100644 --- a/chromeos/strings/chromeos_strings_sq.xtb +++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Vërtetimi</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Integriteti i baterisë</translation> +<translation id="5170568018924773124">Shfaq në dosje</translation> <translation id="5212543919916444558">Nuk mund të gjej diçka në ekranin tënd me të cilën mund të të ndihmoj. Provo të trokasësh te mikrofoni për të më kërkuar diçka.</translation> <translation id="5222676887888702881">Dil</translation> <translation id="5252456968953390977">Në roaming</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index 0646ad1f..ccb181c 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Potvrda identiteta</translation> <translation id="5154917547274118687">Memorija</translation> <translation id="5168185087976003268">Stanje baterije</translation> +<translation id="5170568018924773124">Prikaži u direktorijumu</translation> <translation id="5212543919916444558">Ne mogu da pronađem na ekranu ništa oko čega mogu da pomognem. Probajte da dodirnete mikrofon da biste me pitali nešto.</translation> <translation id="5222676887888702881">Odjavi me</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb index 31d426f..642bf53 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Потврда идентитета</translation> <translation id="5154917547274118687">Меморија</translation> <translation id="5168185087976003268">Стање батерије</translation> +<translation id="5170568018924773124">Прикажи у директоријуму</translation> <translation id="5212543919916444558">Не могу да пронађем на екрану ништа око чега могу да помогнем. Пробајте да додирнете микрофон да бисте ме питали нешто.</translation> <translation id="5222676887888702881">Одјави ме</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb index df1ef93..38195e8 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentisering</translation> <translation id="5154917547274118687">Minne</translation> <translation id="5168185087976003268">Batterinivå</translation> +<translation id="5170568018924773124">Visa i mapp</translation> <translation id="5212543919916444558">Det finns inget på skärmen som jag kan hjälpa till med. Tryck på mikrofonen och fråga om något.</translation> <translation id="5222676887888702881">Logga ut</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index 5a24c7d..67a0564 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Uthibitishaji</translation> <translation id="5154917547274118687">Kumbukumbu</translation> <translation id="5168185087976003268">Muda wa kudumu wa betri</translation> +<translation id="5170568018924773124">Onyesha katika folda</translation> <translation id="5212543919916444558">Sijapata swali lolote kwenye skrini yako. Jaribu kugonga maikrofoni ili uniulize chochote.</translation> <translation id="5222676887888702881">Ondoka</translation> <translation id="5252456968953390977">Uzururaji</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb index 2d78d57f..adc1eecd 100644 --- a/chromeos/strings/chromeos_strings_ta.xtb +++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">அங்கீகாரம்</translation> <translation id="5154917547274118687">நினைவகம்</translation> <translation id="5168185087976003268">பேட்டரி நிலை</translation> +<translation id="5170568018924773124">கோப்புறையில் காண்பி</translation> <translation id="5212543919916444558">உங்களுக்கு நான் உதவும் வகையில், உங்கள் திரையில் எதுவுமில்லை. என்னிடம் ஏதேனும் கேட்க, மைக்கைத் தட்டவும்.</translation> <translation id="5222676887888702881">வெளியேறு</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb index e037a38..57a3f9a 100644 --- a/chromeos/strings/chromeos_strings_te.xtb +++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">ప్రమాణీకరణ</translation> <translation id="5154917547274118687">మెమరీ</translation> <translation id="5168185087976003268">బ్యాటరీ సామర్థ్యం</translation> +<translation id="5170568018924773124">ఫోల్డర్లో చూపించు</translation> <translation id="5212543919916444558">నేను సహాయం అందించగలిగేలా మీ స్క్రీన్పై నాకు ఏదీ కనిపించలేదు. మైక్ను నొక్కి, నన్ను ఏదైనా అడగడానికి ప్రయత్నించండి.</translation> <translation id="5222676887888702881">సైన్ ఔట్</translation> <translation id="5252456968953390977">రోమింగ్</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb index de50803..5efb801 100644 --- a/chromeos/strings/chromeos_strings_th.xtb +++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -81,6 +81,7 @@ <translation id="2862104018715411648">วางเอกสารบนเครื่องสแกนและเลือก "สแกน" เพื่อเริ่มต้น</translation> <translation id="2872961005593481000">ปิด</translation> <translation id="2878387241690264070">คายประจุ <ph name="RATE" /> ใน <ph name="NUM_SECONDS" /> วินาที</translation> +<translation id="2983662233540284543">เรียนรู้จากครีเอเตอร์เกม ดาวน์โหลดแอปออกแบบเกม และอีกมากมาย</translation> <translation id="3008341117444806826">รีเฟรช</translation> <translation id="3009958530611748826">เลือกโฟลเดอร์ที่จะใช้บันทึก</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> @@ -192,6 +193,8 @@ <translation id="5142961317498132443">การตรวจสอบสิทธิ์</translation> <translation id="5154917547274118687">หน่วยความจำ</translation> <translation id="5168185087976003268">ประสิทธิภาพของแบตเตอรี่</translation> +<translation id="5170568018924773124">แสดงในโฟลเดอร์</translation> +<translation id="519607504553633437">ออกแบบและสร้างเกมของคุณเอง</translation> <translation id="5212543919916444558">ฉันไม่พบสิ่งที่จะช่วยได้ในหน้าจอ ลองแตะไมโครโฟนเพื่อถามเรื่องอะไรก็ได้</translation> <translation id="5222676887888702881">ออกจากระบบ</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb index 62ad439e3..4f39b92 100644 --- a/chromeos/strings/chromeos_strings_tr.xtb +++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Kimlik Doğrulama</translation> <translation id="5154917547274118687">Bellek</translation> <translation id="5168185087976003268">Pil sağlığı</translation> +<translation id="5170568018924773124">Klasörde göster</translation> <translation id="5212543919916444558">Ekranınızda size yardımcı olabileceğim bir şey bulamıyorum. Bana bir şey sormak için mikrofona dokunmayı deneyin.</translation> <translation id="5222676887888702881">Çıkış</translation>
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb index a3e89f09..428ff5f 100644 --- a/chromeos/strings/chromeos_strings_uk.xtb +++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Автентифікація</translation> <translation id="5154917547274118687">Пам’ять</translation> <translation id="5168185087976003268">Стан акумулятора</translation> +<translation id="5170568018924773124">Показати в папці</translation> <translation id="5212543919916444558">На екрані не знайдено елементів, проблеми з якими я можу вирішити. Торкніться значка мікрофона, щоб поставити запитання.</translation> <translation id="5222676887888702881">Вийти</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index 366effc1..d8771396 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">تصدیق</translation> <translation id="5154917547274118687">میموری</translation> <translation id="5168185087976003268">بیٹری کی صحت</translation> +<translation id="5170568018924773124">فولڈر میں دکھائیں</translation> <translation id="5212543919916444558">مجھے آپ کی اسکرین پر ایسا کچھ نہیں ملا جس سے متعلق میں آپ کی مدد کر سکوں۔ مجھ سے کچھ بھی پوچھنے کے لیے مائیک کو تھپتھپانے کی کوشش کریں۔</translation> <translation id="5222676887888702881">سائن آؤٹ</translation> <translation id="5252456968953390977">رومنگ</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index c3906ff..33f21c8f 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Autentifikatsiya</translation> <translation id="5154917547274118687">Operativ xotira</translation> <translation id="5168185087976003268">Quvvat darajasi</translation> +<translation id="5170568018924773124">&Jildda ko‘rsatish</translation> <translation id="5212543919916444558">Ekranda men yordam bera oladigan hech narsa topilmadi. Mikrofon ustiga bosing va savolni ayting.</translation> <translation id="5222676887888702881">Tizimdan chiqish</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb index 81ecdb7..cdff99d 100644 --- a/chromeos/strings/chromeos_strings_vi.xtb +++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Xác thực</translation> <translation id="5154917547274118687">Bộ nhớ</translation> <translation id="5168185087976003268">Tình trạng pin</translation> +<translation id="5170568018924773124">Hiển thị trong thư mục</translation> <translation id="5212543919916444558">Tôi không tìm thấy nội dung nào trên màn hình để có thể trợ giúp cho bạn. Hãy thử nhấn vào micrô để hỏi tôi bất cứ điều gì.</translation> <translation id="5222676887888702881">Đăng xuất</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb index 976ad38f..c0e9754a 100644 --- a/chromeos/strings/chromeos_strings_zh-CN.xtb +++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">身份验证</translation> <translation id="5154917547274118687">内存</translation> <translation id="5168185087976003268">电池寿命</translation> +<translation id="5170568018924773124">在文件夹中显示</translation> <translation id="5212543919916444558">无法提供与您的屏幕上可以找到的任何内容相关的帮助。 请尝试通过点按麦克风图标向我提问。</translation> <translation id="5222676887888702881">退出</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index e4b85db..3e8f5b23 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">驗證</translation> <translation id="5154917547274118687">記憶體</translation> <translation id="5168185087976003268">電池狀態</translation> +<translation id="5170568018924773124">在資料夾中顯示</translation> <translation id="5212543919916444558">系統在您的畫面上找不到任何可提供協助的內容。 請嘗試輕按麥克風並發問。</translation> <translation id="5222676887888702881">登出</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb index c0f6ad27..2e767bd9a 100644 --- a/chromeos/strings/chromeos_strings_zh-TW.xtb +++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">驗證</translation> <translation id="5154917547274118687">記憶體</translation> <translation id="5168185087976003268">電池壽命</translation> +<translation id="5170568018924773124">在資料夾中顯示</translation> <translation id="5212543919916444558">系統在你的畫面上找不到任何能提供協助的內容。 請輕觸麥克風圖示,直接說出你的問題。</translation> <translation id="5222676887888702881">登出</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb index 975ee8ed..81d94f1 100644 --- a/chromeos/strings/chromeos_strings_zu.xtb +++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -192,6 +192,7 @@ <translation id="5142961317498132443">Ukufakazela ubuqiniso</translation> <translation id="5154917547274118687">Imemori</translation> <translation id="5168185087976003268">Impilo yebhethri</translation> +<translation id="5170568018924773124">Bonisa kufolda</translation> <translation id="5212543919916444558">Angikwazi ukuthola lutho kusikrini sakho engingasiza ngakho. Zama ukuthepha imakrofoni ukuze ungibuze noma yini.</translation> <translation id="5222676887888702881">Phuma ngemvume</translation>
diff --git a/components/autofill/android/provider/test_support/autofill_provider_test_helper.cc b/components/autofill/android/provider/test_support/autofill_provider_test_helper.cc index bba53f8..2731bc2 100644 --- a/components/autofill/android/provider/test_support/autofill_provider_test_helper.cc +++ b/components/autofill/android/provider/test_support/autofill_provider_test_helper.cc
@@ -18,7 +18,7 @@ namespace autofill { namespace { -AutofillHandler* GetAutofillHandler(content::WebContents* web_contents, +AutofillManager* GetAutofillManager(content::WebContents* web_contents, content::RenderFrameHost* rfh) { // Avoid using ContentAutofillDriver::GetForRenderFrameHost(), it will create // a new ContentAutofillDriver. @@ -26,21 +26,21 @@ ContentAutofillDriverFactory::FromWebContents(web_contents)) { if (ContentAutofillDriver* driver = static_cast<ContentAutofillDriver*>(factory->DriverForKey(rfh))) { - return driver->autofill_handler(); + return driver->autofill_manager(); } } return nullptr; } -AutofillHandler* ToMainFrameAutofillHandler( +AutofillManager* ToMainFrameAutofillManager( const base::android::JavaParamRef<jobject>& jweb_contents) { content::WebContents* web_contents = content::WebContents::FromJavaWebContents(jweb_contents); CHECK(web_contents); - AutofillHandler* autofill_handler = - GetAutofillHandler(web_contents, web_contents->GetMainFrame()); - CHECK(autofill_handler); - return autofill_handler; + AutofillManager* autofill_manager = + GetAutofillManager(web_contents, web_contents->GetMainFrame()); + CHECK(autofill_manager); + return autofill_manager; } } // namespace @@ -62,9 +62,9 @@ std::vector<int> field_types; base::android::JavaIntArrayToIntVector(env, jfield_types, &field_types); - AutofillHandler* autofill_handler = ToMainFrameAutofillHandler(jweb_contents); + AutofillManager* autofill_manager = ToMainFrameAutofillManager(jweb_contents); const std::map<FormGlobalId, std::unique_ptr<FormStructure>>& - form_structures = autofill_handler->form_structures(); + form_structures = autofill_manager->form_structures(); CHECK(!form_structures.empty()); // Make API response with suggestions. @@ -99,7 +99,7 @@ CHECK(response.SerializeToString(&response_string)); std::string encoded_response_string; base::Base64Encode(response_string, &encoded_response_string); - autofill_handler->OnLoadedServerPredictionsForTest(encoded_response_string, + autofill_manager->OnLoadedServerPredictionsForTest(encoded_response_string, signatures); return true; } @@ -117,9 +117,9 @@ base::android::JavaArrayOfIntArrayToIntVector(env, jfield_types, &field_types); - AutofillHandler* autofill_handler = ToMainFrameAutofillHandler(jweb_contents); + AutofillManager* autofill_manager = ToMainFrameAutofillManager(jweb_contents); const std::map<FormGlobalId, std::unique_ptr<FormStructure>>& - form_structures = autofill_handler->form_structures(); + form_structures = autofill_manager->form_structures(); CHECK(!form_structures.empty()); // Make API response with suggestions. @@ -151,7 +151,7 @@ CHECK(response.SerializeToString(&response_string)); std::string encoded_response_string; base::Base64Encode(response_string, &encoded_response_string); - autofill_handler->OnLoadedServerPredictionsForTest(encoded_response_string, + autofill_manager->OnLoadedServerPredictionsForTest(encoded_response_string, signatures); return true; } @@ -160,12 +160,12 @@ JNI_AutofillProviderTestHelper_SimulateMainFrameAutofillQueryFailedForTesting( JNIEnv* env, const base::android::JavaParamRef<jobject>& jweb_contents) { - AutofillHandler* autofill_handler = ToMainFrameAutofillHandler(jweb_contents); + AutofillManager* autofill_manager = ToMainFrameAutofillManager(jweb_contents); const std::map<FormGlobalId, std::unique_ptr<FormStructure>>& - form_structures = autofill_handler->form_structures(); + form_structures = autofill_manager->form_structures(); // Always use first form. CHECK(form_structures.size()); - autofill_handler->OnServerRequestErrorForTest( + autofill_manager->OnServerRequestErrorForTest( *(autofill::test::GetEncodedSignatures(*(form_structures.begin()->second)) .begin()), AutofillDownloadManager::RequestType::REQUEST_QUERY, 400);
diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc index 3b4e38c..48e42cfa 100644 --- a/components/autofill/content/browser/content_autofill_driver.cc +++ b/components/autofill/content/browser/content_autofill_driver.cc
@@ -63,7 +63,7 @@ content::RenderFrameHost* render_frame_host, AutofillClient* client, const std::string& app_locale, - AutofillHandler::AutofillDownloadManagerState enable_download_manager, + AutofillManager::AutofillDownloadManagerState enable_download_manager, AutofillProvider* provider) : render_frame_host_(render_frame_host), browser_autofill_manager_(nullptr), @@ -131,8 +131,9 @@ scoped_refptr<network::SharedURLLoaderFactory> ContentAutofillDriver::GetURLLoaderFactory() { - return content::BrowserContext::GetDefaultStoragePartition( - render_frame_host_->GetSiteInstance()->GetBrowserContext()) + return render_frame_host_->GetSiteInstance() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); } @@ -170,9 +171,9 @@ void ContentAutofillDriver::PropagateAutofillPredictions( const std::vector<FormStructure*>& forms) { - AutofillHandler* handler = browser_autofill_manager_ + AutofillManager* handler = browser_autofill_manager_ ? browser_autofill_manager_ - : autofill_handler_.get(); + : autofill_manager_.get(); DCHECK(handler); handler->PropagateAutofillPredictions(render_frame_host_, forms); } @@ -262,7 +263,7 @@ } void ContentAutofillDriver::FormsSeen(const std::vector<FormData>& forms) { - autofill_handler_->OnFormsSeen(forms); + autofill_manager_->OnFormsSeen(forms); } void ContentAutofillDriver::SetFormToBeProbablySubmitted( @@ -291,27 +292,27 @@ return; } - autofill_handler_->OnFormSubmitted(form, known_success, source); + autofill_manager_->OnFormSubmitted(form, known_success, source); } void ContentAutofillDriver::TextFieldDidChange(const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box, base::TimeTicks timestamp) { - autofill_handler_->OnTextFieldDidChange(form, field, bounding_box, timestamp); + autofill_manager_->OnTextFieldDidChange(form, field, bounding_box, timestamp); } void ContentAutofillDriver::TextFieldDidScroll(const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box) { - autofill_handler_->OnTextFieldDidScroll(form, field, bounding_box); + autofill_manager_->OnTextFieldDidScroll(form, field, bounding_box); } void ContentAutofillDriver::SelectControlDidChange( const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box) { - autofill_handler_->OnSelectControlDidChange(form, field, bounding_box); + autofill_manager_->OnSelectControlDidChange(form, field, bounding_box); } void ContentAutofillDriver::QueryFormFieldAutofill( @@ -320,39 +321,39 @@ const FormFieldData& field, const gfx::RectF& bounding_box, bool autoselect_first_suggestion) { - autofill_handler_->OnQueryFormFieldAutofill(id, form, field, bounding_box, + autofill_manager_->OnQueryFormFieldAutofill(id, form, field, bounding_box, autoselect_first_suggestion); } void ContentAutofillDriver::HidePopup() { - autofill_handler_->OnHidePopup(); + autofill_manager_->OnHidePopup(); } void ContentAutofillDriver::FocusNoLongerOnForm(bool had_interacted_form) { - autofill_handler_->OnFocusNoLongerOnForm(had_interacted_form); + autofill_manager_->OnFocusNoLongerOnForm(had_interacted_form); } void ContentAutofillDriver::FocusOnFormField(const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box) { - autofill_handler_->OnFocusOnFormField(form, field, bounding_box); + autofill_manager_->OnFocusOnFormField(form, field, bounding_box); } void ContentAutofillDriver::DidFillAutofillFormData(const FormData& form, base::TimeTicks timestamp) { - autofill_handler_->OnDidFillAutofillFormData(form, timestamp); + autofill_manager_->OnDidFillAutofillFormData(form, timestamp); } void ContentAutofillDriver::DidPreviewAutofillFormData() { - autofill_handler_->OnDidPreviewAutofillFormData(); + autofill_manager_->OnDidPreviewAutofillFormData(); } void ContentAutofillDriver::DidEndTextFieldEditing() { - autofill_handler_->OnDidEndTextFieldEditing(); + autofill_manager_->OnDidEndTextFieldEditing(); } void ContentAutofillDriver::SelectFieldOptionsDidChange(const FormData& form) { - autofill_handler_->SelectFieldOptionsDidChange(form); + autofill_manager_->SelectFieldOptionsDidChange(form); } void ContentAutofillDriver::DidNavigateFrame( @@ -376,14 +377,14 @@ return; submitted_forms_.clear(); - autofill_handler_->Reset(); + autofill_manager_->Reset(); } void ContentAutofillDriver::SetBrowserAutofillManager( std::unique_ptr<BrowserAutofillManager> manager) { - autofill_handler_ = std::move(manager); + autofill_manager_ = std::move(manager); browser_autofill_manager_ = - static_cast<BrowserAutofillManager*>(autofill_handler_.get()); + static_cast<BrowserAutofillManager*>(autofill_manager_.get()); } ContentAutofillDriver::ContentAutofillDriver() @@ -431,8 +432,8 @@ void ContentAutofillDriver::SetAutofillProvider( AutofillProvider* provider, AutofillClient* client, - AutofillHandler::AutofillDownloadManagerState enable_download_manager) { - autofill_handler_ = std::make_unique<AndroidAutofillManager>( + AutofillManager::AutofillDownloadManagerState enable_download_manager) { + autofill_manager_ = std::make_unique<AndroidAutofillManager>( this, client, provider, enable_download_manager); GetAutofillAgent()->SetUserGestureRequired(false); GetAutofillAgent()->SetSecureContextRequired(true); @@ -484,7 +485,7 @@ AutofillProvider* provider, AutofillClient* client) { SetAutofillProvider(provider, client, - AutofillHandler::AutofillDownloadManagerState:: + AutofillManager::AutofillDownloadManagerState:: DISABLE_AUTOFILL_DOWNLOAD_MANAGER); // BrowserAutofillManager isn't used if provider is valid. browser_autofill_manager_ = nullptr;
diff --git a/components/autofill/content/browser/content_autofill_driver.h b/components/autofill/content/browser/content_autofill_driver.h index dc3d2ea..7c96eb16 100644 --- a/components/autofill/content/browser/content_autofill_driver.h +++ b/components/autofill/content/browser/content_autofill_driver.h
@@ -62,7 +62,7 @@ content::RenderFrameHost* render_frame_host, AutofillClient* client, const std::string& app_locale, - AutofillHandler::AutofillDownloadManagerState enable_download_manager, + AutofillManager::AutofillDownloadManagerState enable_download_manager, AutofillProvider* provider); ~ContentAutofillDriver() override; @@ -149,7 +149,7 @@ BrowserAutofillManager* browser_autofill_manager() { return browser_autofill_manager_; } - AutofillHandler* autofill_handler() { return autofill_handler_.get(); } + AutofillManager* autofill_manager() { return autofill_manager_.get(); } content::RenderFrameHost* render_frame_host() { return render_frame_host_; } const mojo::AssociatedRemote<mojom::AutofillAgent>& GetAutofillAgent(); @@ -191,7 +191,7 @@ void SetAutofillProvider( AutofillProvider* provider, AutofillClient* client, - AutofillHandler::AutofillDownloadManagerState enable_download_manager); + AutofillManager::AutofillDownloadManagerState enable_download_manager); // Returns whether navigator.credentials.get({otp: {transport:"sms"}}) has // been used. @@ -215,12 +215,12 @@ // to avoid duplicates fired by AutofillAgent. std::set<FormRendererId> submitted_forms_; - // AutofillHandler instance via which this object drives the shared Autofill + // AutofillManager instance via which this object drives the shared Autofill // code. - std::unique_ptr<AutofillHandler> autofill_handler_; + std::unique_ptr<AutofillManager> autofill_manager_; - // The pointer to autofill_handler_ if it is BrowserAutofillManager instance. - // TODO: unify autofill_handler_ and browser_autofill_manager_ to a single + // The pointer to autofill_manager_ if it is BrowserAutofillManager instance. + // TODO: unify autofill_manager_ and browser_autofill_manager_ to a single // pointer to a common root. BrowserAutofillManager* browser_autofill_manager_;
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn index b6dbb74a..30e52647 100644 --- a/components/autofill/core/browser/BUILD.gn +++ b/components/autofill/core/browser/BUILD.gn
@@ -67,8 +67,8 @@ "autofill_external_delegate.h", "autofill_field.cc", "autofill_field.h", - "autofill_handler.cc", - "autofill_handler.h", + "autofill_manager.cc", + "autofill_manager.h", "autofill_metrics.cc", "autofill_metrics.h", "autofill_observer.cc",
diff --git a/components/autofill/core/browser/android_autofill_manager.cc b/components/autofill/core/browser/android_autofill_manager.cc index ffbb2e0f..5710567 100644 --- a/components/autofill/core/browser/android_autofill_manager.cc +++ b/components/autofill/core/browser/android_autofill_manager.cc
@@ -14,8 +14,8 @@ AutofillDriver* driver, AutofillClient* client, AutofillProvider* provider, - AutofillHandler::AutofillDownloadManagerState enable_download_manager) - : AutofillHandler(driver, + AutofillManager::AutofillDownloadManagerState enable_download_manager) + : AutofillManager(driver, client, enable_download_manager, version_info::Channel::UNKNOWN), @@ -109,7 +109,7 @@ } void AndroidAutofillManager::Reset() { - AutofillHandler::Reset(); + AutofillManager::Reset(); has_server_prediction_ = false; provider_->Reset(this); }
diff --git a/components/autofill/core/browser/android_autofill_manager.h b/components/autofill/core/browser/android_autofill_manager.h index 470bb65..71b0c4d 100644 --- a/components/autofill/core/browser/android_autofill_manager.h +++ b/components/autofill/core/browser/android_autofill_manager.h
@@ -6,21 +6,21 @@ #define COMPONENTS_AUTOFILL_CORE_BROWSER_ANDROID_AUTOFILL_MANAGER_H_ #include "base/memory/weak_ptr.h" -#include "components/autofill/core/browser/autofill_handler.h" +#include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/core/common/dense_set.h" namespace autofill { class AutofillProvider; -// This class forwards AutofillHandler calls to AutofillProvider. -class AndroidAutofillManager : public AutofillHandler { +// This class forwards AutofillManager calls to AutofillProvider. +class AndroidAutofillManager : public AutofillManager { public: AndroidAutofillManager( AutofillDriver* driver, AutofillClient* client, AutofillProvider* provider, - AutofillHandler::AutofillDownloadManagerState enable_download_manager); + AutofillManager::AutofillDownloadManagerState enable_download_manager); ~AndroidAutofillManager() override; void OnFocusNoLongerOnForm(bool had_interacted_form) override;
diff --git a/components/autofill/core/browser/autofill_form_test_utils.cc b/components/autofill/core/browser/autofill_form_test_utils.cc index fae59e2..2298c3f 100644 --- a/components/autofill/core/browser/autofill_form_test_utils.cc +++ b/components/autofill/core/browser/autofill_form_test_utils.cc
@@ -5,11 +5,8 @@ #include "components/autofill/core/browser/autofill_form_test_utils.h" #include "base/optional.h" -#include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/form_structure.h" -using base::ASCIIToUTF16; - namespace autofill { namespace test { @@ -93,7 +90,7 @@ form_data.url = GURL(test_form_attributes.url); form_data.action = GURL(test_form_attributes.action); - form_data.name = ASCIIToUTF16(test_form_attributes.name); + form_data.name = test_form_attributes.name.data(); static int field_count = 0; if (test_form_attributes.unique_renderer_id) form_data.unique_renderer_id = *test_form_attributes.unique_renderer_id; @@ -102,16 +99,18 @@ for (const FieldDataDescription& field_description : test_form_attributes.fields) { FormFieldData field = CreateFieldByRole(field_description.role); - field.form_control_type = field_description.form_control_type; + field.form_control_type = field_description.form_control_type.data(); field.is_focusable = field_description.is_focusable; - if (field_description.autocomplete_attribute) - field.autocomplete_attribute = field_description.autocomplete_attribute; - if (ASCIIToUTF16(field_description.label) != ASCIIToUTF16(kLabelText)) - field.label = ASCIIToUTF16(field_description.label); - if (ASCIIToUTF16(field_description.name) != ASCIIToUTF16(kNameText)) - field.name = ASCIIToUTF16(field_description.name); + if (!field_description.autocomplete_attribute.empty()) { + field.autocomplete_attribute = + field_description.autocomplete_attribute.data(); + } + if (field_description.label != kLabelText) + field.label = field_description.label.data(); + if (field_description.name != kNameText) + field.name = field_description.name.data(); if (field_description.value) - field.value = ASCIIToUTF16(*field_description.value); + field.value = *field_description.value; if (field_description.is_autofilled) field.is_autofilled = *field_description.is_autofilled; field.unique_renderer_id = FieldRendererId(field_count++);
diff --git a/components/autofill/core/browser/autofill_form_test_utils.h b/components/autofill/core/browser/autofill_form_test_utils.h index 660cbcb..02f8d1e7b2 100644 --- a/components/autofill/core/browser/autofill_form_test_utils.h +++ b/components/autofill/core/browser/autofill_form_test_utils.h
@@ -8,6 +8,7 @@ #include <vector> #include "base/optional.h" +#include "base/strings/string_piece.h" #include "components/autofill/core/browser/autofill_field.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/common/form_data.h" @@ -20,10 +21,10 @@ namespace { // Default label assigned to fields. -constexpr char kLabelText[] = "label"; +constexpr char16_t kLabelText[] = u"label"; // Default name attribute assigned to fields. -constexpr char kNameText[] = "name"; +constexpr char16_t kNameText[] = u"name"; // Default form url. constexpr char kFormUrl[] = "http://example.com/form.html"; @@ -40,11 +41,11 @@ struct FieldDataDescription { ServerFieldType role = ServerFieldType::EMPTY_TYPE; bool is_focusable = true; - const char* label = kLabelText; - const char* name = kNameText; - base::Optional<const char*> value = base::nullopt; - const char* autocomplete_attribute = nullptr; - const char* form_control_type = "text"; + const base::StringPiece16 label = kLabelText; + const base::StringPiece16 name = kNameText; + base::Optional<const char16_t*> value = base::nullopt; + const base::StringPiece autocomplete_attribute; + const base::StringPiece form_control_type = "text"; bool should_autocomplete = true; base::Optional<bool> is_autofilled = base::nullopt; }; @@ -52,12 +53,12 @@ // Attributes provided to the test form. template <typename = void> struct TestFormAttributes { - const char* description_for_logging; + const base::StringPiece description_for_logging; std::vector<FieldDataDescription<>> fields; base::Optional<FormRendererId> unique_renderer_id = base::nullopt; - const char* name = "TestForm"; - const char* url = kFormUrl; - const char* action = kFormActionUrl; + const base::StringPiece16 name = u"TestForm"; + const base::StringPiece url = kFormUrl; + const base::StringPiece action = kFormActionUrl; base::Optional<url::Origin> main_frame_origin = base::nullopt; bool is_form_tag = true; };
diff --git a/components/autofill/core/browser/autofill_handler.cc b/components/autofill/core/browser/autofill_manager.cc similarity index 91% rename from components/autofill/core/browser/autofill_handler.cc rename to components/autofill/core/browser/autofill_manager.cc index 1001f8e..d30aedd7 100644 --- a/components/autofill/core/browser/autofill_handler.cc +++ b/components/autofill/core/browser/autofill_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 "components/autofill/core/browser/autofill_handler.h" +#include "components/autofill/core/browser/autofill_manager.h" #include "base/bind.h" #include "base/containers/adapters.h" @@ -28,7 +28,7 @@ // Set a conservative upper bound on the number of forms we are willing to // cache, simply to prevent unbounded memory consumption. -const size_t kAutofillHandlerMaxFormCacheSize = 100; +const size_t kAutofillManagerMaxFormCacheSize = 100; // Returns the AutofillField* corresponding to |field| in |form| or nullptr, // if not found. @@ -79,7 +79,7 @@ using base::TimeTicks; // static -void AutofillHandler::LogAutofillTypePredictionsAvailable( +void AutofillManager::LogAutofillTypePredictionsAvailable( LogManager* log_manager, const std::vector<FormStructure*>& forms) { if (VLOG_IS_ON(1)) { @@ -100,17 +100,17 @@ } // static -bool AutofillHandler::IsRawMetadataUploadingEnabled( +bool AutofillManager::IsRawMetadataUploadingEnabled( version_info::Channel channel) { return channel == version_info::Channel::CANARY || channel == version_info::Channel::DEV; } -AutofillHandler::AutofillHandler( +AutofillManager::AutofillManager( AutofillDriver* driver, AutofillClient* client, AutofillDownloadManagerState enable_download_manager) - : AutofillHandler(driver, + : AutofillManager(driver, client, enable_download_manager, client->GetChannel()) { @@ -118,7 +118,7 @@ DCHECK(client); } -AutofillHandler::AutofillHandler( +AutofillManager::AutofillManager( AutofillDriver* driver, AutofillClient* client, AutofillDownloadManagerState enable_download_manager, @@ -142,13 +142,13 @@ } } -AutofillHandler::~AutofillHandler() { +AutofillManager::~AutofillManager() { translate_observation_.Reset(); if (!query_result_delay_task_.IsCancelled()) query_result_delay_task_.Cancel(); } -void AutofillHandler::OnLanguageDetermined( +void AutofillManager::OnLanguageDetermined( const translate::LanguageDetectionDetails& details) { if (!base::FeatureList::IsEnabled( features::kAutofillParsingPatternsLanguageDetection)) { @@ -163,12 +163,12 @@ } } -void AutofillHandler::OnTranslateDriverDestroyed( +void AutofillManager::OnTranslateDriverDestroyed( translate::TranslateDriver* translate_driver) { translate_observation_.Reset(); } -LanguageCode AutofillHandler::GetCurrentPageLanguage() const { +LanguageCode AutofillManager::GetCurrentPageLanguage() const { DCHECK(client_); const translate::LanguageState* language_state = client_->GetLanguageState(); if (!language_state) @@ -176,14 +176,14 @@ return LanguageCode(language_state->current_language()); } -void AutofillHandler::OnFormSubmitted(const FormData& form, +void AutofillManager::OnFormSubmitted(const FormData& form, bool known_success, mojom::SubmissionSource source) { if (IsValidFormData(form)) OnFormSubmittedImpl(form, known_success, source); } -void AutofillHandler::OnFormsSeen(const std::vector<FormData>& forms) { +void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms) { if (!IsValidFormDataVector(forms) || !driver_->RendererIsAvailable()) return; @@ -229,7 +229,7 @@ OnFormsParsed(new_forms); } -void AutofillHandler::OnFormsParsed(const std::vector<const FormData*>& forms) { +void AutofillManager::OnFormsParsed(const std::vector<const FormData*>& forms) { DCHECK(!forms.empty()); OnBeforeProcessParsedForms(); @@ -276,7 +276,7 @@ } } -void AutofillHandler::OnTextFieldDidChange(const FormData& form, +void AutofillManager::OnTextFieldDidChange(const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box, const TimeTicks timestamp) { @@ -289,7 +289,7 @@ OnTextFieldDidChangeImpl(form, field, transformed_box, timestamp); } -void AutofillHandler::OnTextFieldDidScroll(const FormData& form, +void AutofillManager::OnTextFieldDidScroll(const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box) { if (!IsValidFormData(form) || !IsValidFormFieldData(field)) @@ -301,7 +301,7 @@ OnTextFieldDidScrollImpl(form, field, transformed_box); } -void AutofillHandler::OnSelectControlDidChange(const FormData& form, +void AutofillManager::OnSelectControlDidChange(const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box) { if (!IsValidFormData(form) || !IsValidFormFieldData(field)) @@ -313,7 +313,7 @@ OnSelectControlDidChangeImpl(form, field, transformed_box); } -void AutofillHandler::OnQueryFormFieldAutofill( +void AutofillManager::OnQueryFormFieldAutofill( int query_id, const FormData& form, const FormFieldData& field, @@ -329,7 +329,7 @@ autoselect_first_suggestion); } -void AutofillHandler::OnFocusOnFormField(const FormData& form, +void AutofillManager::OnFocusOnFormField(const FormData& form, const FormFieldData& field, const gfx::RectF& bounding_box) { if (!IsValidFormData(form) || !IsValidFormFieldData(field)) @@ -341,7 +341,7 @@ OnFocusOnFormFieldImpl(form, field, transformed_box); } -void AutofillHandler::SendFormDataToRenderer( +void AutofillManager::SendFormDataToRenderer( int query_id, AutofillDriver::RendererFormDataAction action, const FormData& data) { @@ -349,7 +349,7 @@ } // Returns true if |live_form| does not match |cached_form|. -bool AutofillHandler::GetCachedFormAndField(const FormData& form, +bool AutofillManager::GetCachedFormAndField(const FormData& form, const FormFieldData& field, FormStructure** form_structure, AutofillField** autofill_field) { @@ -388,7 +388,7 @@ } std::unique_ptr<AutofillMetrics::FormInteractionsUkmLogger> -AutofillHandler::CreateFormInteractionsUkmLogger() { +AutofillManager::CreateFormInteractionsUkmLogger() { if (!client()) return nullptr; @@ -396,7 +396,7 @@ client()->GetUkmRecorder(), client()->GetUkmSourceId()); } -size_t AutofillHandler::FindCachedFormsBySignature( +size_t AutofillManager::FindCachedFormsBySignature( FormSignature form_signature, std::vector<FormStructure*>* form_structures) const { size_t hits_num = 0; @@ -410,15 +410,15 @@ return hits_num; } -FormStructure* AutofillHandler::FindCachedFormByRendererId( +FormStructure* AutofillManager::FindCachedFormByRendererId( FormGlobalId form_id) const { auto it = form_structures_.find(form_id); return it != form_structures_.end() ? it->second.get() : nullptr; } -FormStructure* AutofillHandler::ParseForm(const FormData& form, +FormStructure* AutofillManager::ParseForm(const FormData& form, const FormStructure* cached_form) { - if (form_structures_.size() >= kAutofillHandlerMaxFormCacheSize) { + if (form_structures_.size() >= kAutofillManagerMaxFormCacheSize) { if (log_manager_) { log_manager_->Log() << LoggingScope::kAbortParsing << LogMessage::kAbortParsingTooManyForms << form; @@ -454,7 +454,7 @@ FormStructure* parsed_form_structure = form_structure.get(); // Ownership is transferred to |form_structures_| which maintains it until - // the form is parsed again or the AutofillHandler is destroyed. + // the form is parsed again or the AutofillManager is destroyed. // // Note that this insert/update takes ownership of the new form structure // and also destroys the previously cached form structure. @@ -464,12 +464,12 @@ return parsed_form_structure; } -void AutofillHandler::Reset() { +void AutofillManager::Reset() { form_structures_.clear(); form_interactions_ukm_logger_ = CreateFormInteractionsUkmLogger(); } -void AutofillHandler::OnLoadedServerPredictions( +void AutofillManager::OnLoadedServerPredictions( std::string response, const std::vector<FormSignature>& queried_form_signatures) { // Get the current valid FormStructures represented by @@ -527,7 +527,7 @@ if (delay > 0) { query_result_delay_task_.Reset( - base::BindOnce(&AutofillHandler::PropagateAutofillPredictionsToDriver, + base::BindOnce(&AutofillManager::PropagateAutofillPredictionsToDriver, base::Unretained(this))); base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, @@ -538,14 +538,14 @@ } } -void AutofillHandler::PropagateAutofillPredictionsToDriver( +void AutofillManager::PropagateAutofillPredictionsToDriver( const std::vector<FormStructure*>& queried_forms) { // Forward form structures to the password generation manager to detect // account creation forms. driver()->PropagateAutofillPredictions(queried_forms); } -void AutofillHandler::OnServerRequestError( +void AutofillManager::OnServerRequestError( FormSignature form_signature, AutofillDownloadManager::RequestType request_type, int http_error) {}
diff --git a/components/autofill/core/browser/autofill_handler.h b/components/autofill/core/browser/autofill_manager.h similarity index 96% rename from components/autofill/core/browser/autofill_handler.h rename to components/autofill/core/browser/autofill_manager.h index 3ca7abb5..81553596 100644 --- a/components/autofill/core/browser/autofill_handler.h +++ b/components/autofill/core/browser/autofill_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 COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_HANDLER_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_HANDLER_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ #include <map> #include <memory> @@ -41,7 +41,7 @@ // This class defines the interface should be implemented by autofill // implementation in browser side to interact with AutofillDriver. -class AutofillHandler +class AutofillManager : public AutofillDownloadManager::Observer, public translate::TranslateDriver::LanguageDetectionObserver { public: @@ -63,12 +63,12 @@ // TODO(crbug.com/1151542): Move to anonymous namespace once // BrowserAutofillManager::OnLoadedServerPredictions() moves to - // AutofillHandler. + // AutofillManager. static void LogAutofillTypePredictionsAvailable( LogManager* log_manager, const std::vector<FormStructure*>& forms); - ~AutofillHandler() override; + ~AutofillManager() override; AutofillClient* client() { return client_; } const AutofillClient* client() const { return client_; } @@ -224,10 +224,10 @@ #endif // UNIT_TEST protected: - AutofillHandler(AutofillDriver* driver, + AutofillManager(AutofillDriver* driver, AutofillClient* client, AutofillDownloadManagerState enable_download_manager); - AutofillHandler(AutofillDriver* driver, + AutofillManager(AutofillDriver* driver, AutofillClient* client, AutofillDownloadManagerState enable_download_manager, version_info::Channel channel); @@ -361,9 +361,9 @@ // Will be not null only for |SaveCardBubbleViewsFullFormBrowserTest|. ObserverForTest* observer_for_testing_ = nullptr; - DISALLOW_COPY_AND_ASSIGN(AutofillHandler); + DISALLOW_COPY_AND_ASSIGN(AutofillManager); }; } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_HANDLER_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_
diff --git a/components/autofill/core/browser/autofill_metrics_unittest.cc b/components/autofill/core/browser/autofill_metrics_unittest.cc index 4d8060ae..6d500f8b 100644 --- a/components/autofill/core/browser/autofill_metrics_unittest.cc +++ b/components/autofill/core/browser/autofill_metrics_unittest.cc
@@ -628,29 +628,29 @@ // Set up our form data with two autofilled fields. FormData form = test::GetFormData({.description_for_logging = "NumberOfAutofilledFields", - .fields = {{.label = "Autofilled", - .name = "autofilled", - .value = "Elvis Aaron Presley", + .fields = {{.label = u"Autofilled", + .name = u"autofilled", + .value = u"Elvis Aaron Presley", .is_autofilled = true}, - {.label = "Autofilled but corrected", - .name = "autofillfailed", - .value = "buddy@gmail.com", + {.label = u"Autofilled but corrected", + .name = u"autofillfailed", + .value = u"buddy@gmail.com", .is_autofilled = true}, - {.label = "Empty", - .name = "empty", - .value = "", + {.label = u"Empty", + .name = u"empty", + .value = u"", .is_autofilled = false}, - {.label = "Unknown", - .name = "unknown", - .value = "garbage", + {.label = u"Unknown", + .name = u"unknown", + .value = u"garbage", .is_autofilled = false}, - {.label = "Select", - .name = "select", - .value = "USA", + {.label = u"Select", + .name = u"select", + .value = u"USA", .form_control_type = "select-one", .is_autofilled = false}, {.role = ServerFieldType::PHONE_HOME_NUMBER, - .value = "2345678901", + .value = u"2345678901", .form_control_type = "tel", .is_autofilled = true}}, .unique_renderer_id = test::MakeFormRendererId(), @@ -702,29 +702,29 @@ // Set up our form data. FormData form = test::GetFormData({.description_for_logging = "QualityMetrics", - .fields = {{.label = "Autofilled", - .name = "autofilled", - .value = "Elvis Aaron Presley", + .fields = {{.label = u"Autofilled", + .name = u"autofilled", + .value = u"Elvis Aaron Presley", .is_autofilled = true}, - {.label = "Autofill Failed", - .name = "autofillfailed", - .value = "buddy@gmail.com", + {.label = u"Autofill Failed", + .name = u"autofillfailed", + .value = u"buddy@gmail.com", .is_autofilled = false}, - {.label = "Empty", - .name = "empty", - .value = "", + {.label = u"Empty", + .name = u"empty", + .value = u"", .is_autofilled = false}, - {.label = "Unknown", - .name = "unknown", - .value = "garbage", + {.label = u"Unknown", + .name = u"unknown", + .value = u"garbage", .is_autofilled = false}, - {.label = "Select", - .name = "select", - .value = "USA", + {.label = u"Select", + .name = u"select", + .value = u"USA", .form_control_type = "select-one", .is_autofilled = false}, {.role = ServerFieldType::PHONE_HOME_NUMBER, - .value = "2345678901", + .value = u"2345678901", .form_control_type = "tel", .is_autofilled = true}}, .unique_renderer_id = test::MakeFormRendererId(), @@ -882,17 +882,18 @@ FormData form = test::GetFormData( {.description_for_logging = "ProfileImportStatus_NoImport", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = "New York"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u"New York"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, {.role = ServerFieldType::ADDRESS_HOME_STATE, - .value = "Invalid State"}, + .value = u"Invalid State"}, {.role = ServerFieldType::ADDRESS_HOME_ZIP, - .value = "00000000000000000"}, + .value = u"00000000000000000"}, {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, - .value = "NoACountry"}}}); + .value = u"NoACountry"}}}); std::vector<ServerFieldType> heuristic_types = { NAME_FULL, ADDRESS_HOME_LINE1, @@ -936,14 +937,15 @@ FormData form = test::GetFormData( {.description_for_logging = "ProfileImportStatus_RegularImport", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = "New York"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, - {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = "CA"}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = "37373"}, - {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = "USA"}}}); + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u"New York"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, + {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = u"CA"}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u"37373"}, + {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = u"USA"}}}); std::vector<ServerFieldType> heuristic_types = { NAME_FULL, ADDRESS_HOME_LINE1, @@ -987,18 +989,19 @@ FormData form = test::GetFormData( {.description_for_logging = "ProfileImportStatus_UnionImport", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = "37373"}, - {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = "USA"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u"37373"}, + {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = u"USA"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, {.role = ServerFieldType::ADDRESS_HOME_CITY, - .value = "New York", + .value = u"New York", .autocomplete_attribute = "section-billing locality"}, // Add the last field of the form into a new section. {.role = ServerFieldType::ADDRESS_HOME_STATE, - .value = "CA", + .value = u"CA", .autocomplete_attribute = "section-shipping address-level1"}}}); // Set the heuristic types. @@ -1052,14 +1055,15 @@ FormData form = test::GetFormData( {.description_for_logging = "ProfileImportRequirements_AllFulfilled", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = "New York"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, - {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = "CA"}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = "37373"}, - {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = "USA"}}}); + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u"New York"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, + {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = u"CA"}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u"37373"}, + {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = u"USA"}}}); std::vector<ServerFieldType> heuristic_types = { NAME_FULL, ADDRESS_HOME_LINE1, @@ -1132,13 +1136,14 @@ {.description_for_logging = "ProfileImportRequirements_MissingHomeLineOne", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, - {.role = ServerFieldType::ADDRESS_HOME_LINE1, .value = ""}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = "New York"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, - {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = "CA"}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = "37373"}, - {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = "USA"}}}); + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, + {.role = ServerFieldType::ADDRESS_HOME_LINE1, .value = u""}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u"New York"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, + {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = u"CA"}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u"37373"}, + {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = u"USA"}}}); std::vector<ServerFieldType> heuristic_types = { NAME_FULL, ADDRESS_HOME_LINE1, @@ -1213,15 +1218,16 @@ {.description_for_logging = "ProfileImportRequirements_AllFulfilledForNonStateCountry", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = "New York"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, - {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = ""}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = "37373"}, + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u"New York"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, + {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = u""}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u"37373"}, {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, - .value = "Germany"}}}); + .value = u"Germany"}}}); std::vector<ServerFieldType> heuristic_types = { NAME_FULL, ADDRESS_HOME_LINE1, @@ -1294,17 +1300,18 @@ {.description_for_logging = "ProfileImportRequirements_FilledButInvalidZipEmailAndState", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = "New York"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u"New York"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, {.role = ServerFieldType::ADDRESS_HOME_STATE, - .value = "DefNotAState"}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = "1234567890"}, - {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = "USA"}, + .value = u"DefNotAState"}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u"1234567890"}, + {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = u"USA"}, {.role = ServerFieldType::EMAIL_ADDRESS, - .value = "test_noat_test.io"}}}); + .value = u"test_noat_test.io"}}}); std::vector<ServerFieldType> heuristic_types = {NAME_FULL, ADDRESS_HOME_LINE1, @@ -1382,19 +1389,20 @@ FormData form = test::GetFormData( {.description_for_logging = "ProfileImportRequirements_NonUniqueEmail", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = "New York"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = "2345678901"}, - {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = "CA"}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = "37373"}, - {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = "USA"}, + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u"New York"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u"2345678901"}, + {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = u"CA"}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u"37373"}, + {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = u"USA"}, {.role = ServerFieldType::EMAIL_ADDRESS, - .value = "test_noat_test.io"}, - {.label = "Email1", - .name = ".email1", - .value = "not_test@test.io"}}}); + .value = u"test_noat_test.io"}, + {.label = u"Email1", + .name = u".email1", + .value = u"not_test@test.io"}}}); std::vector<ServerFieldType> heuristic_types = {NAME_FULL, ADDRESS_HOME_LINE1, @@ -1475,14 +1483,15 @@ {.description_for_logging = "ProfileImportRequirements_OnlyAddressLineOne", .fields = { - {.role = ServerFieldType::NAME_FULL, .value = "Elvis Aaron Presley"}, + {.role = ServerFieldType::NAME_FULL, + .value = u"Elvis Aaron Presley"}, {.role = ServerFieldType::ADDRESS_HOME_LINE1, - .value = "3734 Elvis Presley Blvd."}, - {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = ""}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = ""}, - {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = ""}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = ""}, - {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = ""}}}); + .value = u"3734 Elvis Presley Blvd."}, + {.role = ServerFieldType::ADDRESS_HOME_CITY, .value = u""}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .value = u""}, + {.role = ServerFieldType::ADDRESS_HOME_STATE, .value = u""}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .value = u""}, + {.role = ServerFieldType::ADDRESS_HOME_COUNTRY, .value = u""}}}); std::vector<ServerFieldType> heuristic_types = { NAME_FULL, ADDRESS_HOME_LINE1,
diff --git a/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc b/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc index 166a529b..f765af1 100644 --- a/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc +++ b/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc
@@ -72,11 +72,10 @@ profile.SetRawInfo(EMAIL_ADDRESS, u"user@example.com"); profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, u"1.800.555.1234"); profile.SetRawInfo(COMPANY_NAME, u"Google, Inc."); - profile.SetRawInfoWithVerificationStatus( - ADDRESS_HOME_STREET_ADDRESS, - ASCIIToUTF16("123 Fake St. Dep Premise\n" - "Apt. 10 Floor 2"), - VerificationStatus::kObserved); + profile.SetRawInfoWithVerificationStatus(ADDRESS_HOME_STREET_ADDRESS, + u"123 Fake St. Dep Premise\n" + u"Apt. 10 Floor 2", + VerificationStatus::kObserved); // Set testing values and statuses for the address. EXPECT_EQ(u"123 Fake St. Dep Premise",
diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc index 4c3aadf..6137080 100644 --- a/components/autofill/core/browser/browser_autofill_manager.cc +++ b/components/autofill/core/browser/browser_autofill_manager.cc
@@ -458,7 +458,7 @@ const std::string app_locale, AutofillDownloadManagerState enable_download_manager, std::unique_ptr<CreditCardAccessManager> cc_access_manager) - : AutofillHandler(driver, client, enable_download_manager), + : AutofillManager(driver, client, enable_download_manager), external_delegate_( std::make_unique<AutofillExternalDelegate>(this, driver)), app_locale_(app_locale), @@ -1559,7 +1559,7 @@ // save a card is shown after page navigation. ProcessPendingFormForUpload(); DCHECK(!pending_form_data_); - AutofillHandler::Reset(); + AutofillManager::Reset(); address_form_event_logger_ = std::make_unique<AddressFormEventLogger>( driver()->IsInMainFrame(), form_interactions_ukm_logger(), client()); credit_card_form_event_logger_ = std::make_unique<CreditCardFormEventLogger>(
diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/components/autofill/core/browser/browser_autofill_manager.h index 860baaa..8d96607 100644 --- a/components/autofill/core/browser/browser_autofill_manager.h +++ b/components/autofill/core/browser/browser_autofill_manager.h
@@ -25,7 +25,7 @@ #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_driver.h" #include "components/autofill/core/browser/autofill_external_delegate.h" -#include "components/autofill/core/browser/autofill_handler.h" +#include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/core/browser/field_filler.h" #include "components/autofill/core/browser/form_types.h" #include "components/autofill/core/browser/metrics/address_form_event_logger.h" @@ -74,7 +74,7 @@ // Manages saving and restoring the user's personal information entered into web // forms. One per frame; owned by the AutofillDriver. class BrowserAutofillManager - : public AutofillHandler, + : public AutofillManager, public AutocompleteHistoryManager::SuggestionsHandler, public CreditCardAccessManager::Accessor { public: @@ -205,7 +205,7 @@ // metrics. void DidSuppressPopup(const FormData& form, const FormFieldData& field); - // AutofillHandler: + // AutofillManager: void OnFocusNoLongerOnForm(bool had_interacted_form) override; void OnFocusOnFormFieldImpl(const FormData& form, const FormFieldData& field, @@ -338,7 +338,7 @@ std::string* cc_backend_id, std::string* profile_backend_id) const; - // AutofillHandler: + // AutofillManager: void OnFormSubmittedImpl(const FormData& form, bool known_success, mojom::SubmissionSource source) override;
diff --git a/components/autofill/core/browser/data_model/autofill_profile_unittest.cc b/components/autofill/core/browser/data_model/autofill_profile_unittest.cc index 0eb5a4bd..24185cc 100644 --- a/components/autofill/core/browser/data_model/autofill_profile_unittest.cc +++ b/components/autofill/core/browser/data_model/autofill_profile_unittest.cc
@@ -1324,23 +1324,26 @@ TEST_P(AutofillProfileTest, SetRawInfoPreservesLineBreaks) { AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); - profile.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, ASCIIToUTF16("123 Super St.\n" - "Apt. #42")); - EXPECT_EQ(ASCIIToUTF16("123 Super St.\n" - "Apt. #42"), - profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); + profile.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, + u"123 Super St.\n" + u"Apt. #42"); + EXPECT_EQ( + u"123 Super St.\n" + u"Apt. #42", + profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); } TEST_P(AutofillProfileTest, SetInfoPreservesLineBreaks) { AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); profile.SetInfo(ADDRESS_HOME_STREET_ADDRESS, - ASCIIToUTF16("123 Super St.\n" - "Apt. #42"), + u"123 Super St.\n" + u"Apt. #42", "en-US"); - EXPECT_EQ(ASCIIToUTF16("123 Super St.\n" - "Apt. #42"), - profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); + EXPECT_EQ( + u"123 Super St.\n" + u"Apt. #42", + profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); } TEST_P(AutofillProfileTest, SetRawInfoDoesntTrimWhitespace) { @@ -1365,11 +1368,11 @@ AutofillType full_address(HTML_TYPE_FULL_ADDRESS, HTML_MODE_NONE); std::u16string formatted_address( - ASCIIToUTF16("Marion Mitchell Morrison\n" - "Fox\n" - "123 Zoo St.\n" - "unit 5\n" - "Hollywood, CA 91601")); + u"Marion Mitchell Morrison\n" + u"Fox\n" + u"123 Zoo St.\n" + u"unit 5\n" + u"Hollywood, CA 91601"); EXPECT_EQ(formatted_address, profile.GetInfo(full_address, "en-US")); // This should fail and leave the profile unchanged. EXPECT_FALSE(profile.SetInfo(full_address, u"foobar", "en-US")); @@ -1378,11 +1381,12 @@ // Some things can be missing... profile.SetInfo(ADDRESS_HOME_LINE2, std::u16string(), "en-US"); profile.SetInfo(EMAIL_ADDRESS, std::u16string(), "en-US"); - EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison\n" - "Fox\n" - "123 Zoo St.\n" - "Hollywood, CA 91601"), - profile.GetInfo(full_address, "en-US")); + EXPECT_EQ( + u"Marion Mitchell Morrison\n" + u"Fox\n" + u"123 Zoo St.\n" + u"Hollywood, CA 91601", + profile.GetInfo(full_address, "en-US")); // ...but nothing comes out if a required field is missing. profile.SetInfo(ADDRESS_HOME_STATE, std::u16string(), "en-US");
diff --git a/components/autofill/core/browser/field_filler_unittest.cc b/components/autofill/core/browser/field_filler_unittest.cc index f550a9c..e4eebbee 100644 --- a/components/autofill/core/browser/field_filler_unittest.cc +++ b/components/autofill/core/browser/field_filler_unittest.cc
@@ -1278,9 +1278,9 @@ FieldFiller filler(/*app_locale=*/"en-US", /*address_normalizer=*/nullptr); field.set_heuristic_type(ADDRESS_HOME_STREET_ADDRESS); - std::u16string value = ASCIIToUTF16( - "123 Fake St.\n" - "Apt. 42"); + std::u16string value = + u"123 Fake St.\n" + u"Apt. 42"; address()->SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS), value, "en-US"); filler.FillFormField(field, address(), &field, /*cvc=*/std::u16string()); EXPECT_EQ(value, field.value); @@ -1301,9 +1301,9 @@ field.set_server_type(ADDRESS_HOME_STREET_ADDRESS); FieldFiller filler(/*app_locale=*/"en-US", /*address_normalizer=*/nullptr); - std::u16string value = ASCIIToUTF16( - "123 Fake St.\n" - "Apt. 42"); + std::u16string value = + u"123 Fake St.\n" + u"Apt. 42"; address()->SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS), value, "en-US"); filler.FillFormField(field, address(), &field, /*cvc=*/std::u16string()); EXPECT_EQ(u"123 Fake St., Apt. 42", field.value);
diff --git a/components/autofill/core/browser/form_processing/label_processing_util_unittest.cc b/components/autofill/core/browser/form_processing/label_processing_util_unittest.cc index 6cd10b21..2f248b6 100644 --- a/components/autofill/core/browser/form_processing/label_processing_util_unittest.cc +++ b/components/autofill/core/browser/form_processing/label_processing_util_unittest.cc
@@ -104,8 +104,8 @@ std::vector<std::u16string> labels; labels.push_back(u"City"); labels.push_back( - ASCIIToUTF16("Street & House Number with a lot of additional text that " - "exceeds 40 characters by far")); + u"Street & House Number with a lot of additional text that exceeds 40 " + u"characters by far"); labels.push_back(u""); labels.push_back(u"Zip");
diff --git a/components/autofill/core/browser/form_structure_unittest.cc b/components/autofill/core/browser/form_structure_unittest.cc index 197701c..11ab7c6 100644 --- a/components/autofill/core/browser/form_structure_unittest.cc +++ b/components/autofill/core/browser/form_structure_unittest.cc
@@ -129,14 +129,14 @@ TEST_F(FormStructureTestImpl, FieldCount) { CheckFormStructureTestData({{{.description_for_logging = "FieldCount", .fields = {{.role = ServerFieldType::USERNAME}, - {.label = "Password", - .name = "password", + {.label = u"Password", + .name = u"password", .form_control_type = "password"}, - {.label = "Submit", - .name = "", + {.label = u"Submit", + .name = u"", .form_control_type = "submit"}, - {.label = "address1", - .name = "address1", + {.label = u"address1", + .name = u"address1", .should_autocomplete = false}}}, { .determine_heuristic_type = true, @@ -148,16 +148,17 @@ TEST_F(FormStructureTestImpl, AutofillCount) { CheckFormStructureTestData( {{{.description_for_logging = "AutofillCount", - .fields = - {{.role = ServerFieldType::USERNAME}, - {.label = "Password", - .name = "password", - .form_control_type = "password"}, - {.role = ServerFieldType::EMAIL_ADDRESS}, - {.role = ServerFieldType::ADDRESS_HOME_CITY}, - {.role = ServerFieldType::ADDRESS_HOME_STATE, - .form_control_type = "select-one"}, - {.label = "Submit", .name = "", .form_control_type = "submit"}}}, + .fields = {{.role = ServerFieldType::USERNAME}, + {.label = u"Password", + .name = u"password", + .form_control_type = "password"}, + {.role = ServerFieldType::EMAIL_ADDRESS}, + {.role = ServerFieldType::ADDRESS_HOME_CITY}, + {.role = ServerFieldType::ADDRESS_HOME_STATE, + .form_control_type = "select-one"}, + {.label = u"Submit", + .name = u"", + .form_control_type = "submit"}}}, { .determine_heuristic_type = true, .autofill_count = 3, @@ -167,16 +168,16 @@ {{.description_for_logging = "AutofillCountWithNonFillableField", .fields = {{.role = ServerFieldType::USERNAME}, - {.label = "Password", - .name = "password", + {.label = u"Password", + .name = u"password", .form_control_type = "password"}, {.role = ServerFieldType::EMAIL_ADDRESS}, {.role = ServerFieldType::ADDRESS_HOME_CITY}, {.role = ServerFieldType::ADDRESS_HOME_STATE, .form_control_type = "select-one"}, - {.label = "Submit", .name = "", .form_control_type = "submit"}, - {.label = "address1", - .name = "address1", + {.label = u"Submit", .name = u"", .form_control_type = "submit"}, + {.label = u"address1", + .name = u"address1", .should_autocomplete = false}}}, { .determine_heuristic_type = true, @@ -487,8 +488,8 @@ TEST_F(FormStructureTestImpl, DetermineHeuristicTypes_AutocompleteFalse) { CheckFormStructureTestData( {{{.description_for_logging = "DetermineHeuristicTypes_AutocompleteFalse", - .fields = {{.label = "Name", - .name = "name", + .fields = {{.label = u"Name", + .name = u"name", .autocomplete_attribute = "false"}, {.role = ServerFieldType::EMAIL_ADDRESS, .autocomplete_attribute = "false"}, @@ -507,16 +508,17 @@ TEST_F(FormStructureTestImpl, HeuristicsContactInfo) { CheckFormStructureTestData( {{{.description_for_logging = "HeuristicsContactInfo", - .fields = - {{.role = ServerFieldType::NAME_FIRST}, - {.role = ServerFieldType::NAME_LAST}, - {.role = ServerFieldType::EMAIL_ADDRESS}, - {.role = ServerFieldType::PHONE_HOME_NUMBER}, - {.label = "Ext:", .name = "phoneextension"}, - {.label = "Address", .name = "address"}, - {.role = ServerFieldType::ADDRESS_HOME_CITY}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP}, - {.label = "Submit", .name = "", .form_control_type = "submit"}}}, + .fields = {{.role = ServerFieldType::NAME_FIRST}, + {.role = ServerFieldType::NAME_LAST}, + {.role = ServerFieldType::EMAIL_ADDRESS}, + {.role = ServerFieldType::PHONE_HOME_NUMBER}, + {.label = u"Ext:", .name = u"phoneextension"}, + {.label = u"Address", .name = u"address"}, + {.role = ServerFieldType::ADDRESS_HOME_CITY}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP}, + {.label = u"Submit", + .name = u"", + .form_control_type = "submit"}}}, { .determine_heuristic_type = true, .field_count = 9, @@ -532,17 +534,17 @@ TEST_F(FormStructureTestImpl, HeuristicsAutocompleteAttribute) { CheckFormStructureTestData( {{{.description_for_logging = "HeuristicsAutocompleteAttribute", - .fields = {{.label = "", - .name = "field1", + .fields = {{.label = u"", + .name = u"field1", .autocomplete_attribute = "given-name"}, - {.label = "", - .name = "field2", + {.label = u"", + .name = u"field2", .autocomplete_attribute = "family-name"}, - {.label = "", - .name = "field3", + {.label = u"", + .name = u"field3", .autocomplete_attribute = "email"}, - {.label = "", - .name = "field4", + {.label = u"", + .name = u"field4", .autocomplete_attribute = "upi-vpa"}}}, { .determine_heuristic_type = true, @@ -819,18 +821,18 @@ TEST_F(FormStructureTestImpl, StripCommonNamePrefix) { CheckFormStructureTestData( {{{.description_for_logging = "StripCommonNamePrefix", - .fields = {{.role = ServerFieldType::NAME_FIRST, - .name = - "ctl01$ctl00$ShippingAddressCreditPhone$firstname"}, - {.role = ServerFieldType::NAME_LAST, - .name = "ctl01$ctl00$ShippingAddressCreditPhone$lastname"}, - {.role = ServerFieldType::EMAIL_ADDRESS, - .name = "ctl01$ctl00$ShippingAddressCreditPhone$email"}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, - .name = "ctl01$ctl00$ShippingAddressCreditPhone$phone"}, - {.label = "Submit", - .name = "ctl01$ctl00$ShippingAddressCreditPhone$submit", - .form_control_type = "submit"}}}, + .fields = + {{.role = ServerFieldType::NAME_FIRST, + .name = u"ctl01$ctl00$ShippingAddressCreditPhone$firstname"}, + {.role = ServerFieldType::NAME_LAST, + .name = u"ctl01$ctl00$ShippingAddressCreditPhone$lastname"}, + {.role = ServerFieldType::EMAIL_ADDRESS, + .name = u"ctl01$ctl00$ShippingAddressCreditPhone$email"}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, + .name = u"ctl01$ctl00$ShippingAddressCreditPhone$phone"}, + {.label = u"Submit", + .name = u"ctl01$ctl00$ShippingAddressCreditPhone$submit", + .form_control_type = "submit"}}}, {.determine_heuristic_type = true, .is_autofillable = true, .field_count = 5, @@ -844,9 +846,9 @@ TEST_F(FormStructureTestImpl, StripCommonNamePrefix_SmallPrefix) { CheckFormStructureTestData( {{{.description_for_logging = "StripCommonNamePrefix_SmallPrefix", - .fields = {{.label = "Address 1", .name = "address1"}, - {.label = "Address 2", .name = "address2"}, - {.label = "Address 3", .name = "address3"}}}, + .fields = {{.label = u"Address 1", .name = u"address1"}, + {.label = u"Address 2", .name = u"address2"}, + {.label = u"Address 3", .name = u"address3"}}}, {.determine_heuristic_type = true, .is_autofillable = true, .field_count = 3, @@ -859,7 +861,7 @@ CheckFormStructureTestData( {{{.description_for_logging = "IsCompleteCreditCardForm_Minimal", .fields = {{.role = ServerFieldType::CREDIT_CARD_NUMBER}, - {.label = "Expiration", .name = "cc_exp"}, + {.label = u"Expiration", .name = u"cc_exp"}, {.role = ServerFieldType::ADDRESS_HOME_ZIP}}}, {.determine_heuristic_type = true, .is_complete_credit_card_form = {true, true}}, @@ -869,13 +871,13 @@ TEST_F(FormStructureTestImpl, IsCompleteCreditCardForm_Full) { CheckFormStructureTestData( {{{.description_for_logging = "IsCompleteCreditCardForm_Full", - .fields = {{.label = "Name on Card", .name = "name_on_card"}, + .fields = {{.label = u"Name on Card", .name = u"name_on_card"}, {.role = ServerFieldType::CREDIT_CARD_NUMBER}, - {.label = "Exp Month", .name = "ccmonth"}, - {.label = "Exp Year", .name = "ccyear"}, - {.label = "Verification", .name = "verification"}, - {.label = "Submit", - .name = "submit", + {.label = u"Exp Month", .name = u"ccmonth"}, + {.label = u"Exp Year", .name = u"ccyear"}, + {.label = u"Verification", .name = u"verification"}, + {.label = u"Submit", + .name = u"submit", .form_control_type = "submit"}}}, {.determine_heuristic_type = true, .is_complete_credit_card_form = {true, true}}, @@ -896,13 +898,13 @@ TEST_F(FormStructureTestImpl, IsCompleteCreditCardForm_AddressForm) { CheckFormStructureTestData( {{{.description_for_logging = "IsCompleteCreditCardForm_AddressForm", - .fields = {{.role = ServerFieldType::NAME_FIRST, .name = ""}, - {.role = ServerFieldType::NAME_LAST, .name = ""}, - {.role = ServerFieldType::EMAIL_ADDRESS, .name = ""}, - {.role = ServerFieldType::PHONE_HOME_NUMBER, .name = ""}, - {.label = "Address", .name = ""}, - {.label = "Address", .name = ""}, - {.role = ServerFieldType::ADDRESS_HOME_ZIP, .name = ""}}}, + .fields = {{.role = ServerFieldType::NAME_FIRST, .name = u""}, + {.role = ServerFieldType::NAME_LAST, .name = u""}, + {.role = ServerFieldType::EMAIL_ADDRESS, .name = u""}, + {.role = ServerFieldType::PHONE_HOME_NUMBER, .name = u""}, + {.label = u"Address", .name = u""}, + {.label = u"Address", .name = u""}, + {.role = ServerFieldType::ADDRESS_HOME_ZIP, .name = u""}}}, {.determine_heuristic_type = true, .is_complete_credit_card_form = {true, false}}, {}}}); @@ -913,14 +915,14 @@ TEST_F(FormStructureTestImpl, HeuristicsAutocompleteAttributePhoneTypes) { CheckFormStructureTestData( {{{.description_for_logging = "HeuristicsAutocompleteAttributePhoneTypes", - .fields = {{.label = "", - .name = "field1", + .fields = {{.label = u"", + .name = u"field1", .autocomplete_attribute = "tel-local"}, - {.label = "", - .name = "field2", + {.label = u"", + .name = u"field2", .autocomplete_attribute = "tel-local-prefix"}, - {.label = "", - .name = "field3", + {.label = u"", + .name = u"field3", .autocomplete_attribute = "tel-local-suffix"}}}, {.determine_heuristic_type = true, .is_autofillable = true, @@ -983,7 +985,7 @@ "UnrecognizedAutocompleteAttribute", .fields = {{.role = ServerFieldType::NAME_FIRST, .autocomplete_attribute = "unrecognized"}, - {.label = "Middle Name", .name = "middlename"}, + {.label = u"Middle Name", .name = u"middlename"}, {.role = ServerFieldType::NAME_LAST}, {.role = ServerFieldType::EMAIL_ADDRESS}}, }, @@ -5005,11 +5007,11 @@ form.fields.push_back(field); // This label will be truncated in the XML request. - field.label = ASCIIToUTF16( - "Enter Your Really Really Really (Really!) Long Email Address Which We " - "Hope To Get In Order To Send You Unwanted Publicity Because That's What " - "Marketers Do! We Know That Your Email Address Has The Possibility Of " - "Exceeding A Certain Number Of Characters..."); + field.label = + u"Enter Your Really Really Really (Really!) Long Email Address Which We " + u"Hope To Get In Order To Send You Unwanted Publicity Because That's " + u"What Marketers Do! We Know That Your Email Address Has The Possibility " + u"Of Exceeding A Certain Number Of Characters..."; field.name = u"email"; field.form_control_type = "text"; field.unique_renderer_id = MakeFieldRendererId();
diff --git a/components/autofill/ios/form_util/resources/form.js b/components/autofill/ios/form_util/resources/form.js index 135f3db..0fb7851 100644 --- a/components/autofill/ios/form_util/resources/form.js +++ b/components/autofill/ios/form_util/resources/form.js
@@ -277,6 +277,9 @@ * @return {HTMLFormElement} The original form element, if it can be determined. */ __gCrWeb.form.getFormElementFromUniqueFormId = function(identifier) { + if (identifier.toString() === __gCrWeb.fill.RENDERER_ID_NOT_SET) { + return null; + } const forms = document.forms; for (let i = 0; i < forms.length; i++) { const form = forms[i];
diff --git a/components/autofill_assistant/browser/service/service_request_sender_impl.cc b/components/autofill_assistant/browser/service/service_request_sender_impl.cc index ececd87..e3312fd 100644 --- a/components/autofill_assistant/browser/service/service_request_sender_impl.cc +++ b/components/autofill_assistant/browser/service/service_request_sender_impl.cc
@@ -76,7 +76,7 @@ #endif auto* const loader_ptr = loader.get(); loader_ptr->DownloadToStringOfUnboundedSizeUntilCrashAndDie( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(), base::BindOnce(&OnURLLoaderComplete, std::move(callback),
diff --git a/components/background_sync/background_sync_controller_impl.cc b/components/background_sync/background_sync_controller_impl.cc index 6516787d..b7ec44c 100644 --- a/components/background_sync/background_sync_controller_impl.cc +++ b/components/background_sync/background_sync_controller_impl.cc
@@ -78,9 +78,8 @@ if (!IsContentSettingBlocked(origin)) continue; - auto* storage_partition = - content::BrowserContext::GetStoragePartitionForUrl( - browser_context_, origin.GetURL(), /* can_create= */ false); + auto* storage_partition = browser_context_->GetStoragePartitionForUrl( + origin.GetURL(), /* can_create= */ false); if (!storage_partition) continue;
diff --git a/components/bookmarks/browser/bookmark_codec_unittest.cc b/components/bookmarks/browser/bookmark_codec_unittest.cc index 8346d0f..d5508c58 100644 --- a/components/bookmarks/browser/bookmark_codec_unittest.cc +++ b/components/bookmarks/browser/bookmark_codec_unittest.cc
@@ -28,16 +28,16 @@ namespace bookmarks { namespace { -const char kUrl1Title[] = "url1"; +const char16_t kUrl1Title[] = u"url1"; const char kUrl1Url[] = "http://www.url1.com"; -const char kUrl2Title[] = "url2"; +const char16_t kUrl2Title[] = u"url2"; const char kUrl2Url[] = "http://www.url2.com"; -const char kUrl3Title[] = "url3"; +const char16_t kUrl3Title[] = u"url3"; const char kUrl3Url[] = "http://www.url3.com"; -const char kUrl4Title[] = "url4"; +const char16_t kUrl4Title[] = u"url4"; const char kUrl4Url[] = "http://www.url4.com"; -const char kFolder1Title[] = "folder1"; -const char kFolder2Title[] = "folder2"; +const char16_t kFolder1Title[] = u"folder1"; +const char16_t kFolder2Title[] = u"folder2"; const base::FilePath& GetTestDataDir() { static base::NoDestructor<base::FilePath> dir([]() { @@ -96,23 +96,23 @@ BookmarkModel* CreateTestModel1() { std::unique_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); - model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); + model->AddURL(bookmark_bar, 0, kUrl1Title, GURL(kUrl1Url)); return model.release(); } BookmarkModel* CreateTestModel2() { std::unique_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); - model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); - model->AddURL(bookmark_bar, 1, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url)); + model->AddURL(bookmark_bar, 0, kUrl1Title, GURL(kUrl1Url)); + model->AddURL(bookmark_bar, 1, kUrl2Title, GURL(kUrl2Url)); return model.release(); } BookmarkModel* CreateTestModel3() { std::unique_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); - model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); + model->AddURL(bookmark_bar, 0, kUrl1Title, GURL(kUrl1Url)); const BookmarkNode* folder1 = - model->AddFolder(bookmark_bar, 1, ASCIIToUTF16(kFolder1Title)); - model->AddURL(folder1, 0, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url)); + model->AddFolder(bookmark_bar, 1, kFolder1Title); + model->AddURL(folder1, 0, kUrl2Title, GURL(kUrl2Url)); return model.release(); } @@ -359,12 +359,10 @@ // ID persistence is working properly. const BookmarkNode* bookmark_bar = decoded_model->bookmark_bar_node(); decoded_model->AddURL(bookmark_bar, bookmark_bar->children().size(), - ASCIIToUTF16(kUrl3Title), GURL(kUrl3Url)); - const BookmarkNode* folder2_node = - decoded_model->AddFolder(bookmark_bar, bookmark_bar->children().size(), - ASCIIToUTF16(kFolder2Title)); - decoded_model->AddURL( - folder2_node, 0, ASCIIToUTF16(kUrl4Title), GURL(kUrl4Url)); + kUrl3Title, GURL(kUrl3Url)); + const BookmarkNode* folder2_node = decoded_model->AddFolder( + bookmark_bar, bookmark_bar->children().size(), kFolder2Title); + decoded_model->AddURL(folder2_node, 0, kUrl4Title, GURL(kUrl4Url)); BookmarkCodec encoder2; std::unique_ptr<base::Value> model_value2(
diff --git a/components/browser_ui/site_settings/android/storage_info_fetcher.cc b/components/browser_ui/site_settings/android/storage_info_fetcher.cc index 14ff1df..aa68b455 100644 --- a/components/browser_ui/site_settings/android/storage_info_fetcher.cc +++ b/components/browser_ui/site_settings/android/storage_info_fetcher.cc
@@ -18,8 +18,7 @@ namespace browser_ui { StorageInfoFetcher::StorageInfoFetcher(content::BrowserContext* context) { - quota_manager_ = content::BrowserContext::GetDefaultStoragePartition(context) - ->GetQuotaManager(); + quota_manager_ = context->GetDefaultStoragePartition()->GetQuotaManager(); } StorageInfoFetcher::~StorageInfoFetcher() = default;
diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc index a2f68902..2c8b920 100644 --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
@@ -675,8 +675,7 @@ BrowserContext* browser_context = unwrap(jbrowser_context_handle); GURL url(ConvertJavaStringToUTF8(env, jorigin)); - auto* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser_context); + auto* storage_partition = browser_context->GetDefaultStoragePartition(); auto* cookie_manager = storage_partition->GetCookieManagerForBrowserProcess(); cookie_manager->GetAllCookies( base::BindOnce(&OnCookiesReceived, cookie_manager, url));
diff --git a/components/browsing_data/content/appcache_helper_unittest.cc b/components/browsing_data/content/appcache_helper_unittest.cc index 903f6389..581c8a1 100644 --- a/components/browsing_data/content/appcache_helper_unittest.cc +++ b/components/browsing_data/content/appcache_helper_unittest.cc
@@ -37,8 +37,7 @@ protected: scoped_refptr<CannedAppCacheHelper> CreateHelper() { return base::MakeRefCounted<CannedAppCacheHelper>( - content::BrowserContext::GetDefaultStoragePartition(&browser_context_) - ->GetAppCacheService()); + browser_context_.GetDefaultStoragePartition()->GetAppCacheService()); } static bool ContainsOrigin(
diff --git a/components/browsing_data/content/cache_storage_helper_browsertest.cc b/components/browsing_data/content/cache_storage_helper_browsertest.cc index 5915d91..e8e901e 100644 --- a/components/browsing_data/content/cache_storage_helper_browsertest.cc +++ b/components/browsing_data/content/cache_storage_helper_browsertest.cc
@@ -27,8 +27,10 @@ class CacheStorageHelperTest : public content::ContentBrowserTest { public: content::StoragePartition* storage_partition() const { - return content::BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + return shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); } scoped_refptr<CannedCacheStorageHelper> MakeHelper() {
diff --git a/components/browsing_data/content/cache_storage_helper_unittest.cc b/components/browsing_data/content/cache_storage_helper_unittest.cc index c4164f68..6db861f 100644 --- a/components/browsing_data/content/cache_storage_helper_unittest.cc +++ b/components/browsing_data/content/cache_storage_helper_unittest.cc
@@ -19,8 +19,7 @@ class CannedCacheStorageHelperTest : public testing::Test { public: content::StoragePartition* storage_partition() { - return content::BrowserContext::GetDefaultStoragePartition( - &browser_context_); + return browser_context_.GetDefaultStoragePartition(); } scoped_refptr<CannedCacheStorageHelper> MakeHelper() {
diff --git a/components/browsing_data/content/cookie_helper_unittest.cc b/components/browsing_data/content/cookie_helper_unittest.cc index f8453789..d483d7f 100644 --- a/components/browsing_data/content/cookie_helper_unittest.cc +++ b/components/browsing_data/content/cookie_helper_unittest.cc
@@ -218,8 +218,7 @@ } content::StoragePartition* storage_partition() { - return content::BrowserContext::GetDefaultStoragePartition( - testing_browser_context_.get()); + return testing_browser_context_->GetDefaultStoragePartition(); } protected:
diff --git a/components/browsing_data/content/database_helper.cc b/components/browsing_data/content/database_helper.cc index f828be9..248c33a2 100644 --- a/components/browsing_data/content/database_helper.cc +++ b/components/browsing_data/content/database_helper.cc
@@ -35,8 +35,9 @@ namespace browsing_data { DatabaseHelper::DatabaseHelper(content::BrowserContext* browser_context) - : tracker_(BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetDatabaseTracker()) {} + : tracker_( + browser_context->GetDefaultStoragePartition()->GetDatabaseTracker()) { +} DatabaseHelper::~DatabaseHelper() {}
diff --git a/components/browsing_data/content/database_helper_browsertest.cc b/components/browsing_data/content/database_helper_browsertest.cc index 0b2e07e1..17b9f50 100644 --- a/components/browsing_data/content/database_helper_browsertest.cc +++ b/components/browsing_data/content/database_helper_browsertest.cc
@@ -45,10 +45,11 @@ class DatabaseHelperTest : public content::ContentBrowserTest { public: virtual void CreateDatabases() { - storage::DatabaseTracker* db_tracker = - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) - ->GetDatabaseTracker(); + storage::DatabaseTracker* db_tracker = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() + ->GetDatabaseTracker(); base::RunLoop run_loop; db_tracker->task_runner()->PostTaskAndReply( FROM_HERE, base::BindLambdaForTesting([&]() {
diff --git a/components/browsing_data/content/file_system_helper_unittest.cc b/components/browsing_data/content/file_system_helper_unittest.cc index 76a429b..cd4b8415 100644 --- a/components/browsing_data/content/file_system_helper_unittest.cc +++ b/components/browsing_data/content/file_system_helper_unittest.cc
@@ -50,11 +50,9 @@ public: FileSystemHelperTest() { auto* file_system_context = - BrowserContext::GetDefaultStoragePartition(&browser_context_) - ->GetFileSystemContext(); + browser_context_.GetDefaultStoragePartition()->GetFileSystemContext(); auto* native_io_context = - BrowserContext::GetDefaultStoragePartition(&browser_context_) - ->GetNativeIOContext(); + browser_context_.GetDefaultStoragePartition()->GetNativeIOContext(); helper_ = FileSystemHelper::Create(file_system_context, {}, native_io_context); content::RunAllTasksUntilIdle(); @@ -82,7 +80,7 @@ storage::FileSystemType type, storage::OpenFileSystemMode open_mode) { base::RunLoop run_loop; - BrowserContext::GetDefaultStoragePartition(&browser_context_) + browser_context_.GetDefaultStoragePartition() ->GetFileSystemContext() ->OpenFileSystem( origin, type, open_mode,
diff --git a/components/browsing_data/content/indexed_db_helper_browsertest.cc b/components/browsing_data/content/indexed_db_helper_browsertest.cc index 25dd0ed..809a5252 100644 --- a/components/browsing_data/content/indexed_db_helper_browsertest.cc +++ b/components/browsing_data/content/indexed_db_helper_browsertest.cc
@@ -27,8 +27,10 @@ class IndexedDBHelperTest : public content::ContentBrowserTest { public: content::StoragePartition* StoragePartition() { - return content::BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + return shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); } };
diff --git a/components/browsing_data/content/indexed_db_helper_unittest.cc b/components/browsing_data/content/indexed_db_helper_unittest.cc index d15f69e..217fc72 100644 --- a/components/browsing_data/content/indexed_db_helper_unittest.cc +++ b/components/browsing_data/content/indexed_db_helper_unittest.cc
@@ -21,8 +21,7 @@ class CannedIndexedDBHelperTest : public testing::Test { public: content::StoragePartition* StoragePartition() { - return content::BrowserContext::GetDefaultStoragePartition( - &browser_context_); + return browser_context_.GetDefaultStoragePartition(); } private:
diff --git a/components/browsing_data/content/local_shared_objects_container.cc b/components/browsing_data/content/local_shared_objects_container.cc index 75f833e..6c15343 100644 --- a/components/browsing_data/content/local_shared_objects_container.cc +++ b/components/browsing_data/content/local_shared_objects_container.cc
@@ -44,31 +44,25 @@ const std::vector<storage::FileSystemType>& additional_file_system_types, browsing_data::CookieHelper::IsDeletionDisabledCallback callback) : appcaches_(new CannedAppCacheHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetAppCacheService())), - cookies_(new CannedCookieHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context), - std::move(callback))), + browser_context->GetDefaultStoragePartition()->GetAppCacheService())), + cookies_( + new CannedCookieHelper(browser_context->GetDefaultStoragePartition(), + std::move(callback))), databases_(new CannedDatabaseHelper(browser_context)), file_systems_(new CannedFileSystemHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetFileSystemContext(), + browser_context->GetDefaultStoragePartition()->GetFileSystemContext(), additional_file_system_types, - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetNativeIOContext())), + browser_context->GetDefaultStoragePartition()->GetNativeIOContext())), indexed_dbs_(new CannedIndexedDBHelper( - content::BrowserContext::GetDefaultStoragePartition( - browser_context))), + browser_context->GetDefaultStoragePartition())), local_storages_(new CannedLocalStorageHelper(browser_context)), service_workers_(new CannedServiceWorkerHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetServiceWorkerContext())), shared_workers_(new CannedSharedWorkerHelper( - content::BrowserContext::GetDefaultStoragePartition( - browser_context))), + browser_context->GetDefaultStoragePartition())), cache_storages_(new CannedCacheStorageHelper( - content::BrowserContext::GetDefaultStoragePartition( - browser_context))), + browser_context->GetDefaultStoragePartition())), session_storages_(new CannedLocalStorageHelper(browser_context)) {} LocalSharedObjectsContainer::~LocalSharedObjectsContainer() = default;
diff --git a/components/browsing_data/content/local_storage_helper.cc b/components/browsing_data/content/local_storage_helper.cc index 7cead13..84775498 100644 --- a/components/browsing_data/content/local_storage_helper.cc +++ b/components/browsing_data/content/local_storage_helper.cc
@@ -50,8 +50,8 @@ } // namespace LocalStorageHelper::LocalStorageHelper(BrowserContext* context) - : dom_storage_context_(BrowserContext::GetDefaultStoragePartition(context) - ->GetDOMStorageContext()) { + : dom_storage_context_( + context->GetDefaultStoragePartition()->GetDOMStorageContext()) { DCHECK(dom_storage_context_); }
diff --git a/components/browsing_data/content/mock_appcache_helper.cc b/components/browsing_data/content/mock_appcache_helper.cc index e36fa7e5..3bba18a 100644 --- a/components/browsing_data/content/mock_appcache_helper.cc +++ b/components/browsing_data/content/mock_appcache_helper.cc
@@ -17,8 +17,8 @@ MockAppCacheHelper::MockAppCacheHelper(content::BrowserContext* browser_context) : AppCacheHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetAppCacheService()) {} + browser_context->GetDefaultStoragePartition()->GetAppCacheService()) { +} MockAppCacheHelper::~MockAppCacheHelper() {}
diff --git a/components/browsing_data/content/mock_cache_storage_helper.cc b/components/browsing_data/content/mock_cache_storage_helper.cc index d030c05a..2c4352f 100644 --- a/components/browsing_data/content/mock_cache_storage_helper.cc +++ b/components/browsing_data/content/mock_cache_storage_helper.cc
@@ -15,8 +15,7 @@ MockCacheStorageHelper::MockCacheStorageHelper( content::BrowserContext* browser_context) - : CacheStorageHelper(content::BrowserContext::GetDefaultStoragePartition( - browser_context)) {} + : CacheStorageHelper(browser_context->GetDefaultStoragePartition()) {} MockCacheStorageHelper::~MockCacheStorageHelper() {}
diff --git a/components/browsing_data/content/mock_cookie_helper.cc b/components/browsing_data/content/mock_cookie_helper.cc index 4ca273e..91f0d44 100644 --- a/components/browsing_data/content/mock_cookie_helper.cc +++ b/components/browsing_data/content/mock_cookie_helper.cc
@@ -17,9 +17,8 @@ namespace browsing_data { MockCookieHelper::MockCookieHelper(content::BrowserContext* browser_context) - : CookieHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context), - base::NullCallback()) {} + : CookieHelper(browser_context->GetDefaultStoragePartition(), + base::NullCallback()) {} MockCookieHelper::~MockCookieHelper() {}
diff --git a/components/browsing_data/content/mock_file_system_helper.cc b/components/browsing_data/content/mock_file_system_helper.cc index 6c28ec5..cb5600ab 100644 --- a/components/browsing_data/content/mock_file_system_helper.cc +++ b/components/browsing_data/content/mock_file_system_helper.cc
@@ -16,11 +16,10 @@ MockFileSystemHelper::MockFileSystemHelper( content::BrowserContext* browser_context) : FileSystemHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetFileSystemContext(), + browser_context->GetDefaultStoragePartition()->GetFileSystemContext(), {}, - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetNativeIOContext()) {} + browser_context->GetDefaultStoragePartition()->GetNativeIOContext()) { +} MockFileSystemHelper::~MockFileSystemHelper() {}
diff --git a/components/browsing_data/content/mock_indexed_db_helper.cc b/components/browsing_data/content/mock_indexed_db_helper.cc index 68591e2..2bea38413 100644 --- a/components/browsing_data/content/mock_indexed_db_helper.cc +++ b/components/browsing_data/content/mock_indexed_db_helper.cc
@@ -16,8 +16,7 @@ MockIndexedDBHelper::MockIndexedDBHelper( content::BrowserContext* browser_context) - : IndexedDBHelper(content::BrowserContext::GetDefaultStoragePartition( - browser_context)) {} + : IndexedDBHelper(browser_context->GetDefaultStoragePartition()) {} MockIndexedDBHelper::~MockIndexedDBHelper() {}
diff --git a/components/browsing_data/content/mock_service_worker_helper.cc b/components/browsing_data/content/mock_service_worker_helper.cc index 5d017a8..adfc71d 100644 --- a/components/browsing_data/content/mock_service_worker_helper.cc +++ b/components/browsing_data/content/mock_service_worker_helper.cc
@@ -17,9 +17,8 @@ MockServiceWorkerHelper::MockServiceWorkerHelper( content::BrowserContext* browser_context) - : ServiceWorkerHelper( - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetServiceWorkerContext()) {} + : ServiceWorkerHelper(browser_context->GetDefaultStoragePartition() + ->GetServiceWorkerContext()) {} MockServiceWorkerHelper::~MockServiceWorkerHelper() {}
diff --git a/components/browsing_data/content/mock_shared_worker_helper.cc b/components/browsing_data/content/mock_shared_worker_helper.cc index bad017d7..517b3feb 100644 --- a/components/browsing_data/content/mock_shared_worker_helper.cc +++ b/components/browsing_data/content/mock_shared_worker_helper.cc
@@ -15,8 +15,7 @@ MockSharedWorkerHelper::MockSharedWorkerHelper( content::BrowserContext* browser_context) - : SharedWorkerHelper(content::BrowserContext::GetDefaultStoragePartition( - browser_context)) {} + : SharedWorkerHelper(browser_context->GetDefaultStoragePartition()) {} MockSharedWorkerHelper::~MockSharedWorkerHelper() {}
diff --git a/components/browsing_data/content/service_worker_helper_unittest.cc b/components/browsing_data/content/service_worker_helper_unittest.cc index 9bb8cce..de4877d3 100644 --- a/components/browsing_data/content/service_worker_helper_unittest.cc +++ b/components/browsing_data/content/service_worker_helper_unittest.cc
@@ -20,8 +20,7 @@ class CannedServiceWorkerHelperTest : public testing::Test { public: content::ServiceWorkerContext* ServiceWorkerContext() { - return content::BrowserContext::GetDefaultStoragePartition( - &browser_context_) + return browser_context_.GetDefaultStoragePartition() ->GetServiceWorkerContext(); }
diff --git a/components/browsing_data/content/shared_worker_helper_unittest.cc b/components/browsing_data/content/shared_worker_helper_unittest.cc index bd2649e..be67e6b 100644 --- a/components/browsing_data/content/shared_worker_helper_unittest.cc +++ b/components/browsing_data/content/shared_worker_helper_unittest.cc
@@ -31,7 +31,7 @@ storage::StorageKey(url::Origin::Create(worker)); auto helper = base::MakeRefCounted<CannedSharedWorkerHelper>( - content::BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE(helper->empty()); helper->AddSharedWorker(worker, name, storage_key); @@ -49,7 +49,7 @@ const storage::StorageKey storage_key2(url::Origin::Create(worker2)); auto helper = base::MakeRefCounted<CannedSharedWorkerHelper>( - content::BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE(helper->empty()); helper->AddSharedWorker(worker1, name1, storage_key1); @@ -67,7 +67,7 @@ const storage::StorageKey storage_key2(url::Origin::Create(worker2)); auto helper = base::MakeRefCounted<CannedSharedWorkerHelper>( - content::BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE(helper->empty()); helper->AddSharedWorker(worker1, name, storage_key1);
diff --git a/components/captive_portal/content/captive_portal_service.cc b/components/captive_portal/content/captive_portal_service.cc index b899255..967bbbe 100644 --- a/components/captive_portal/content/captive_portal_service.cc +++ b/components/captive_portal/content/captive_portal_service.cc
@@ -130,9 +130,8 @@ if (loader_factory_for_testing) { loader_factory = loader_factory_for_testing; } else { - shared_url_loader_factory_ = - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetURLLoaderFactoryForBrowserProcess(); + shared_url_loader_factory_ = browser_context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); loader_factory = shared_url_loader_factory_.get(); } captive_portal_detector_ =
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings_test_utils.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings_test_utils.cc index 0211314..ccc6c2b 100644 --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings_test_utils.cc +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings_test_utils.cc
@@ -3,13 +3,13 @@ // found in the LICENSE file. #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings_test_utils.h" -#include "base/strings/string_piece.h" #include <stdint.h> #include "base/bind.h" #include "base/command_line.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h" #include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers_test_utils.h"
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.cc index 98b78a5f..8801f42 100644 --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.cc +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.cc
@@ -3,7 +3,6 @@ // found in the LICENSE file. #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h" -#include "base/strings/string_piece.h" #include <map> #include <memory> @@ -14,6 +13,7 @@ #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/run_loop.h" +#include "base/strings/string_piece.h" #include "base/threading/thread_task_runner_handle.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_prefs.h"
diff --git a/components/dom_distiller/core/task_tracker.cc b/components/dom_distiller/core/task_tracker.cc index cbfe35f9..9d916a7d 100644 --- a/components/dom_distiller/core/task_tracker.cc +++ b/components/dom_distiller/core/task_tracker.cc
@@ -87,7 +87,7 @@ std::unique_ptr<ViewerHandle> TaskTracker::AddViewer( ViewRequestDelegate* delegate) { - viewers_.push_back(delegate); + viewers_.AddObserver(delegate); if (content_ready_) { // Distillation for this task has already completed, and so the delegate can // be immediately told of the result. @@ -117,7 +117,7 @@ } void TaskTracker::RemoveViewer(ViewRequestDelegate* delegate) { - base::Erase(viewers_, delegate); + viewers_.RemoveObserver(delegate); if (viewers_.empty()) { MaybeCancel(); } @@ -221,8 +221,8 @@ } void TaskTracker::NotifyViewersAndCallbacks() { - for (auto* viewer : viewers_) { - NotifyViewer(viewer); + for (auto& viewer : viewers_) { + NotifyViewer(&viewer); } // Already inside a callback run SaveCallbacks directly. @@ -244,8 +244,8 @@ void TaskTracker::OnArticleDistillationUpdated( const ArticleDistillationUpdate& article_update) { - for (auto* viewer : viewers_) { - viewer->OnArticleUpdated(article_update); + for (auto& viewer : viewers_) { + viewer.OnArticleUpdated(article_update); } }
diff --git a/components/dom_distiller/core/task_tracker.h b/components/dom_distiller/core/task_tracker.h index 484145c..cc13e72 100644 --- a/components/dom_distiller/core/task_tracker.h +++ b/components/dom_distiller/core/task_tracker.h
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/memory/weak_ptr.h" +#include "base/observer_list.h" #include "components/dom_distiller/core/article_distillation_update.h" #include "components/dom_distiller/core/article_entry.h" #include "components/dom_distiller/core/distiller.h" @@ -40,9 +41,9 @@ // Interface for a DOM distiller entry viewer. Implement this to make a view // request and receive the data for an entry when it becomes available. -class ViewRequestDelegate { +class ViewRequestDelegate : public base::CheckedObserver { public: - virtual ~ViewRequestDelegate() = default; + ~ViewRequestDelegate() override = default; // Called when the distilled article contents are available. The // DistilledArticleProto is owned by a TaskTracker instance and is invalidated @@ -140,7 +141,7 @@ std::vector<SaveCallback> save_callbacks_; // A ViewRequestDelegate will be added to this list when a view request is // made and removed when the corresponding ViewerHandle is destroyed. - std::vector<ViewRequestDelegate*> viewers_; + base::ObserverList<ViewRequestDelegate> viewers_; std::unique_ptr<Distiller> distiller_; bool blob_fetcher_running_;
diff --git a/components/dom_distiller/standalone/content_extractor_browsertest.cc b/components/dom_distiller/standalone/content_extractor_browsertest.cc index b3380e9..1d67dd2 100644 --- a/components/dom_distiller/standalone/content_extractor_browsertest.cc +++ b/components/dom_distiller/standalone/content_extractor_browsertest.cc
@@ -136,7 +136,7 @@ std::make_unique<DistillerPageWebContentsFactory>(context); auto distiller_url_fetcher_factory = std::make_unique<DistillerURLFetcherFactory>( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); dom_distiller::proto::DomDistillerOptions options;
diff --git a/components/embedder_support/BUILD.gn b/components/embedder_support/BUILD.gn index c78282a..bbb2746 100644 --- a/components/embedder_support/BUILD.gn +++ b/components/embedder_support/BUILD.gn
@@ -23,7 +23,8 @@ deps = [ ":embedder_support", "//build:branding_buildflags", - "//components/content_settings/core/browser:browser", + "//components/content_settings/browser", + "//components/content_settings/core/browser", "//components/version_info", "//content/public/browser", ]
diff --git a/components/embedder_support/DEPS b/components/embedder_support/DEPS index ef2c078..18c8d9c 100644 --- a/components/embedder_support/DEPS +++ b/components/embedder_support/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+components/content_settings/browser", "+components/content_settings/core/browser", "+components/content_settings/core/common", "+components/version_info",
diff --git a/components/embedder_support/content_settings_utils.cc b/components/embedder_support/content_settings_utils.cc index 6d713ca6..5d3ce64 100644 --- a/components/embedder_support/content_settings_utils.cc +++ b/components/embedder_support/content_settings_utils.cc
@@ -4,6 +4,7 @@ #include "components/embedder_support/content_settings_utils.h" +#include "components/content_settings/browser/page_specific_content_settings.h" #include "components/content_settings/core/browser/cookie_settings.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_utils.h" @@ -46,30 +47,59 @@ const GURL& worker_url, const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, + const std::string& name, + const storage::StorageKey& storage_key, + int render_process_id, + int render_frame_id, const content_settings::CookieSettings* cookie_settings) { - return cookie_settings->IsCookieAccessAllowed(worker_url, site_for_cookies, - top_frame_origin); + bool allow = cookie_settings->IsCookieAccessAllowed( + worker_url, site_for_cookies, top_frame_origin); + + content_settings::PageSpecificContentSettings::SharedWorkerAccessed( + render_process_id, render_frame_id, worker_url, name, storage_key, + !allow); + return allow; } bool AllowWorkerFileSystem( const GURL& url, + const std::vector<content::GlobalFrameRoutingId>& render_frames, const content_settings::CookieSettings* cookie_settings) { - return cookie_settings->IsCookieAccessAllowed(url, url, - url::Origin::Create(url)); + bool allow = cookie_settings->IsCookieAccessAllowed(url, url, + url::Origin::Create(url)); + for (const auto& it : render_frames) { + content_settings::PageSpecificContentSettings::FileSystemAccessed( + it.child_id, it.frame_routing_id, url, !allow); + } + return allow; } bool AllowWorkerIndexedDB( const GURL& url, + const std::vector<content::GlobalFrameRoutingId>& render_frames, const content_settings::CookieSettings* cookie_settings) { - return cookie_settings->IsCookieAccessAllowed(url, url, - url::Origin::Create(url)); + bool allow = cookie_settings->IsCookieAccessAllowed(url, url, + url::Origin::Create(url)); + + for (const auto& it : render_frames) { + content_settings::PageSpecificContentSettings::IndexedDBAccessed( + it.child_id, it.frame_routing_id, url, !allow); + } + return allow; } bool AllowWorkerCacheStorage( const GURL& url, + const std::vector<content::GlobalFrameRoutingId>& render_frames, const content_settings::CookieSettings* cookie_settings) { - return cookie_settings->IsCookieAccessAllowed(url, url, - url::Origin::Create(url)); + bool allow = cookie_settings->IsCookieAccessAllowed(url, url, + url::Origin::Create(url)); + + for (const auto& it : render_frames) { + content_settings::PageSpecificContentSettings::CacheStorageAccessed( + it.child_id, it.frame_routing_id, url, !allow); + } + return allow; } bool AllowWorkerWebLocks(
diff --git a/components/embedder_support/content_settings_utils.h b/components/embedder_support/content_settings_utils.h index 8a681ff..596e8cf9 100644 --- a/components/embedder_support/content_settings_utils.h +++ b/components/embedder_support/content_settings_utils.h
@@ -7,6 +7,7 @@ #include "base/optional.h" #include "content/public/browser/allow_service_worker_result.h" +#include "content/public/browser/global_routing_id.h" #include "url/origin.h" class GURL; @@ -16,6 +17,10 @@ class CookieSettings; } +namespace storage { +class StorageKey; +} + namespace embedder_support { // See ContentBrowserClient::AllowAppCache. @@ -32,25 +37,36 @@ const content_settings::CookieSettings* cookie_settings, const HostContentSettingsMap* settings_map); -// See ContentBrowserClient::AllowSharedWorker. +// See ContentBrowserClient::AllowSharedWorker. This also notifies content +// settings of shared worker access. bool AllowSharedWorker(const GURL& worker_url, const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, + const std::string& name, + const storage::StorageKey& storage_key, + int render_process_id, + int render_frame_id, const content_settings::CookieSettings* cookie_settings); -// See ContentBrowserClient::AllowWorkerFileSystem. +// See ContentBrowserClient::AllowWorkerFileSystem. This also notifies content +// settings of file system access. bool AllowWorkerFileSystem( const GURL& url, + const std::vector<content::GlobalFrameRoutingId>& render_frames, const content_settings::CookieSettings* cookie_settings); -// See ContentBrowserClient::AllowWorkerIndexedDB. +// See ContentBrowserClient::AllowWorkerIndexedDB. This also notifies content +// settings of Indexed DB access. bool AllowWorkerIndexedDB( const GURL& url, + const std::vector<content::GlobalFrameRoutingId>& render_frames, const content_settings::CookieSettings* cookie_settings); -// See ContentBrowserClient::AllowWorkerCacheStorage. +// See ContentBrowserClient::AllowWorkerCacheStorage. This also notifies content +// settings of cache storage access. bool AllowWorkerCacheStorage( const GURL& url, + const std::vector<content::GlobalFrameRoutingId>& render_frames, const content_settings::CookieSettings* cookie_settings); // See ContentBrowserClient::AllowWorkerWebLocks.
diff --git a/components/feed/core/proto/v2/store.proto b/components/feed/core/proto/v2/store.proto index 22b60e5..f2fdf8a 100644 --- a/components/feed/core/proto/v2/store.proto +++ b/components/feed/core/proto/v2/store.proto
@@ -79,6 +79,9 @@ // 'StreamData.last_added_time_millis' value of that stream. This is used to // determine whether the user has already seen a stored stream's data. int64 view_time_millis = 2; + // Whether the stream data is known to be stale. This can happen in the + // WebFeed stream if the subscription list changes. + bool is_known_stale = 3; } // Token used to read or write to the same storage.
diff --git a/components/feed/core/v2/api_test/feed_api_stream_unittest.cc b/components/feed/core/v2/api_test/feed_api_stream_unittest.cc index 89f42219..fc3b83c 100644 --- a/components/feed/core/v2/api_test/feed_api_stream_unittest.cc +++ b/components/feed/core/v2/api_test/feed_api_stream_unittest.cc
@@ -3,6 +3,8 @@ // found in the LICENSE file. #include "base/callback_helpers.h" +#include "base/feature_list.h" +#include "base/test/bind.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/user_action_tester.h" #include "base/test/scoped_feature_list.h" @@ -14,6 +16,7 @@ #include "components/feed/core/v2/feedstore_util.h" #include "components/feed/core/v2/public/feed_api.h" #include "components/feed/core/v2/public/feed_service.h" +#include "components/feed/core/v2/public/stream_type.h" #include "components/feed/core/v2/test/callback_receiver.h" #include "components/feed/core/v2/test/stream_builder.h" #include "components/feed/feed_feature_list.h" @@ -2089,6 +2092,72 @@ &profile_prefs_)); } +TEST_F(FeedApiTest, HasUnreadContentIsFalseAfterSliceView) { + response_translator_.InjectResponse(MakeTypicalInitialModelState()); + TestForYouSurface surface(stream_.get()); + WaitForIdleTaskQueue(); + EXPECT_EQ("loading -> 2 slices", surface.DescribeUpdates()); + ASSERT_TRUE(stream_->HasUnreadContent(kForYouStream)); + stream_->ReportSliceViewed( + surface.GetSurfaceId(), surface.GetStreamType(), + surface.initial_state->updated_slices(1).slice().slice_id()); + + EXPECT_FALSE(stream_->HasUnreadContent(kForYouStream)); +} + +TEST_F(FeedApiTest, + LoadingForYouStreamTriggersWebFeedRefreshIfNoUnreadContent) { + Config config = GetFeedConfig(); + config.refresh_web_feed_after_for_you_feed_loads = true; + SetFeedConfigForTesting(config); + base::test::ScopedFeatureList features; + features.InitAndEnableFeature(kWebFeed); + + // Both streams should be fetched. + response_translator_.InjectResponse(MakeTypicalInitialModelState()); + response_translator_.InjectResponse(MakeTypicalInitialModelState()); + TestForYouSurface surface(stream_.get()); + WaitForIdleTaskQueue(); + ASSERT_EQ(2, network_.send_query_call_count); + EXPECT_EQ("loading -> 2 slices", surface.DescribeUpdates()); + EXPECT_EQ(LoadStreamStatus::kLoadedFromNetwork, + metrics_reporter_->load_stream_status); + + // Attach a Web Feed surface, and verify content is loaded from the store. + TestWebFeedSurface web_feed_surface(stream_.get()); + WaitForIdleTaskQueue(); + + EXPECT_EQ("loading -> 2 slices", web_feed_surface.DescribeUpdates()); + EXPECT_EQ(LoadStreamStatus::kLoadedFromStore, + metrics_reporter_->load_stream_status); +} + +TEST_F( + FeedApiTest, + LoadForYouStreamDoesNotTriggerWebFeedRefreshContentIfIsAlreadyAvailable) { + Config config = GetFeedConfig(); + config.refresh_web_feed_after_for_you_feed_loads = true; + SetFeedConfigForTesting(config); + base::test::ScopedFeatureList features; + features.InitAndEnableFeature(kWebFeed); + + // Both streams should be fetched because there is no unread web-feed content. + response_translator_.InjectResponse(MakeTypicalInitialModelState()); + response_translator_.InjectResponse(MakeTypicalInitialModelState()); + TestForYouSurface surface(stream_.get()); + WaitForIdleTaskQueue(); + ASSERT_EQ(2, network_.send_query_call_count); + + // Detach and re-attach the surface. The for-you feed should be loaded again, + // but this time the web-feed is not refreshed. + surface.Detach(); + UnloadModel(surface.GetStreamType()); + surface.Attach(stream_.get()); + WaitForIdleTaskQueue(); + // Neither stream type should be refreshed. + ASSERT_EQ(2, network_.send_query_call_count); +} + // Keep instantiations at the bottom. INSTANTIATE_TEST_SUITE_P(FeedApiTest, FeedStreamTestForAllStreamTypes,
diff --git a/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc b/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc index d9ddff1..ee58a15 100644 --- a/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc +++ b/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc
@@ -8,6 +8,8 @@ #include "components/feed/core/v2/config.h" #include "components/feed/core/v2/feed_network.h" #include "components/feed/core/v2/feed_stream.h" +#include "components/feed/core/v2/feedstore_util.h" +#include "components/feed/core/v2/public/feed_api.h" #include "components/feed/core/v2/public/types.h" #include "components/feed/core/v2/public/web_feed_subscriptions.h" #include "components/feed/core/v2/test/callback_receiver.h" @@ -178,6 +180,7 @@ "WebFeedMetadata{ id=id_cats title=Title cats " "publisher_url=https://cats.com/ status=kSubscribed }", PrintToString(callback.RunAndGetResult().web_feed_metadata)); + EXPECT_TRUE(feedstore::IsKnownStale(stream_->GetMetadata(), kWebFeedStream)); } TEST_F(FeedApiSubscriptionsTest, FollowRecommendedWebFeedById) { @@ -279,6 +282,7 @@ TEST_F(FeedApiSubscriptionsTest, FollowWebFeedNetworkError) { network_.InjectFollowResponse(MakeFailedResponse()); CallbackReceiver<WebFeedSubscriptions::FollowWebFeedResult> callback; + EXPECT_FALSE(feedstore::IsKnownStale(stream_->GetMetadata(), kWebFeedStream)); subscriptions().FollowWebFeed(MakeWebFeedPageInformation("http://cats.com"), callback.Bind()); @@ -286,6 +290,7 @@ EXPECT_EQ(WebFeedSubscriptionRequestStatus::kFailedUnknownError, callback.RunAndGetResult().request_status); EXPECT_EQ("{}", PrintToString(CheckAllSubscriptions())); + EXPECT_FALSE(feedstore::IsKnownStale(stream_->GetMetadata(), kWebFeedStream)); } // Follow and then unfollow a web feed successfully. @@ -295,7 +300,8 @@ subscriptions().FollowWebFeed(MakeWebFeedPageInformation("http://cats.com"), follow_callback.Bind()); follow_callback.RunUntilCalled(); - + // Un-mark stream as stale, to verify unsubscribe also marks stream as stale. + stream_->SetStreamStale(kWebFeedStream, false); CallbackReceiver<WebFeedSubscriptions::UnfollowWebFeedResult> unfollow_callback; network_.InjectResponse(SuccessfulUnfollowResponse()); @@ -308,6 +314,7 @@ EXPECT_EQ(WebFeedSubscriptionRequestStatus::kSuccess, unfollow_callback.GetResult()->request_status); EXPECT_EQ("{}", PrintToString(CheckAllSubscriptions())); + EXPECT_TRUE(feedstore::IsKnownStale(stream_->GetMetadata(), kWebFeedStream)); } TEST_F(FeedApiSubscriptionsTest, UnfollowAFollowedWebFeedTwiceAtOnce) { @@ -349,6 +356,8 @@ CallbackReceiver<WebFeedSubscriptions::UnfollowWebFeedResult> unfollow_callback; network_.InjectUnfollowResponse(MakeFailedResponse()); + // Un-mark stream as stale, to verify unsubscribe also marks stream as stale. + stream_->SetStreamStale(kWebFeedStream, false); subscriptions().UnfollowWebFeed( follow_callback.GetResult()->web_feed_metadata.web_feed_id, unfollow_callback.Bind()); @@ -361,6 +370,7 @@ "{ WebFeedMetadata{ id=id_cats title=Title cats " "publisher_url=https://cats.com/ status=kSubscribed } }", PrintToString(CheckAllSubscriptions())); + EXPECT_FALSE(feedstore::IsKnownStale(stream_->GetMetadata(), kWebFeedStream)); } TEST_F(FeedApiSubscriptionsTest, UnfollowWhileOffline) {
diff --git a/components/feed/core/v2/api_test/feed_api_test.cc b/components/feed/core/v2/api_test/feed_api_test.cc index 70ea3ac..43a2044c 100644 --- a/components/feed/core/v2/api_test/feed_api_test.cc +++ b/components/feed/core/v2/api_test/feed_api_test.cc
@@ -61,7 +61,7 @@ result = std::move(task_result); }; LoadStreamFromStoreTask load_task( - LoadStreamFromStoreTask::LoadType::kFullLoad, stream_type, store, + LoadStreamFromStoreTask::LoadType::kFullLoad, nullptr, stream_type, store, /*missed_last_refresh=*/false, base::BindLambdaForTesting(complete)); // We want to load the data no matter how stale. load_task.IgnoreStalenessForTesting(); @@ -656,6 +656,9 @@ // `use_feed_query_requests_for_web_feeds` is a temporary option for // debugging, setting it to false tests the preferred endpoint. config.use_feed_query_requests_for_web_feeds = false; + // Disable refreshing the Web Feed stream after the for-you stream is loaded, + // to simplify tests unrelated to this feature. + config.refresh_web_feed_after_for_you_feed_loads = false; SetFeedConfigForTesting(config); feed::prefs::RegisterFeedSharedProfilePrefs(profile_prefs_.registry()); @@ -706,6 +709,9 @@ std::string FeedApiTest::GetLanguageTag() { return "en-US"; } +bool FeedApiTest::IsAutoplayEnabled() { + return false; +} void FeedApiTest::PrefetchImage(const GURL& url) { prefetched_images_.push_back(url); prefetch_image_call_count_++;
diff --git a/components/feed/core/v2/api_test/feed_api_test.h b/components/feed/core/v2/api_test/feed_api_test.h index eb2a4df..65db1e8 100644 --- a/components/feed/core/v2/api_test/feed_api_test.h +++ b/components/feed/core/v2/api_test/feed_api_test.h
@@ -399,6 +399,7 @@ bool IsOffline() override; DisplayMetrics GetDisplayMetrics() override; std::string GetLanguageTag() override; + bool IsAutoplayEnabled() override; void ClearAll() override {} std::string GetSyncSignedInGaia() override; void PrefetchImage(const GURL& url) override;
diff --git a/components/feed/core/v2/config.h b/components/feed/core/v2/config.h index c5b395f..61e3b00 100644 --- a/components/feed/core/v2/config.h +++ b/components/feed/core/v2/config.h
@@ -80,6 +80,9 @@ // Number of days of history to query when determining whether to show the // follow accelerator. int webfeed_accelerator_recent_visit_history_days = 14; + // After loading the for-you feed, should the web-feed be refreshed as well? + // This is true except for testing. + bool refresh_web_feed_after_for_you_feed_loads = true; // Configuration for `PersistentKeyValueStore`.
diff --git a/components/feed/core/v2/enums.cc b/components/feed/core/v2/enums.cc index 06d389a..f6b191e 100644 --- a/components/feed/core/v2/enums.cc +++ b/components/feed/core/v2/enums.cc
@@ -65,6 +65,8 @@ return out << "kDataInStoreIsForAnotherUser"; case LoadStreamStatus::kAbortWithPendingClearAll: return out << "kAbortWithPendingClearAll"; + case LoadStreamStatus::kAlreadyHaveUnreadContent: + return out << "kAlreadyHaveUnreadContent"; } #else return out << (static_cast<int>(value));
diff --git a/components/feed/core/v2/enums.h b/components/feed/core/v2/enums.h index da184b2..6420afa 100644 --- a/components/feed/core/v2/enums.h +++ b/components/feed/core/v2/enums.h
@@ -63,7 +63,8 @@ kDataInStoreIsExpired = 22, kDataInStoreIsForAnotherUser = 23, kAbortWithPendingClearAll = 24, - kMaxValue = kAbortWithPendingClearAll, + kAlreadyHaveUnreadContent = 25, + kMaxValue = kAlreadyHaveUnreadContent, }; std::ostream& operator<<(std::ostream& out, LoadStreamStatus value);
diff --git a/components/feed/core/v2/feed_stream.cc b/components/feed/core/v2/feed_stream.cc index 1add17b..5387534b1 100644 --- a/components/feed/core/v2/feed_stream.cc +++ b/components/feed/core/v2/feed_stream.cc
@@ -34,6 +34,7 @@ #include "components/feed/core/v2/public/feed_api.h" #include "components/feed/core/v2/public/feed_stream_surface.h" #include "components/feed/core/v2/public/refresh_task_scheduler.h" +#include "components/feed/core/v2/public/stream_type.h" #include "components/feed/core/v2/public/types.h" #include "components/feed/core/v2/public/unread_content_observer.h" #include "components/feed/core/v2/scheduling.h" @@ -210,8 +211,10 @@ stream.model_loading_in_progress = true; stream.surface_updater->LoadStreamStarted(); + LoadStreamTask::Options options; + options.stream_type = stream_type; task_queue_.AddTask(std::make_unique<LoadStreamTask>( - LoadStreamTask::LoadType::kInitialLoad, stream_type, this, + options, this, base::BindOnce(&FeedStream::InitialStreamLoadComplete, base::Unretained(this)))); } @@ -246,6 +249,24 @@ result.final_status); LoadTaskComplete(result); + + // When done loading the for-you feed, try to refresh the web-feed if there's + // no unread content. + if (base::FeatureList::IsEnabled(kWebFeed) && + GetFeedConfig().refresh_web_feed_after_for_you_feed_loads) { + if (result.stream_type.IsForYou()) { + if (!HasUnreadContent(kWebFeedStream)) { + LoadStreamTask::Options options; + options.load_type = LoadStreamTask::LoadType::kBackgroundRefresh; + options.stream_type = kWebFeedStream; + options.abort_if_unread_content = true; + task_queue_.AddTask(std::make_unique<LoadStreamTask>( + options, this, + base::BindOnce(&FeedStream::BackgroundRefreshComplete, + base::Unretained(this)))); + } + } + } } void FeedStream::OnEnterBackground() { @@ -274,10 +295,29 @@ std::string FeedStream::GetSessionId() const { return metadata_.session_id().token(); } + +const feedstore::Metadata& FeedStream::GetMetadata() const { + DCHECK(metadata_populated_) + << "Metadata is not yet populated. This function should only be called " + "after the WaitForStoreInitialize task is complete."; + return metadata_; +} + void FeedStream::SetMetadata(feedstore::Metadata metadata) { metadata_ = std::move(metadata); store_->WriteMetadata(metadata_, base::DoNothing()); } + +void FeedStream::SetStreamStale(const StreamType& stream_type, bool is_stale) { + feedstore::Metadata metadata = GetMetadata(); + feedstore::Metadata::StreamMetadata& stream_metadata = + feedstore::MetadataForStream(metadata, stream_type); + if (stream_metadata.is_known_stale() != is_stale) { + stream_metadata.set_is_known_stale(is_stale); + SetMetadata(metadata); + } +} + bool FeedStream::SetMetadata(base::Optional<feedstore::Metadata> metadata) { if (metadata) { SetMetadata(std::move(*metadata)); @@ -721,6 +761,7 @@ result.language_tag = delegate_->GetLanguageTag(); result.notice_card_acknowledged = notice_card_tracker_.HasAcknowledgedNoticeCard(); + result.autoplay_enabled = delegate_->IsAutoplayEnabled(); if (is_for_next_page) { // If we are continuing an existing feed, use whatever session continuity @@ -813,8 +854,11 @@ return; } + LoadStreamTask::Options options; + options.stream_type = stream_type; + options.load_type = LoadStreamTask::LoadType::kBackgroundRefresh; task_queue_.AddTask(std::make_unique<LoadStreamTask>( - LoadStreamTask::LoadType::kBackgroundRefresh, stream_type, this, + options, this, base::BindOnce(&FeedStream::BackgroundRefreshComplete, base::Unretained(this)))); } @@ -849,6 +893,7 @@ if (!result.last_added_time.is_null()) GetStream(result.stream_type).last_updated_time = result.last_added_time; if (result.loaded_new_content_from_network) { + SetStreamStale(result.stream_type, false); if (result.stream_type.IsForYou()) UpdateExperiments(result.experiments); } @@ -857,6 +902,13 @@ MaybeReportNewSuggestionsAvailable(result); } +bool FeedStream::HasUnreadContent(const StreamType& stream_type) { + Stream& stream = GetStream(stream_type); + return !stream.last_updated_time.is_null() && + feedstore::GetStreamViewTime(metadata_, stream_type) != + stream.last_updated_time; +} + void FeedStream::MaybeReportNewSuggestionsAvailable( const LoadStreamTask::Result& result) { if (result.loaded_new_content_from_network && prefetch_service_ &&
diff --git a/components/feed/core/v2/feed_stream.h b/components/feed/core/v2/feed_stream.h index 6ea5c4d..3465489a 100644 --- a/components/feed/core/v2/feed_stream.h +++ b/components/feed/core/v2/feed_stream.h
@@ -71,6 +71,7 @@ virtual bool IsOffline() = 0; virtual DisplayMetrics GetDisplayMetrics() = 0; virtual std::string GetLanguageTag() = 0; + virtual bool IsAutoplayEnabled() = 0; virtual void ClearAll() = 0; virtual std::string GetSyncSignedInGaia() = 0; virtual void PrefetchImage(const GURL& url) = 0; @@ -190,9 +191,10 @@ FeedNetwork* GetNetwork() { return feed_network_; } FeedStore* GetStore() { return store_; } RequestThrottler* GetRequestThrottler() { return &request_throttler_; } - const feedstore::Metadata& GetMetadata() const { return metadata_; } + const feedstore::Metadata& GetMetadata() const; void SetMetadata(feedstore::Metadata metadata); bool SetMetadata(base::Optional<feedstore::Metadata> metadata); + void SetStreamStale(const StreamType& stream_type, bool is_stale); MetricsReporter& GetMetricsReporter() const { return *metrics_reporter_; } @@ -248,6 +250,8 @@ RequestMetadata GetRequestMetadata(const StreamType& stream_type, bool is_for_next_page) const; + bool HasUnreadContent(const StreamType& stream_type); + bool IsOffline() const { return delegate_->IsOffline(); } offline_pages::TaskQueue& GetTaskQueue() { return task_queue_; }
diff --git a/components/feed/core/v2/feedstore_util.cc b/components/feed/core/v2/feedstore_util.cc index d08f33e..62fe394 100644 --- a/components/feed/core/v2/feedstore_util.cc +++ b/components/feed/core/v2/feedstore_util.cc
@@ -112,6 +112,13 @@ return result; } +bool IsKnownStale(const Metadata& metadata, + const feed::StreamType& stream_type) { + const Metadata::StreamMetadata* sm = + FindMetadataForStream(metadata, stream_type); + return sm ? sm->is_known_stale() : false; +} + feedstore::Metadata MakeMetadata(const std::string& gaia) { feedstore::Metadata md; md.set_stream_schema_version(feed::FeedStore::kCurrentStreamSchemaVersion);
diff --git a/components/feed/core/v2/feedstore_util.h b/components/feed/core/v2/feedstore_util.h index 59f8d89..e99d50f5 100644 --- a/components/feed/core/v2/feedstore_util.h +++ b/components/feed/core/v2/feedstore_util.h
@@ -31,6 +31,8 @@ base::Time GetSessionIdExpiryTime(const feedstore::Metadata& metadata); base::Time GetStreamViewTime(const Metadata& metadata, const feed::StreamType& stream_type); +bool IsKnownStale(const Metadata& metadata, + const feed::StreamType& stream_type); feedstore::Metadata MakeMetadata(const std::string& gaia); // Mutations of Metadata. Metadata will need stored again after being changed, @@ -42,7 +44,11 @@ const feedstore::Metadata& metadata, base::Optional<std::string> token); feed::LocalActionId GetNextActionId(feedstore::Metadata& metadata); -const feedstore::Metadata::StreamMetadata* FindMetadataForStream( +const Metadata::StreamMetadata* FindMetadataForStream( + const Metadata& metadata, + const feed::StreamType& stream_type); +Metadata::StreamMetadata& MetadataForStream( + Metadata& metadata, const feed::StreamType& stream_type); base::Optional<Metadata> SetStreamViewTime(const Metadata& metadata, const feed::StreamType& stream_type,
diff --git a/components/feed/core/v2/proto_util.cc b/components/feed/core/v2/proto_util.cc index 922c92c..09c5becc 100644 --- a/components/feed/core/v2/proto_util.cc +++ b/components/feed/core/v2/proto_util.cc
@@ -138,7 +138,7 @@ if (base::FeatureList::IsEnabled(kInterestFeedV2Hearts)) { feed_request.add_client_capability(feedwire::Capability::HEART); } - if (base::FeatureList::IsEnabled(kInterestFeedV2Autoplay)) { + if (request_metadata.autoplay_enabled) { feed_request.add_client_capability( feedwire::Capability::INLINE_VIDEO_AUTOPLAY); feed_request.add_client_capability(
diff --git a/components/feed/core/v2/proto_util_unittest.cc b/components/feed/core/v2/proto_util_unittest.cc index c944c04..b9ec31c 100644 --- a/components/feed/core/v2/proto_util_unittest.cc +++ b/components/feed/core/v2/proto_util_unittest.cc
@@ -155,5 +155,21 @@ .notice_card_acknowledged()); } +TEST(ProtoUtilTest, AutoplayEnabled) { + RequestMetadata request_metadata; + request_metadata.autoplay_enabled = true; + + feedwire::FeedRequest request = + CreateFeedQueryRefreshRequest( + kForYouStream, feedwire::FeedQuery::MANUAL_REFRESH, request_metadata, + /*consistency_token=*/std::string()) + .feed_request(); + + ASSERT_THAT(request.client_capability(), + testing::Contains(feedwire::Capability::INLINE_VIDEO_AUTOPLAY)); + ASSERT_THAT(request.client_capability(), + testing::Contains(feedwire::Capability::OPEN_VIDEO_COMMAND)); +} + } // namespace } // namespace feed
diff --git a/components/feed/core/v2/public/feed_service.cc b/components/feed/core/v2/public/feed_service.cc index 69b22bd..112d55ed 100644 --- a/components/feed/core/v2/public/feed_service.cc +++ b/components/feed/core/v2/public/feed_service.cc
@@ -142,6 +142,9 @@ std::string GetLanguageTag() override { return service_delegate_->GetLanguageTag(); } + bool IsAutoplayEnabled() override { + return service_delegate_->IsAutoplayEnabled(); + } void ClearAll() override { service_delegate_->ClearAll(); } void PrefetchImage(const GURL& url) override { service_delegate_->PrefetchImage(url);
diff --git a/components/feed/core/v2/public/feed_service.h b/components/feed/core/v2/public/feed_service.h index 07981ad..b50403cd 100644 --- a/components/feed/core/v2/public/feed_service.h +++ b/components/feed/core/v2/public/feed_service.h
@@ -69,6 +69,8 @@ virtual std::string GetLanguageTag() = 0; // Returns display metrics for the device. virtual DisplayMetrics GetDisplayMetrics() = 0; + // Returns true if autoplay is enabled. + virtual bool IsAutoplayEnabled() = 0; // Clear all stored data. virtual void ClearAll() = 0; // Fetch the image and store it in the disk cache. @@ -117,6 +119,9 @@ static uint64_t GetReliabilityLoggingId(const std::string& metrics_id, PrefService* pref_service); + // Whether autoplay is enabled. + static bool IsAutoplayEnabled(const PrefService& pref_service); + private: class StreamDelegateImpl; class NetworkDelegateImpl;
diff --git a/components/feed/core/v2/public/stream_type.h b/components/feed/core/v2/public/stream_type.h index 6f107fa..f846a1e 100644 --- a/components/feed/core/v2/public/stream_type.h +++ b/components/feed/core/v2/public/stream_type.h
@@ -31,6 +31,7 @@ bool operator==(const StreamType& rhs) const { return type_ == rhs.type_; } bool IsForYou() const { return type_ == Type::kForYou; } bool IsWebFeed() const { return type_ == Type::kWebFeed; } + bool IsValid() const { return type_ != Type::kUnspecified; } // Returns a human-readable value, for debugging/DCHECK prints. std::string ToString() const;
diff --git a/components/feed/core/v2/scheduling.cc b/components/feed/core/v2/scheduling.cc index 046b106..9b40b8a 100644 --- a/components/feed/core/v2/scheduling.cc +++ b/components/feed/core/v2/scheduling.cc
@@ -8,6 +8,7 @@ #include "base/util/values/values_util.h" #include "base/values.h" #include "components/feed/core/v2/config.h" +#include "components/feed/core/v2/feedstore_util.h" namespace feed { namespace { @@ -86,11 +87,17 @@ return now + GetFeedConfig().default_background_refresh_interval; } -bool ShouldWaitForNewContent(const StreamType& stream_type, +bool ShouldWaitForNewContent(const feedstore::Metadata& metadata, + const StreamType& stream_type, bool has_content, base::TimeDelta content_age) { - return !has_content || - content_age > GetFeedConfig().GetStalenessThreshold(stream_type); + if (!has_content) + return true; + const feedstore::Metadata::StreamMetadata* stream_metadata = + feedstore::FindMetadataForStream(metadata, stream_type); + if (stream_metadata && stream_metadata->is_known_stale()) + return true; + return content_age > GetFeedConfig().GetStalenessThreshold(stream_type); } } // namespace feed
diff --git a/components/feed/core/v2/scheduling.h b/components/feed/core/v2/scheduling.h index 29dac553..b3c9f660 100644 --- a/components/feed/core/v2/scheduling.h +++ b/components/feed/core/v2/scheduling.h
@@ -14,6 +14,9 @@ namespace base { class Value; } +namespace feedstore { +class Metadata; +} namespace feed { constexpr base::TimeDelta kSuppressRefreshDuration = base::TimeDelta::FromMinutes(30); @@ -40,7 +43,8 @@ base::Time NextScheduledRequestTime(base::Time now, RequestSchedule* schedule); // Returns whether we should wait for new content before showing stream content. -bool ShouldWaitForNewContent(const StreamType& stream_type, +bool ShouldWaitForNewContent(const feedstore::Metadata& metadata, + const StreamType& stream_type, bool has_content, base::TimeDelta content_age); } // namespace feed
diff --git a/components/feed/core/v2/surface_updater.cc b/components/feed/core/v2/surface_updater.cc index 5c9e878..bbd85b9 100644 --- a/components/feed/core/v2/surface_updater.cc +++ b/components/feed/core/v2/surface_updater.cc
@@ -10,6 +10,7 @@ #include "base/check.h" #include "base/strings/string_number_conversions.h" #include "components/feed/core/proto/v2/xsurface.pb.h" +#include "components/feed/core/v2/enums.h" #include "components/feed/core/v2/feed_stream.h" #include "components/feed/core/v2/metrics_reporter.h" #include "components/feed/core/v2/public/feed_stream_surface.h" @@ -165,6 +166,7 @@ case LoadStreamStatus::kDataInStoreIsExpired: case LoadStreamStatus::kDataInStoreIsForAnotherUser: case LoadStreamStatus::kAbortWithPendingClearAll: + case LoadStreamStatus::kAlreadyHaveUnreadContent: break; } return feedui::ZeroStateSlice::NO_CARDS_AVAILABLE;
diff --git a/components/feed/core/v2/tasks/get_prefetch_suggestions_task.cc b/components/feed/core/v2/tasks/get_prefetch_suggestions_task.cc index 00ba9ef..67aa0de 100644 --- a/components/feed/core/v2/tasks/get_prefetch_suggestions_task.cc +++ b/components/feed/core/v2/tasks/get_prefetch_suggestions_task.cc
@@ -64,7 +64,7 @@ } load_from_store_task_ = std::make_unique<LoadStreamFromStoreTask>( - LoadStreamFromStoreTask::LoadType::kFullLoad, kForYouStream, + LoadStreamFromStoreTask::LoadType::kFullLoad, stream_, kForYouStream, stream_->GetStore(), /*missed_last_refresh=*/false, base::BindOnce(&GetPrefetchSuggestionsTask::LoadStreamComplete,
diff --git a/components/feed/core/v2/tasks/load_stream_from_store_task.cc b/components/feed/core/v2/tasks/load_stream_from_store_task.cc index 2c236466a..378e1dc 100644 --- a/components/feed/core/v2/tasks/load_stream_from_store_task.cc +++ b/components/feed/core/v2/tasks/load_stream_from_store_task.cc
@@ -29,11 +29,13 @@ LoadStreamFromStoreTask::LoadStreamFromStoreTask( LoadType load_type, + FeedStream* feed_stream, const StreamType& stream_type, FeedStore* store, bool missed_last_refresh, base::OnceCallback<void(Result)> callback) : load_type_(load_type), + feed_stream_(feed_stream), stream_type_(stream_type), store_(store), missed_last_refresh_(missed_last_refresh), @@ -74,7 +76,8 @@ } if (content_age_ < base::TimeDelta()) { stale_reason_ = LoadStreamStatus::kDataInStoreIsStaleTimestampInFuture; - } else if (ShouldWaitForNewContent(result.stream_type, true, + } else if (ShouldWaitForNewContent(feed_stream_->GetMetadata(), + result.stream_type, true, content_age_)) { stale_reason_ = LoadStreamStatus::kDataInStoreIsStale; } else if (missed_last_refresh_) {
diff --git a/components/feed/core/v2/tasks/load_stream_from_store_task.h b/components/feed/core/v2/tasks/load_stream_from_store_task.h index 96e35e0..bc6292a 100644 --- a/components/feed/core/v2/tasks/load_stream_from_store_task.h +++ b/components/feed/core/v2/tasks/load_stream_from_store_task.h
@@ -16,6 +16,7 @@ #include "components/offline_pages/task/task.h" namespace feed { +class FeedStream; struct StreamModelUpdateRequest; // Attempts to load stream data from persistent storage. @@ -48,6 +49,7 @@ }; LoadStreamFromStoreTask(LoadType load_type, + FeedStream* feed_stream, const StreamType& stream_type, FeedStore* store, bool missed_last_refresh, @@ -72,6 +74,7 @@ LoadStreamStatus stale_reason_ = LoadStreamStatus::kNoStatus; LoadType load_type_; + FeedStream* feed_stream_; StreamType stream_type_; FeedStore* store_; // Unowned. bool ignore_staleness_ = false;
diff --git a/components/feed/core/v2/tasks/load_stream_task.cc b/components/feed/core/v2/tasks/load_stream_task.cc index e18a152..1795396e 100644 --- a/components/feed/core/v2/tasks/load_stream_task.cc +++ b/components/feed/core/v2/tasks/load_stream_task.cc
@@ -54,14 +54,13 @@ Result::Result(Result&&) = default; Result& Result::operator=(Result&&) = default; -LoadStreamTask::LoadStreamTask(LoadType load_type, - const StreamType& stream_type, +LoadStreamTask::LoadStreamTask(const Options& options, FeedStream* stream, base::OnceCallback<void(Result)> done_callback) - : load_type_(load_type), - stream_type_(stream_type), + : options_(options), stream_(stream), done_callback_(std::move(done_callback)) { + DCHECK(options.stream_type.IsValid()) << "A stream type must be chosen"; latencies_ = std::make_unique<LoadLatencyTimes>(); } @@ -80,21 +79,27 @@ // First, ensure we still should load the model. LoadStreamStatus should_not_attempt_reason = - stream_->ShouldAttemptLoad(stream_type_, + stream_->ShouldAttemptLoad(options_.stream_type, /*model_loading=*/true); if (should_not_attempt_reason != LoadStreamStatus::kNoStatus) { return Done(should_not_attempt_reason); } - // Use |kConsistencyTokenOnly| to short-circuit loading from store if we don't + if (options_.abort_if_unread_content && + stream_->HasUnreadContent(options_.stream_type)) { + Done(LoadStreamStatus::kAlreadyHaveUnreadContent); + return; + } + + // Use |kPendingActionsOnly| to short-circuit loading from store if we don't // need the full stream state. auto load_from_store_type = - (load_type_ == LoadType::kInitialLoad) + (options_.load_type == LoadType::kInitialLoad) ? LoadStreamFromStoreTask::LoadType::kFullLoad : LoadStreamFromStoreTask::LoadType::kPendingActionsOnly; load_from_store_task_ = std::make_unique<LoadStreamFromStoreTask>( - load_from_store_type, stream_type_, stream_->GetStore(), - stream_->MissedLastRefresh(stream_type_), + load_from_store_type, stream_, options_.stream_type, stream_->GetStore(), + stream_->MissedLastRefresh(options_.stream_type), base::BindOnce(&LoadStreamTask::LoadFromStoreComplete, GetWeakPtr())); load_from_store_task_->Execute(base::DoNothing()); } @@ -110,25 +115,26 @@ // - If loading from store works, update the model. // - Otherwise, try to load from the network. - if (load_type_ == LoadType::kInitialLoad && + if (options_.load_type == LoadType::kInitialLoad && result.status == LoadStreamStatus::kLoadedFromStore) { update_request_ = std::move(result.update_request); Done(LoadStreamStatus::kLoadedFromStore); return; } - // If data in store is stale, we'll continue with a network request, but keep - // the stale model data in case we fail to load a fresh feed. - if (load_type_ == LoadType::kInitialLoad && + const bool store_is_stale = (result.status == LoadStreamStatus::kDataInStoreStaleMissedLastRefresh || result.status == LoadStreamStatus::kDataInStoreIsStale || - result.status == - LoadStreamStatus::kDataInStoreIsStaleTimestampInFuture)) { + result.status == LoadStreamStatus::kDataInStoreIsStaleTimestampInFuture); + + // If data in store is stale, we'll continue with a network request, but keep + // the stale model data in case we fail to load a fresh feed. + if (options_.load_type == LoadType::kInitialLoad && store_is_stale) { stale_store_state_ = std::move(result.update_request); } LoadStreamStatus final_status = - stream_->ShouldMakeFeedQueryRequest(stream_type_); + stream_->ShouldMakeFeedQueryRequest(options_.stream_type); if (final_status != LoadStreamStatus::kNoStatus) { Done(final_status); return; @@ -143,23 +149,25 @@ void LoadStreamTask::UploadActionsComplete(UploadActionsTask::Result result) { bool force_signed_out_request = - stream_->ShouldForceSignedOutFeedQueryRequest(stream_type_); + stream_->ShouldForceSignedOutFeedQueryRequest(options_.stream_type); upload_actions_result_ = std::make_unique<UploadActionsTask::Result>(std::move(result)); latencies_->StepComplete(LoadLatencyTimes::kUploadActions); feedwire::Request request = CreateFeedQueryRefreshRequest( - stream_type_, GetRequestReason(stream_type_, load_type_), - stream_->GetRequestMetadata(stream_type_, /*is_for_next_page=*/false), + options_.stream_type, + GetRequestReason(options_.stream_type, options_.load_type), + stream_->GetRequestMetadata(options_.stream_type, + /*is_for_next_page=*/false), stream_->GetMetadata().consistency_token()); const std::string gaia = force_signed_out_request ? std::string() : stream_->GetSyncSignedInGaia(); - if (stream_type_.IsForYou() || + if (options_.stream_type.IsForYou() || GetFeedConfig().use_feed_query_requests_for_web_feeds) { if (base::FeatureList::IsEnabled(kDiscoFeedEndpoint)) { - switch (load_type_) { + switch (options_.load_type) { case LoadType::kInitialLoad: stream_->GetNetwork() ->SendApiRequest<QueryInteractiveFeedDiscoverApi>( @@ -180,7 +188,7 @@ base::BindOnce(&LoadStreamTask::QueryRequestComplete, GetWeakPtr())); } } else { - DCHECK(stream_type_.IsWebFeed()); + DCHECK(options_.stream_type.IsWebFeed()); stream_->GetNetwork()->SendApiRequest<WebFeedListContentsDiscoverApi>( std::move(request), gaia, base::BindOnce(&LoadStreamTask::QueryApiRequestComplete, GetWeakPtr())); @@ -204,7 +212,7 @@ NetworkResponseInfo response_info) { latencies_->StepComplete(LoadLatencyTimes::kQueryRequest); - DCHECK(!stream_->GetModel(stream_type_)); + DCHECK(!stream_->GetModel(options_.stream_type)); network_response_info_ = response_info; @@ -230,7 +238,7 @@ response_data.model_update_request->stream_data); stream_->GetStore()->OverwriteStream( - stream_type_, + options_.stream_type, std::make_unique<StreamModelUpdateRequest>( *response_data.model_update_request), base::DoNothing()); @@ -250,7 +258,7 @@ if (response_data.experiments) experiments_ = *response_data.experiments; - if (load_type_ != LoadType::kBackgroundRefresh) { + if (options_.load_type != LoadType::kBackgroundRefresh) { update_request_ = std::move(response_data.model_update_request); } @@ -267,12 +275,12 @@ status = LoadStreamStatus::kLoadedStaleDataFromStoreDueToNetworkFailure; } Result result; - result.stream_type = stream_type_; + result.stream_type = options_.stream_type; result.load_from_store_status = load_from_store_status_; result.stored_content_age = stored_content_age_; result.last_added_time = last_added_time_; result.final_status = status; - result.load_type = load_type_; + result.load_type = options_.load_type; result.update_request = std::move(update_request_); result.request_schedule = std::move(request_schedule_); result.network_response_info = network_response_info_;
diff --git a/components/feed/core/v2/tasks/load_stream_task.h b/components/feed/core/v2/tasks/load_stream_task.h index 2f92d7e..d20393f 100644 --- a/components/feed/core/v2/tasks/load_stream_task.h +++ b/components/feed/core/v2/tasks/load_stream_task.h
@@ -39,6 +39,14 @@ kBackgroundRefresh, }; + struct Options { + // The stream type to load. + StreamType stream_type; + LoadType load_type = LoadType::kInitialLoad; + // Abort the background refresh if there's already unread content. + bool abort_if_unread_content = false; + }; + struct Result { Result(); Result(const StreamType& stream_type, LoadStreamStatus status); @@ -73,8 +81,7 @@ Experiments experiments; }; - LoadStreamTask(LoadType load_type, - const StreamType& stream_type, + LoadStreamTask(const Options& options, FeedStream* stream, base::OnceCallback<void(Result)> done_callback); ~LoadStreamTask() override; @@ -96,8 +103,7 @@ NetworkResponseInfo response_info); void Done(LoadStreamStatus status); - LoadType load_type_; - StreamType stream_type_; + Options options_; FeedStream* stream_; // Unowned. std::unique_ptr<LoadStreamFromStoreTask> load_from_store_task_; std::unique_ptr<StreamModelUpdateRequest> stale_store_state_;
diff --git a/components/feed/core/v2/tasks/prefetch_images_task.cc b/components/feed/core/v2/tasks/prefetch_images_task.cc index fe04332..1511348 100644 --- a/components/feed/core/v2/tasks/prefetch_images_task.cc +++ b/components/feed/core/v2/tasks/prefetch_images_task.cc
@@ -51,7 +51,7 @@ } load_from_store_task_ = std::make_unique<LoadStreamFromStoreTask>( - LoadStreamFromStoreTask::LoadType::kFullLoad, kForYouStream, + LoadStreamFromStoreTask::LoadType::kFullLoad, stream_, kForYouStream, stream_->GetStore(), /*missed_last_refresh=*/false, base::BindOnce(&PrefetchImagesTask::LoadStreamComplete,
diff --git a/components/feed/core/v2/types.h b/components/feed/core/v2/types.h index 4c35a9cb..d5d837e5 100644 --- a/components/feed/core/v2/types.h +++ b/components/feed/core/v2/types.h
@@ -45,6 +45,7 @@ std::string session_id; DisplayMetrics display_metrics; bool notice_card_acknowledged = false; + bool autoplay_enabled = false; }; // Data internal to MetricsReporter which is persisted to Prefs.
diff --git a/components/feed/core/v2/web_feed_subscription_coordinator.cc b/components/feed/core/v2/web_feed_subscription_coordinator.cc index 6ef7a1d9..701f413 100644 --- a/components/feed/core/v2/web_feed_subscription_coordinator.cc +++ b/components/feed/core/v2/web_feed_subscription_coordinator.cc
@@ -17,6 +17,7 @@ #include "components/feed/core/v2/feed_stream.h" #include "components/feed/core/v2/feedstore_util.h" #include "components/feed/core/v2/metrics_reporter.h" +#include "components/feed/core/v2/public/feed_api.h" #include "components/feed/core/v2/public/types.h" #include "components/feed/core/v2/web_feed_subscriptions/subscribe_to_web_feed_task.h" #include "components/feed/feed_feature_list.h" @@ -293,6 +294,7 @@ DequeueInflightChange(); if (result.request_status == WebFeedSubscriptionRequestStatus::kSuccess) { model_->OnSubscribed(result.web_feed_info); + feed_stream_->SetStreamStale(kWebFeedStream, true); } SubscriptionInfo info = model_->GetSubscriptionInfo(result.followed_web_feed_id); @@ -338,6 +340,7 @@ UnsubscribeFromWebFeedTask::Result result) { if (!result.unsubscribed_feed_name.empty()) { model_->OnUnsubscribed(result.unsubscribed_feed_name); + feed_stream_->SetStreamStale(kWebFeedStream, true); } DequeueInflightChange(); UnfollowWebFeedResult callback_result;
diff --git a/components/feedback/content/feedback_uploader_factory.cc b/components/feedback/content/feedback_uploader_factory.cc index 916b7c9..131e70d 100644 --- a/components/feedback/content/feedback_uploader_factory.cc +++ b/components/feedback/content/feedback_uploader_factory.cc
@@ -19,7 +19,7 @@ // be expensive, this is delayed so that it does not happen during startup. scoped_refptr<network::SharedURLLoaderFactory> CreateURLLoaderFactoryForBrowserContext(content::BrowserContext* context) { - return content::BrowserContext::GetDefaultStoragePartition(context) + return context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); }
diff --git a/components/heap_profiling/in_process/heap_profiler_controller.cc b/components/heap_profiling/in_process/heap_profiler_controller.cc index a90461f4..ff252479 100644 --- a/components/heap_profiling/in_process/heap_profiler_controller.cc +++ b/components/heap_profiling/in_process/heap_profiler_controller.cc
@@ -75,6 +75,34 @@ ScheduleNextSnapshot(stopped_, base::TimeDelta::FromMinutes(interval)); } +bool HeapProfilerController::SampleComparator::operator()( + const Sample& lhs, + const Sample& rhs) const { + // We consider two samples to be equal if and only if their stacks are equal. + // Note that equal stack implies equal allocator. It's technically possible + // for two equal stacks to have different thread names, but it's an edge + // condition and marking them as equal will not significantly change analysis. + return lhs.stack < rhs.stack; +} + +// Merges samples that have identical stack traces, excluding total and size. +HeapProfilerController::SampleMap HeapProfilerController::MergeSamples( + const std::vector<Sample>& samples) { + SampleMap results; + for (const Sample& sample : samples) { + size_t count = std::max<size_t>( + static_cast<size_t>( + std::llround(static_cast<double>(sample.total) / sample.size)), + 1); + // Either update the existing entry or construct a new entry [with default + // initializer 0]. + SampleValue& value = results[sample]; + value.total += sample.total; + value.count += count; + } + return results; +} + // static void HeapProfilerController::ScheduleNextSnapshot( scoped_refptr<StoppedFlag> stopped, @@ -116,7 +144,12 @@ metrics::CallStackProfileParams::PERIODIC_HEAP_COLLECTION); metrics::CallStackProfileBuilder profile_builder(params); - for (const base::SamplingHeapProfiler::Sample& sample : samples) { + SampleMap merged_samples = MergeSamples(samples); + + for (auto& pair : merged_samples) { + const Sample& sample = pair.first; + const SampleValue& value = pair.second; + std::vector<base::Frame> frames; frames.reserve(sample.stack.size()); for (const void* frame : sample.stack) { @@ -125,14 +158,10 @@ module_cache.GetModuleForAddress(address); frames.emplace_back(address, module); } - size_t count = std::max<size_t>( - static_cast<size_t>( - std::llround(static_cast<double>(sample.total) / sample.size)), - 1); // Heap "samples" represent allocation stacks aggregated over time so do not // have a meaningful timestamp. profile_builder.OnSampleCompleted(std::move(frames), base::TimeTicks(), - sample.total, count); + value.total, value.count); } profile_builder.OnProfileCompleted(base::TimeDelta(), base::TimeDelta());
diff --git a/components/heap_profiling/in_process/heap_profiler_controller.h b/components/heap_profiling/in_process/heap_profiler_controller.h index a3c96ee7..139f54e4 100644 --- a/components/heap_profiling/in_process/heap_profiler_controller.h +++ b/components/heap_profiling/in_process/heap_profiler_controller.h
@@ -5,8 +5,12 @@ #ifndef COMPONENTS_HEAP_PROFILING_IN_PROCESS_HEAP_PROFILER_CONTROLLER_H_ #define COMPONENTS_HEAP_PROFILING_IN_PROCESS_HEAP_PROFILER_CONTROLLER_H_ +#include <map> +#include <vector> + #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "base/sampling_heap_profiler/sampling_heap_profiler.h" #include "base/synchronization/atomic_flag.h" // HeapProfilerController controls collection of sampled heap allocation @@ -19,6 +23,29 @@ // Starts periodic heap snapshot collection. void Start(); + // Public for testing. + using Sample = base::SamplingHeapProfiler::Sample; + struct SampleComparator { + bool operator()(const Sample& lhs, const Sample& rhs) const; + }; + struct SampleValue { + // Sum of all allocations attributed to this Sample's stack trace. + size_t total = 0; + // Count of all allocations attributed to this Sample's stack trace. + size_t count = 0; + }; + + // The value of the map tracks total size and count of all Samples associated + // with the key's stack trace. + // We use a std::map here since most comparisons will early out in one of the + // first entries in the vector. For reference: the first entry is likely the + // address of the code calling malloc(). Using a hash-based container would + // typically entail hashing the entire contents of the stack trace. + using SampleMap = std::map<Sample, SampleValue, SampleComparator>; + + // Merges samples that have identical stack traces, excluding total and size. + static SampleMap MergeSamples(const std::vector<Sample>& samples); + private: using StoppedFlag = base::RefCountedData<base::AtomicFlag>;
diff --git a/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc b/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc index eb4c10d..f32a4d76 100644 --- a/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc +++ b/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc
@@ -89,3 +89,27 @@ EXPECT_LE(kSnapshotsToCollect, profile_count); } #endif + +TEST_F(HeapProfilerControllerTest, MergeSamples) { + using Sample = base::SamplingHeapProfiler::Sample; + Sample sample1(/*size=*/5, /*total=*/100, /*ordinal=*/1); + sample1.stack = {reinterpret_cast<void*>(0x1), reinterpret_cast<void*>(0x2)}; + Sample sample2(/*size=*/6, /*total=*/102, /*ordinal=*/2); + sample2.stack = {reinterpret_cast<void*>(0x1), reinterpret_cast<void*>(0x3)}; + Sample sample3(/*size=*/7, /*total=*/105, /*ordinal=*/3); + sample3.stack = {reinterpret_cast<void*>(0x1), reinterpret_cast<void*>(0x2)}; + + std::vector<Sample> samples = {sample1, sample2, sample3}; + + HeapProfilerController::SampleMap map = + HeapProfilerController::MergeSamples(samples); + ASSERT_EQ(map.size(), 2u); + auto it = map.find(sample1); + ASSERT_TRUE(it != map.end()); + EXPECT_EQ(it->second.count, 35u); // 100 / 5 + 105 / 7 = 35 + EXPECT_EQ(it->second.total, 205u); + it = map.find(sample2); + ASSERT_TRUE(it != map.end()); + EXPECT_EQ(it->second.count, 17u); // 102 / 6 = 17 + EXPECT_EQ(it->second.total, 102u); +}
diff --git a/components/history/core/browser/in_memory_database.cc b/components/history/core/browser/in_memory_database.cc index 71556d2..dd9f6a9 100644 --- a/components/history/core/browser/in_memory_database.cc +++ b/components/history/core/browser/in_memory_database.cc
@@ -97,7 +97,6 @@ db_.GetLastChangeCount()); // Insert keyword search related URLs. - begin_load = base::TimeTicks::Now(); if (!db_.Execute("INSERT OR IGNORE INTO urls SELECT u.id, u.url, u.title, " "u.visit_count, u.typed_count, u.last_visit_time, u.hidden " "FROM history.urls u JOIN history.keyword_search_terms kst " @@ -109,7 +108,6 @@ db_.GetLastChangeCount()); // Copy search terms to memory. - begin_load = base::TimeTicks::Now(); if (!db_.Execute( "INSERT INTO keyword_search_terms SELECT * FROM " "history.keyword_search_terms")) {
diff --git a/components/installedapp/android/installed_app_verifier.cc b/components/installedapp/android/installed_app_verifier.cc index 61e466f..d1d13d0 100644 --- a/components/installedapp/android/installed_app_verifier.cc +++ b/components/installedapp/android/installed_app_verifier.cc
@@ -45,7 +45,7 @@ auto handler = std::make_unique<digital_asset_links::DigitalAssetLinksHandler>( - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); auto* handler_ptr = handler.get();
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 55ad554..37086384 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
@@ -43,13 +43,13 @@ @Override public void enqueueMessage(PropertyModel messageProperties, WebContents webContents, - @MessageScopeType int scopeType) { + @MessageScopeType int scopeType, boolean highPriority) { MessageStateHandler messageStateHandler = new SingleActionMessage(mMessageContainer, messageProperties, this::dismissMessage, mMessageMaxTranslationSupplier, mAutodismissDurationMs, mAnimatorStartCallback); ScopeKey scopeKey = new ScopeKey(scopeType, webContents); mMessageQueueManager.enqueueMessage( - messageStateHandler, messageProperties, scopeType, scopeKey); + messageStateHandler, messageProperties, scopeKey, highPriority); } @Override
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java index df13286..693a3f0 100644 --- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java +++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java
@@ -59,11 +59,11 @@ * message. Displays the message if there is no other message shown. * @param message The message to enqueue * @param messageKey The key to associate with this message. - * @param scopeType The type of scope. * @param scopeKey The key of a scope instance. + * @param highPriority True if the message should be displayed ASAP. */ - public void enqueueMessage( - MessageStateHandler message, Object messageKey, int scopeType, ScopeKey scopeKey) { + public void enqueueMessage(MessageStateHandler message, Object messageKey, ScopeKey scopeKey, + boolean highPriority) { if (mMessages.containsKey(messageKey)) { throw new IllegalStateException("Message with the given key has already been enqueued"); } @@ -75,7 +75,7 @@ mScopeChangeController.firstMessageEnqueued(scopeKey); } - MessageState messageState = new MessageState(scopeKey, messageKey, message); + MessageState messageState = new MessageState(scopeKey, messageKey, message, highPriority); messageQueue.add(messageState); mMessages.put(messageKey, messageState); @@ -114,12 +114,8 @@ } if (mCurrentDisplayedMessage == messageState) { - mCurrentDisplayedMessage.handler.hide(updateCurrentMessage, () -> { - mMessageQueueDelegate.onFinishHiding(); - mCurrentDisplayedMessage = null; - message.dismiss(dismissReason); - if (updateCurrentMessage) updateCurrentDisplayedMessage(); - }); + hideMessage(updateCurrentMessage, + () -> message.dismiss(dismissReason), updateCurrentMessage); } else { message.dismiss(dismissReason); } @@ -148,8 +144,7 @@ if (messages != null) { while (!messages.isEmpty()) { // message will be removed from messages list. - dismissMessage(messages.get(0).messageKey, - org.chromium.components.messages.DismissReason.SCOPE_DESTROYED); + dismissMessage(messages.get(0).messageKey, DismissReason.SCOPE_DESTROYED); } } } else if (change.changeType == ChangeType.INACTIVE) { @@ -180,15 +175,10 @@ mMessageQueueDelegate.onStartShowing(mCurrentDisplayedMessage.handler::show); } } else if (mCurrentDisplayedMessage != null) { - // Scope state may be removed if it has been destroyed. - boolean isScopeActive = mScopeStates.containsKey(mCurrentDisplayedMessage.scopeKey) - && mScopeStates.get(mCurrentDisplayedMessage.scopeKey); - if (isQueueSuspended() || !isScopeActive) { - mCurrentDisplayedMessage.handler.hide( - !isQueueSuspended() && animateTransition, () -> { - mMessageQueueDelegate.onFinishHiding(); - mCurrentDisplayedMessage = null; - }); + MessageState candidate = getNextMessage(); + // Another higher priority message has been enqueued. + if (candidate != mCurrentDisplayedMessage || isQueueSuspended()) { + hideMessage(!isQueueSuspended() && animateTransition, null, !isQueueSuspended()); } } } @@ -208,6 +198,16 @@ return mMessages; } + private void hideMessage( + boolean animate, Runnable dismissAfterHiding, boolean updateCurrentMessage) { + mCurrentDisplayedMessage.handler.hide(animate, () -> { + mMessageQueueDelegate.onFinishHiding(); + mCurrentDisplayedMessage = null; + if (dismissAfterHiding != null) dismissAfterHiding.run(); + if (updateCurrentMessage) updateCurrentDisplayedMessage(true); + }); + } + /** * Iterate the queues of each scope to get the next messages. If multiple messages meet the * requirements, which can show in the given scope, then the message queued earliest will be @@ -217,10 +217,14 @@ MessageState nextMessage = null; for (List<MessageState> queue : mMessageQueues.values()) { if (queue.isEmpty()) continue; - MessageState candidate = queue.get(0); - Boolean isActive = mScopeStates.get(candidate.scopeKey); + Boolean isActive = mScopeStates.get(queue.get(0).scopeKey); if (isActive == null || !isActive) continue; - if (nextMessage == null || candidate.id < nextMessage.id) nextMessage = candidate; + for (MessageState candidate : queue) { + if (nextMessage == null || (candidate.highPriority && !nextMessage.highPriority) + || candidate.id < nextMessage.id) { + nextMessage = candidate; + } + } } return nextMessage; } @@ -233,11 +237,14 @@ public final ScopeKey scopeKey; public final Object messageKey; public final MessageStateHandler handler; + public final boolean highPriority; - MessageState(ScopeKey scopeKey, Object messageKey, MessageStateHandler handler) { + MessageState(ScopeKey scopeKey, Object messageKey, MessageStateHandler handler, + boolean highPriority) { this.scopeKey = scopeKey; this.messageKey = messageKey; this.handler = handler; + this.highPriority = highPriority; id = sIdNext++; } }
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManagerTest.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManagerTest.java index b6a00730..bf1ea239 100644 --- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManagerTest.java +++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManagerTest.java
@@ -100,13 +100,13 @@ MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); MessageStateHandler m2 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); verify(m1).show(); queueManager.dismissMessage(m1, DismissReason.TIMER); verify(m1).hide(anyBoolean(), any()); verify(m1).dismiss(DismissReason.TIMER); - queueManager.enqueueMessage(m2, m2, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m2, m2, SCOPE_INSTANCE_ID, false); verify(m2).show(); queueManager.dismissMessage(m2, DismissReason.TIMER); verify(m2).hide(anyBoolean(), any()); @@ -125,9 +125,9 @@ MessageStateHandler m2 = Mockito.spy(new EmptyMessageStateHandler()); MessageStateHandler m3 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); - queueManager.enqueueMessage(m2, m2, SCOPE_TYPE, SCOPE_INSTANCE_ID); - queueManager.enqueueMessage(m3, m3, SCOPE_TYPE, SCOPE_INSTANCE_ID_A); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); + queueManager.enqueueMessage(m2, m2, SCOPE_INSTANCE_ID, false); + queueManager.enqueueMessage(m3, m3, SCOPE_INSTANCE_ID_A, false); queueManager.dismissAllMessages(DismissReason.ACTIVITY_DESTROYED); verify(m1).dismiss(DismissReason.ACTIVITY_DESTROYED); @@ -150,8 +150,8 @@ MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); MessageStateHandler m2 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); - queueManager.enqueueMessage(m2, m2, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); + queueManager.enqueueMessage(m2, m2, SCOPE_INSTANCE_ID, false); queueManager.onScopeChange( new MessageScopeChange(SCOPE_TYPE, SCOPE_INSTANCE_ID, ChangeType.ACTIVE)); verify(m1).show(); @@ -175,8 +175,8 @@ MessageStateHandler m1 = Mockito.mock(MessageStateHandler.class); MessageStateHandler m2 = Mockito.mock(MessageStateHandler.class); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); - queueManager.enqueueMessage(m2, m2, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); + queueManager.enqueueMessage(m2, m2, SCOPE_INSTANCE_ID, false); verify(m1).show(); verify(m2, never()).show(); @@ -201,8 +201,8 @@ MessageStateHandler m2 = Mockito.mock(MessageStateHandler.class); Object key = new Object(); - queueManager.enqueueMessage(m1, key, SCOPE_TYPE, SCOPE_INSTANCE_ID); - queueManager.enqueueMessage(m2, key, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, key, SCOPE_INSTANCE_ID, false); + queueManager.enqueueMessage(m2, key, SCOPE_INSTANCE_ID, false); queueManager.onScopeChange( new MessageScopeChange(SCOPE_TYPE, SCOPE_INSTANCE_ID, ChangeType.ACTIVE)); } @@ -216,7 +216,7 @@ MessageQueueManager queueManager = new MessageQueueManager(); queueManager.setDelegate(mEmptyDelegate); MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); queueManager.dismissMessage(m1, DismissReason.TIMER); queueManager.dismissMessage(m1, DismissReason.TIMER); verify(m1, times(1)).dismiss(DismissReason.TIMER); @@ -234,7 +234,7 @@ queueManager.setDelegate(delegate); int token = queueManager.suspend(); MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); verify(delegate, never()).onStartShowing(any()); verify(delegate, never()).onFinishHiding(); verify(m1, never()).show(); @@ -261,7 +261,7 @@ queueManager.setDelegate(delegate); queueManager.suspend(); MessageStateHandler m1 = Mockito.mock(MessageStateHandler.class); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); verify(delegate, never()).onStartShowing(any()); verify(delegate, never()).onFinishHiding(); verify(m1, never()).show(); @@ -289,10 +289,10 @@ final ScopeKey inactiveScopeKey = new ScopeKey(SCOPE_TYPE, new InactiveMockWebContents()); final ScopeKey inactiveScopeKey2 = new ScopeKey(SCOPE_TYPE, new InactiveMockWebContents()); MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, inactiveScopeKey2); + queueManager.enqueueMessage(m1, m1, inactiveScopeKey2, false); MessageStateHandler m2 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m2, m2, SCOPE_TYPE, inactiveScopeKey); + queueManager.enqueueMessage(m2, m2, inactiveScopeKey, false); queueManager.onScopeChange( new MessageScopeChange(SCOPE_TYPE, inactiveScopeKey, ChangeType.ACTIVE)); @@ -340,10 +340,10 @@ new ScopeKey(MessageScopeType.WEB_CONTENTS, new MockWindowAndroidWebContents()); MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, MessageScopeType.NAVIGATION, navScopeKey); + queueManager.enqueueMessage(m1, m1, navScopeKey, false); MessageStateHandler m2 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m2, m2, MessageScopeType.WINDOW, windowScopeKey); + queueManager.enqueueMessage(m2, m2, windowScopeKey, false); verify(m1, description("A message should be shown when the associated scope is active")) .show(); @@ -388,7 +388,7 @@ MessageQueueManager queueManager = new MessageQueueManager(); queueManager.setDelegate(delegate); MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); queueManager.onScopeChange( new MessageScopeChange(SCOPE_TYPE, SCOPE_INSTANCE_ID, ChangeType.INACTIVE, true)); @@ -419,7 +419,7 @@ queueManager.setDelegate(delegate); MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); verify(m1, description("The message should show when its target scope instance is activated.")) .show(); @@ -448,19 +448,19 @@ MessageStateHandler m2 = Mockito.spy(new EmptyMessageStateHandler()); MessageStateHandler m3 = Mockito.spy(new EmptyMessageStateHandler()); - queueManager.enqueueMessage(m1, m1, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); verify(controller, description( "ScopeChangeController should be notified when the queue of scope gets its first message")) .firstMessageEnqueued(SCOPE_INSTANCE_ID); - queueManager.enqueueMessage(m2, m2, SCOPE_TYPE, SCOPE_INSTANCE_ID); + queueManager.enqueueMessage(m2, m2, SCOPE_INSTANCE_ID, false); verify(controller, times(1).description( "ScopeChangeController should be notified **only** when the queue of scope gets its first message")) .firstMessageEnqueued(SCOPE_INSTANCE_ID); - queueManager.enqueueMessage(m3, m3, SCOPE_TYPE, SCOPE_INSTANCE_ID_A); + queueManager.enqueueMessage(m3, m3, SCOPE_INSTANCE_ID_A, false); verify(controller, times(1).description( "ScopeChangeController should be notified **only** when the queue of scope gets its first message")) @@ -491,4 +491,27 @@ "ScopeChangeController should be notified when the queue of scope is empty.")) .lastMessageDismissed(SCOPE_INSTANCE_ID); } + + /** + * Test that the higher priority message is displayed when being enqueued. + */ + @Test + @SmallTest + public void testEnqueueHigherPriorityMessage() { + MessageQueueManager queueManager = new MessageQueueManager(); + queueManager.setDelegate(mEmptyDelegate); + MessageStateHandler m1 = Mockito.spy(new EmptyMessageStateHandler()); + MessageStateHandler m2 = Mockito.spy(new EmptyMessageStateHandler()); + + queueManager.enqueueMessage(m1, m1, SCOPE_INSTANCE_ID, false); + verify(m1).show(); + + queueManager.enqueueMessage(m2, m2, SCOPE_INSTANCE_ID, true); + verify(m1).hide(anyBoolean(), any()); + verify(m2).show(); + queueManager.dismissMessage(m2, DismissReason.TIMER); + verify(m2).hide(anyBoolean(), any()); + verify(m2).dismiss(DismissReason.TIMER); + verify(m1, times(2)).show(); + } }
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java index e13a661..f05f5323 100644 --- a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java +++ b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java
@@ -17,9 +17,10 @@ * @param messageProperties The PropertyModel with message's visual properties. * @param webContents The webContents the message is associated with. * @param scopeType The {@link MessageScopeType} of the message. + * @param highPriority True if the message should be displayed ASAP. */ void enqueueMessage(PropertyModel messageProperties, WebContents webContents, - @MessageScopeType int scopeType); + @MessageScopeType int scopeType, boolean highPriority); /** * Dismisses a message referenced by its PropertyModel. Hides the message if it is currently
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java index 652542b..a35323a 100644 --- a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java +++ b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java
@@ -15,11 +15,12 @@ @JNINamespace("messages") public class MessageDispatcherBridge { @CalledByNative - private static void enqueueMessage( - MessageWrapper message, WebContents webContents, @MessageScopeType int scopeType) { + private static void enqueueMessage(MessageWrapper message, WebContents webContents, + @MessageScopeType int scopeType, boolean highPriority) { MessageDispatcher messageDispatcher = MessageDispatcherProvider.from(webContents.getTopLevelNativeWindow()); - messageDispatcher.enqueueMessage(message.getMessageProperties(), webContents, scopeType); + messageDispatcher.enqueueMessage( + message.getMessageProperties(), webContents, scopeType, highPriority); } @CalledByNative
diff --git a/components/messages/android/message_dispatcher_bridge.cc b/components/messages/android/message_dispatcher_bridge.cc index f19a407..7386ab76 100644 --- a/components/messages/android/message_dispatcher_bridge.cc +++ b/components/messages/android/message_dispatcher_bridge.cc
@@ -40,7 +40,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_MessageDispatcherBridge_enqueueMessage( env, message->GetJavaMessageWrapper(), web_contents->GetJavaWebContents(), - static_cast<int>(scopeType)); + static_cast<int>(scopeType), false); } void MessageDispatcherBridge::DismissMessage(MessageWrapper* message,
diff --git a/components/omnibox/browser/omnibox_view_unittest.cc b/components/omnibox/browser/omnibox_view_unittest.cc index 630420c..65acfb1 100644 --- a/components/omnibox/browser/omnibox_view_unittest.cc +++ b/components/omnibox/browser/omnibox_view_unittest.cc
@@ -128,10 +128,10 @@ {u" \n\t", u" "}, // Broken URL has newlines stripped. - {ASCIIToUTF16("http://www.chromium.org/developers/testing/chromium-\n" - "build-infrastructure/tour-of-the-chromium-buildbot"), - ASCIIToUTF16("http://www.chromium.org/developers/testing/chromium-" - "build-infrastructure/tour-of-the-chromium-buildbot")}, + {u"http://www.chromium.org/developers/testing/chromium-\n" + u"build-infrastructure/tour-of-the-chromium-buildbot", + u"http://www.chromium.org/developers/testing/" + u"chromium-build-infrastructure/tour-of-the-chromium-buildbot"}, // Multi-line address is converted to a single-line address. {u"1600 Amphitheatre Parkway\nMountain View, CA",
diff --git a/components/password_manager/content/browser/password_requirements_service_factory.cc b/components/password_manager/content/browser/password_requirements_service_factory.cc index 72f19450..45f185df 100644 --- a/components/password_manager/content/browser/password_requirements_service_factory.cc +++ b/components/password_manager/content/browser/password_requirements_service_factory.cc
@@ -45,7 +45,7 @@ return nullptr; return CreatePasswordRequirementsService( - content::BrowserContext::GetDefaultStoragePartition(context) + context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()) .release(); }
diff --git a/components/password_manager/core/browser/leak_detection/authenticated_leak_check_unittest.cc b/components/password_manager/core/browser/leak_detection/authenticated_leak_check_unittest.cc index 53e2627..4ee05fe1 100644 --- a/components/password_manager/core/browser/leak_detection/authenticated_leak_check_unittest.cc +++ b/components/password_manager/core/browser/leak_detection/authenticated_leak_check_unittest.cc
@@ -28,13 +28,16 @@ using ::testing::_; using ::testing::ByMove; using ::testing::ElementsAre; +using ::testing::Eq; using ::testing::Field; using ::testing::Return; using ::testing::StrictMock; constexpr char kTestEmail[] = "user@gmail.com"; constexpr char kUsername[] = "USERNAME@gmail.com"; +constexpr char16_t kUsername16[] = u"USERNAME@gmail.com"; constexpr char kPassword[] = "password123"; +constexpr char16_t kPassword16[] = u"password123"; constexpr char kExampleCom[] = "https://example.com"; const int64_t kMockElapsedTime = @@ -104,8 +107,7 @@ identity_env().SetCookieAccounts({{info.email, info.gaia}}); identity_env().SetRefreshTokenForAccount(info.account_id); - leak_check().Start(GURL(kExampleCom), base::ASCIIToUTF16(kUsername), - base::ASCIIToUTF16(kPassword)); + leak_check().Start(GURL(kExampleCom), kUsername16, kPassword16); // Crypto stuff is done here. task_env().RunUntilIdle(); @@ -159,8 +161,7 @@ identity_env().SetRefreshTokenForAccount(info.account_id); const std::string access_token = "access_token"; - leak_check().Start(GURL(kExampleCom), base::ASCIIToUTF16(kUsername), - base::ASCIIToUTF16(kPassword)); + leak_check().Start(GURL(kExampleCom), kUsername16, kPassword16); // Return the access token before the crypto stuff is done. identity_env().WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( access_token, base::Time::Max()); @@ -196,8 +197,7 @@ identity_env().SetCookieAccounts({{info.email, info.gaia}}); identity_env().SetRefreshTokenForAccount(info.account_id); - leak_check().Start(GURL(kExampleCom), base::ASCIIToUTF16(kUsername), - base::ASCIIToUTF16(kPassword)); + leak_check().Start(GURL(kExampleCom), kUsername16, kPassword16); // crypto stuff is done here. task_env().RunUntilIdle(); @@ -235,8 +235,7 @@ identity_env().SetCookieAccounts({{info.email, info.gaia}}); identity_env().SetRefreshTokenForAccount(info.account_id); - leak_check().Start(GURL(kExampleCom), base::ASCIIToUTF16(kUsername), - base::ASCIIToUTF16(kPassword)); + leak_check().Start(GURL(kExampleCom), kUsername16, kPassword16); EXPECT_CALL(delegate(), OnError(LeakDetectionError::kTokenRequestFailure)); identity_env().WaitForAccessTokenRequestIfNecessaryAndRespondWithError( @@ -270,9 +269,9 @@ *ScryptHashUsernameAndPassword("another_username", kPassword), key_server))); - EXPECT_CALL(delegate(), OnLeakDetectionDone(false, GURL(kExampleCom), - base::ASCIIToUTF16(kUsername), - base::ASCIIToUTF16(kPassword))); + EXPECT_CALL(delegate(), + OnLeakDetectionDone(false, GURL(kExampleCom), Eq(kUsername16), + Eq(kPassword16))); std::move(payload_and_callback.callback) .Run(std::move(response), base::nullopt); task_env().RunUntilIdle(); @@ -303,9 +302,9 @@ *ScryptHashUsernameAndPassword("another_username", kPassword), key_server))); - EXPECT_CALL(delegate(), OnLeakDetectionDone(false, GURL(kExampleCom), - base::ASCIIToUTF16(kUsername), - base::ASCIIToUTF16(kPassword))); + EXPECT_CALL(delegate(), + OnLeakDetectionDone(false, GURL(kExampleCom), Eq(kUsername16), + Eq(kPassword16))); std::move(payload_and_callback.callback) .Run(std::move(response), base::nullopt); task_env().RunUntilIdle(); @@ -343,9 +342,9 @@ *ScryptHashUsernameAndPassword(canonicalized_username, kPassword), key_server))); - EXPECT_CALL(delegate(), OnLeakDetectionDone(true, GURL(kExampleCom), - base::ASCIIToUTF16(kUsername), - base::ASCIIToUTF16(kPassword))); + EXPECT_CALL(delegate(), + OnLeakDetectionDone(true, GURL(kExampleCom), Eq(kUsername16), + Eq(kPassword16))); std::move(payload_and_callback.callback) .Run(std::move(response), base::nullopt); task_env().RunUntilIdle();
diff --git a/components/password_manager/core/browser/password_form.cc b/components/password_manager/core/browser/password_form.cc index 29ac5b1..97311ff0 100644 --- a/components/password_manager/core/browser/password_form.cc +++ b/components/password_manager/core/browser/password_form.cc
@@ -202,7 +202,11 @@ } bool PasswordForm::IsUsingAccountStore() const { - return in_store == Store::kAccountStore; + return (in_store & Store::kAccountStore) != Store::kNotSet; +} + +bool PasswordForm::IsUsingProfileStore() const { + return (in_store & Store::kProfileStore) != Store::kNotSet; } bool PasswordForm::HasNonEmptyPasswordValue() const {
diff --git a/components/password_manager/core/browser/password_form.h b/components/password_manager/core/browser/password_form.h index f1aec6b..12a196e 100644 --- a/components/password_manager/core/browser/password_form.h +++ b/components/password_manager/core/browser/password_form.h
@@ -317,11 +317,15 @@ // Default value. kNotSet = 0, // Credential came from the profile (i.e. local) storage. - kProfileStore = 1, + kProfileStore = 1 << 0, // Credential came from the Gaia-account-scoped storage. - kAccountStore = 2, + kAccountStore = 1 << 1, kMaxValue = kAccountStore }; + // Please use IsUsingAccountStore and IsUsingProfileStore to check in which + // store the form is present. + // TODO(crbug.com/1201643): Rename to in_stores to reflect possibility of + // password presence in both stores. Store in_store = Store::kNotSet; // Vector of hashes of the gaia id for users who prefer not to move this @@ -354,10 +358,12 @@ // not set. bool IsSingleUsername() const; - // Returns whether this form is stored in the account-scoped store, i.e. - // whether |in_store == Store::kAccountStore|. + // Returns whether this form is stored in the account-scoped store. bool IsUsingAccountStore() const; + // Returns whether this form is stored in the profile-scoped store. + bool IsUsingProfileStore() const; + // Returns true when |password_value| or |new_password_value| are non-empty. bool HasNonEmptyPasswordValue() const; @@ -387,6 +393,18 @@ std::ostream& operator<<(std::ostream& os, PasswordForm* form); #endif +constexpr PasswordForm::Store operator&(PasswordForm::Store lhs, + PasswordForm::Store rhs) { + return static_cast<PasswordForm::Store>(static_cast<int>(lhs) & + static_cast<int>(rhs)); +} + +constexpr PasswordForm::Store operator|(PasswordForm::Store lhs, + PasswordForm::Store rhs) { + return static_cast<PasswordForm::Store>(static_cast<int>(lhs) | + static_cast<int>(rhs)); +} + } // namespace password_manager #endif // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_FORM_H_
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc index 493ef8f..295e27c 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
@@ -19,6 +19,7 @@ namespace { using password_manager::metrics_util::IsPasswordChanged; using password_manager::metrics_util::IsUsernameChanged; +using Store = password_manager::PasswordForm::Store; using SavedPasswordsView = password_manager::SavedPasswordsPresenter::SavedPasswordsView; @@ -39,6 +40,13 @@ return base::ranges::any_of(all_forms, has_conflicting_username); } +// Returns trues if there is at least one password store that contains both +// passwords. +constexpr bool ShareSameStore(const password_manager::PasswordForm& lhs, + const password_manager::PasswordForm& rhs) { + return (lhs.in_store & rhs.in_store) != Store::kNotSet; +} + } // namespace namespace password_manager { @@ -67,14 +75,19 @@ } void SavedPasswordsPresenter::RemovePassword(const PasswordForm& form) { - std::string current_form_key = CreateSortKey(form); - for (const auto& saved_form : passwords_) { - if (CreateSortKey(saved_form) == current_form_key) { - PasswordStore& store = - saved_form.IsUsingAccountStore() ? *account_store_ : *profile_store_; - store.RemoveLogin(saved_form); + std::string current_form_key = CreateSortKey(form, IgnoreStore(true)); + const auto range = sort_key_to_password_forms.equal_range(current_form_key); + + std::for_each(range.first, range.second, [&](const auto& pair) { + const auto& current_form = pair.second; + // Make sure |form| and |current_form| share the same store. + if (ShareSameStore(form, current_form)) { + // |current_form| is unchanged result obtained from + // 'OnGetPasswordStoreResultsFrom'. So it can be present only in one store + // at a time.. + GetStoreFor(current_form).RemoveLogin(current_form); } - } + }); } bool SavedPasswordsPresenter::EditPassword(const PasswordForm& form, @@ -98,15 +111,16 @@ const PasswordForm& form, const std::u16string& new_username, const std::u16string& new_password) { - // TODO(crbug.com/1184691): Adapt this code to support credentials - // coming from both account and profile store, then change desktop - // settings and maybe iOS to use this presenter for updating the duplicates. + // TODO(crbug.com/1184691): Change desktop settings and maybe iOS to use this + // presenter for updating the duplicates. std::vector<PasswordForm> forms_to_change; - std::string current_form_key = CreateSortKey(form); - for (const auto& saved_form : passwords_) { - if (CreateSortKey(saved_form) == current_form_key) - forms_to_change.push_back(saved_form); - } + + std::string current_form_key = CreateSortKey(form, IgnoreStore(true)); + const auto range = sort_key_to_password_forms.equal_range(current_form_key); + + base::ranges::transform(range.first, range.second, + std::back_inserter(forms_to_change), + [](const auto& pair) { return pair.second; }); return EditSavedPasswords(forms_to_change, new_username, new_password); } @@ -128,9 +142,7 @@ // class. if (username_changed || password_changed) { for (const auto& old_form : forms) { - PasswordStore& store = - old_form.IsUsingAccountStore() ? *account_store_ : *profile_store_; - + PasswordStore& store = GetStoreFor(old_form); PasswordForm new_form = old_form; new_form.username_value = new_username; new_form.password_value = new_password; @@ -156,6 +168,25 @@ return passwords_; } +std::vector<PasswordForm> SavedPasswordsPresenter::GetUniquePasswords() const { + std::vector<PasswordForm> forms; + + auto it = sort_key_to_password_forms.begin(); + std::string current_key; + + while (it != sort_key_to_password_forms.end()) { + if (current_key != it->first) { + current_key = it->first; + forms.push_back(it->second); + } else { + forms.back().in_store = forms.back().in_store | it->second.in_store; + } + ++it; + } + + return forms; +} + std::vector<std::u16string> SavedPasswordsPresenter::GetUsernamesForRealm( const std::string& signon_realm, bool is_using_account_store) { @@ -242,7 +273,19 @@ base::ranges::transform(results, std::back_inserter(passwords_), [](auto& result) { return std::move(*result); }); } + + sort_key_to_password_forms.clear(); + base::ranges::for_each(passwords_, [&](const auto& result) { + sort_key_to_password_forms.insert( + std::make_pair(CreateSortKey(result, IgnoreStore(true)), result)); + }); + NotifySavedPasswordsChanged(); } +PasswordStore& SavedPasswordsPresenter::GetStoreFor(const PasswordForm& form) { + DCHECK_NE(form.IsUsingAccountStore(), form.IsUsingProfileStore()); + return form.IsUsingAccountStore() ? *account_store_ : *profile_store_; +} + } // namespace password_manager
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.h b/components/password_manager/core/browser/ui/saved_passwords_presenter.h index 63fd415..b366b8a5 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter.h +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.h
@@ -77,8 +77,7 @@ // Modifies the provided password form and its duplicates // with `new_username` and `new_password`. // - // Note: this will only change credentials in the store that `form` comes - // from. + // Note: this will also change duplicates of 'form' in all stores. bool EditSavedPasswords(const PasswordForm& form, const std::u16string& new_username, const std::u16string& new_password); @@ -93,6 +92,13 @@ // Returns a list of the currently saved credentials. SavedPasswordsView GetSavedPasswords() const; + // Returns a list of unique credentials. If a same password is present both on + // account and profile stores it will be represented as a single entity. + // Uniqueness is determined using site name, username, password. For Android + // credentials package name is also taken into account and for Federated + // credentials federation origin. + std::vector<PasswordForm> GetUniquePasswords() const; + // Returns all the usernames for credentials saved for `signon_realm`. If // `is_using_account_store` is true, this method will only consider // credentials saved in the account store. Otherwiser it will only consider @@ -106,6 +112,7 @@ void RemoveObserver(Observer* observer); private: + using DuplicatePasswordsMap = std::multimap<std::string, PasswordForm>; // PasswordStore::Observer void OnLoginsChanged(const PasswordStoreChangeList& changes) override; void OnLoginsChangedIn(PasswordStore* store, @@ -122,6 +129,11 @@ void NotifyEdited(const PasswordForm& password); void NotifySavedPasswordsChanged(); + // Returns the `profile_store_` or `account_store_` if `form` is stored in the + // profile store or the account store accordingly. This function should be + // used only for credential stored in a single store. + PasswordStore& GetStoreFor(const PasswordForm& form); + // The password stores containing the saved passwords. scoped_refptr<PasswordStore> profile_store_; scoped_refptr<PasswordStore> account_store_; @@ -130,6 +142,9 @@ // passwords are always stored first, and then account store passwords if any. std::vector<PasswordForm> passwords_; + // Structure used to deduplicate list of passwords. + DuplicatePasswordsMap sort_key_to_password_forms; + base::ObserverList<Observer, /*check_empty=*/true> observers_; };
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc index 3552cce..52fd275 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
@@ -580,6 +580,46 @@ EXPECT_TRUE(account_store().IsEmpty()); } +TEST_F(SavedPasswordsPresenterWithTwoStoresTest, DeleteCredentialBothStores) { + PasswordForm profile_store_form; + profile_store_form.signon_realm = "https://example.com"; + profile_store_form.username_value = u"example@gmail.com"; + profile_store_form.password_value = u"password"; + profile_store_form.in_store = PasswordForm::Store::kProfileStore; + + PasswordForm account_store_form = profile_store_form; + account_store_form.in_store = PasswordForm::Store::kAccountStore; + + PasswordForm mobile_account_store_form = account_store_form; + mobile_account_store_form.signon_realm = "https://mobile.example.com"; + + profile_store().AddLogin(profile_store_form); + account_store().AddLogin(account_store_form); + account_store().AddLogin(mobile_account_store_form); + RunUntilIdle(); + + ASSERT_THAT(profile_store().stored_passwords(), + ElementsAre(Pair(profile_store_form.signon_realm, + ElementsAre(profile_store_form)))); + ASSERT_THAT(account_store().stored_passwords(), + ElementsAre(Pair(account_store_form.signon_realm, + ElementsAre(account_store_form)), + Pair(mobile_account_store_form.signon_realm, + ElementsAre(mobile_account_store_form)))); + + PasswordForm form_to_delete = profile_store_form; + form_to_delete.in_store = + PasswordForm::Store::kProfileStore | PasswordForm::Store::kAccountStore; + + presenter().RemovePassword(form_to_delete); + RunUntilIdle(); + + // All credentials which are considered duplicates of a 'form_to_delete' + // should have been deleted from both stores. + EXPECT_TRUE(profile_store().IsEmpty()); + EXPECT_TRUE(account_store().IsEmpty()); +} + TEST_F(SavedPasswordsPresenterWithTwoStoresTest, ReturnsUsernamesForRealmFromSameStore) { PasswordForm form; @@ -621,4 +661,110 @@ ElementsAre(account_store_form.username_value)); } +TEST_F(SavedPasswordsPresenterWithTwoStoresTest, GetUniquePasswords) { + PasswordForm profile_store_form; + profile_store_form.signon_realm = "https://example.com"; + profile_store_form.username_value = u"example@gmail.com"; + profile_store_form.password_value = u"password"; + profile_store_form.in_store = PasswordForm::Store::kProfileStore; + + PasswordForm account_store_form = profile_store_form; + account_store_form.in_store = PasswordForm::Store::kAccountStore; + + profile_store().AddLogin(profile_store_form); + account_store().AddLogin(account_store_form); + RunUntilIdle(); + + ASSERT_THAT(profile_store().stored_passwords(), + ElementsAre(Pair(profile_store_form.signon_realm, + ElementsAre(profile_store_form)))); + ASSERT_THAT(account_store().stored_passwords(), + ElementsAre(Pair(account_store_form.signon_realm, + ElementsAre(account_store_form)))); + + PasswordForm expected_form = profile_store_form; + expected_form.in_store = + PasswordForm::Store::kProfileStore | PasswordForm::Store::kAccountStore; + + EXPECT_THAT(presenter().GetUniquePasswords(), ElementsAre(expected_form)); +} + +// Prefixes like [m, mobile, www] are considered as "same-site". +TEST_F(SavedPasswordsPresenterWithTwoStoresTest, GetUniquePasswords2) { + PasswordForm profile_store_form; + profile_store_form.signon_realm = "https://example.com"; + profile_store_form.username_value = u"example@gmail.com"; + profile_store_form.password_value = u"password"; + profile_store_form.in_store = PasswordForm::Store::kProfileStore; + + PasswordForm mobile_profile_store_form = profile_store_form; + mobile_profile_store_form.signon_realm = "https://m.example.com"; + + PasswordForm account_form_with_www = profile_store_form; + account_form_with_www.signon_realm = "https://www.example.com"; + account_form_with_www.in_store = PasswordForm::Store::kAccountStore; + + profile_store().AddLogin(mobile_profile_store_form); + profile_store().AddLogin(profile_store_form); + account_store().AddLogin(account_form_with_www); + + RunUntilIdle(); + + ASSERT_THAT( + profile_store().stored_passwords(), + UnorderedElementsAre(Pair(profile_store_form.signon_realm, + ElementsAre(profile_store_form)), + Pair(mobile_profile_store_form.signon_realm, + ElementsAre(mobile_profile_store_form)))); + ASSERT_THAT(account_store().stored_passwords(), + ElementsAre(Pair(account_form_with_www.signon_realm, + ElementsAre(account_form_with_www)))); + + PasswordForm expected_form = profile_store_form; + expected_form.in_store = + PasswordForm::Store::kProfileStore | PasswordForm::Store::kAccountStore; + + EXPECT_THAT(presenter().GetUniquePasswords(), ElementsAre(expected_form)); +} + +TEST_F(SavedPasswordsPresenterWithTwoStoresTest, EditPasswordBothStores) { + PasswordForm profile_store_form; + profile_store_form.username_value = u"test@gmail.com"; + profile_store_form.password_value = u"pass"; + profile_store_form.in_store = PasswordForm::Store::kProfileStore; + + PasswordForm account_store_form = profile_store_form; + account_store_form.in_store = PasswordForm::Store::kAccountStore; + + profile_store().AddLogin(profile_store_form); + account_store().AddLogin(account_store_form); + RunUntilIdle(); + + EXPECT_THAT(profile_store().stored_passwords(), + ElementsAre(Pair(profile_store_form.signon_realm, + ElementsAre(profile_store_form)))); + + std::u16string new_username = u"new_test@gmail.com"; + std::u16string new_password = u"new_password"; + + EXPECT_TRUE(presenter().EditSavedPasswords(profile_store_form, new_username, + new_password)); + + RunUntilIdle(); + + PasswordForm expected_profile_store_form = profile_store_form; + expected_profile_store_form.username_value = new_username; + expected_profile_store_form.password_value = new_password; + expected_profile_store_form.in_store = PasswordForm::Store::kProfileStore; + PasswordForm expected_account_store_form = expected_profile_store_form; + expected_account_store_form.in_store = PasswordForm::Store::kAccountStore; + + EXPECT_THAT(profile_store().stored_passwords(), + ElementsAre(Pair(profile_store_form.signon_realm, + ElementsAre(expected_profile_store_form)))); + EXPECT_THAT(account_store().stored_passwords(), + ElementsAre(Pair(account_store_form.signon_realm, + ElementsAre(expected_account_store_form)))); +} + } // namespace password_manager
diff --git a/components/password_manager/core/browser/ui/weak_check_utility_unittest.cc b/components/password_manager/core/browser/ui/weak_check_utility_unittest.cc index c006f42f..62664960 100644 --- a/components/password_manager/core/browser/ui/weak_check_utility_unittest.cc +++ b/components/password_manager/core/browser/ui/weak_check_utility_unittest.cc
@@ -12,44 +12,40 @@ namespace { -constexpr char kWeakShortPassword[] = "123456"; -constexpr char kWeakLongPassword[] = - "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcda"; -constexpr char kStrongShortPassword[] = "fnlsr4@cm^mdls@fkspnsg3d"; -constexpr char kStrongLongPassword[] = - "pmsFlsnoab4nsl#losb@skpfnsbkjb^klsnbs!cns"; +constexpr char16_t kWeakShortPassword[] = u"123456"; +constexpr char16_t kWeakLongPassword[] = + u"abcdabcdabcdabcdabcdabcdabcdabcdabcdabcda"; +constexpr char16_t kStrongShortPassword[] = u"fnlsr4@cm^mdls@fkspnsg3d"; +constexpr char16_t kStrongLongPassword[] = + u"pmsFlsnoab4nsl#losb@skpfnsbkjb^klsnbs!cns"; using ::testing::ElementsAre; } // namespace TEST(WeakCheckUtilityTest, IsWeak) { - EXPECT_TRUE(IsWeak(base::ASCIIToUTF16(kWeakShortPassword))); - EXPECT_TRUE(IsWeak(base::ASCIIToUTF16(kWeakLongPassword))); - EXPECT_FALSE(IsWeak(base::ASCIIToUTF16(kStrongShortPassword))); - EXPECT_FALSE(IsWeak(base::ASCIIToUTF16(kStrongLongPassword))); + EXPECT_TRUE(IsWeak(kWeakShortPassword)); + EXPECT_TRUE(IsWeak(kWeakLongPassword)); + EXPECT_FALSE(IsWeak(kStrongShortPassword)); + EXPECT_FALSE(IsWeak(kStrongLongPassword)); } TEST(WeakCheckUtilityTest, WeakPasswordsNotFound) { - base::flat_set<std::u16string> passwords = { - base::ASCIIToUTF16(kStrongShortPassword), - base::ASCIIToUTF16(kStrongLongPassword)}; + base::flat_set<std::u16string> passwords = {kStrongShortPassword, + kStrongLongPassword}; EXPECT_THAT(BulkWeakCheck(passwords), testing::IsEmpty()); } TEST(WeakCheckUtilityTest, DetectedShortAndLongWeakPasswords) { base::flat_set<std::u16string> passwords = { - base::ASCIIToUTF16(kStrongLongPassword), - base::ASCIIToUTF16(kWeakShortPassword), - base::ASCIIToUTF16(kStrongShortPassword), - base::ASCIIToUTF16(kWeakLongPassword)}; + kStrongLongPassword, kWeakShortPassword, kStrongShortPassword, + kWeakLongPassword}; base::flat_set<std::u16string> weak_passwords = BulkWeakCheck(passwords); EXPECT_THAT(weak_passwords, - ElementsAre(base::ASCIIToUTF16(kWeakShortPassword), - base::ASCIIToUTF16(kWeakLongPassword))); + ElementsAre(kWeakShortPassword, kWeakLongPassword)); } } // namespace password_manager
diff --git a/components/payments/content/android/payment_manifest_downloader_android.cc b/components/payments/content/android/payment_manifest_downloader_android.cc index de19bd3..73517cd 100644 --- a/components/payments/content/android/payment_manifest_downloader_android.cc +++ b/components/payments/content/android/payment_manifest_downloader_android.cc
@@ -123,8 +123,8 @@ return reinterpret_cast<jlong>(new PaymentManifestDownloaderAndroid( std::make_unique<DeveloperConsoleLogger>(web_contents), - content::BrowserContext::GetDefaultStoragePartition( - web_contents->GetBrowserContext()) + web_contents->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess())); }
diff --git a/components/payments/content/payment_handler_host.cc b/components/payments/content/payment_handler_host.cc index 2d98f73..9bc3cc6 100644 --- a/components/payments/content/payment_handler_host.cc +++ b/components/payments/content/payment_handler_host.cc
@@ -29,9 +29,9 @@ if (!web_contents) return nullptr; - auto* storage_partition = content::BrowserContext::GetStoragePartitionForUrl( - web_contents->GetBrowserContext(), sw_origin.GetURL(), - /*can_create=*/true); + auto* storage_partition = + web_contents->GetBrowserContext()->GetStoragePartitionForUrl( + sw_origin.GetURL(), /*can_create=*/true); if (!storage_partition) return nullptr;
diff --git a/components/payments/content/service_worker_payment_app_finder.cc b/components/payments/content/service_worker_payment_app_finder.cc index 53a0cf5..ff439183 100644 --- a/components/payments/content/service_worker_payment_app_finder.cc +++ b/components/payments/content/service_worker_payment_app_finder.cc
@@ -437,8 +437,8 @@ } else { downloader = std::make_unique<payments::PaymentManifestDownloader>( std::make_unique<DeveloperConsoleLogger>(web_contents), - content::BrowserContext::GetDefaultStoragePartition( - rfh->GetBrowserContext()) + rfh->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/components/performance_manager/performance_manager_registry_impl.cc b/components/performance_manager/performance_manager_registry_impl.cc index dd3c4c5..9f797a1 100644 --- a/components/performance_manager/performance_manager_registry_impl.cc +++ b/components/performance_manager/performance_manager_registry_impl.cc
@@ -154,7 +154,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); content::StoragePartition* storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); // Create an adapter for the service worker context. auto insertion_result = service_worker_context_adapters_.emplace(
diff --git a/components/policy/content/safe_search_service.cc b/components/policy/content/safe_search_service.cc index bbb1f9f..dcd0a82 100644 --- a/components/policy/content/safe_search_service.cc +++ b/components/policy/content/safe_search_service.cc
@@ -64,8 +64,7 @@ safe_search_url_checker_ = std::make_unique<safe_search_api::URLChecker>( std::make_unique<safe_search_api::SafeSearchURLCheckerClient>( - content::BrowserContext::GetDefaultStoragePartition( - browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), traffic_annotation)); }
diff --git a/components/policy/core/common/policy_pref_names.cc b/components/policy/core/common/policy_pref_names.cc index 39ed4868..e6ee3a3 100644 --- a/components/policy/core/common/policy_pref_names.cc +++ b/components/policy/core/common/policy_pref_names.cc
@@ -43,6 +43,9 @@ // machine policy. const char kCloudPolicyOverridesPlatformPolicy[] = "policy.cloud_override"; +// Boolean policy preference to enable reporting of data leak prevention events. +const char kDlpReportingEnabled[] = "policy.dlp_reporting_enabled"; + // A list of Data leak prevention rules. const char kDlpRulesList[] = "policy.dlp_rules_list";
diff --git a/components/policy/core/common/policy_pref_names.h b/components/policy/core/common/policy_pref_names.h index 611f185b..99a4e666 100644 --- a/components/policy/core/common/policy_pref_names.h +++ b/components/policy/core/common/policy_pref_names.h
@@ -13,6 +13,7 @@ POLICY_EXPORT extern const char kCloudManagementEnrollmentMandatory[]; POLICY_EXPORT extern const char kCloudPolicyOverridesPlatformPolicy[]; +POLICY_EXPORT extern const char kDlpReportingEnabled[]; POLICY_EXPORT extern const char kDlpRulesList[]; POLICY_EXPORT extern const char kLastPolicyStatisticsUpdate[]; POLICY_EXPORT extern const char kNativeWindowOcclusionEnabled[];
diff --git a/components/policy/core/common/preg_parser_unittest.cc b/components/policy/core/common/preg_parser_unittest.cc index bda0b536..f950a5f8 100644 --- a/components/policy/core/common/preg_parser_unittest.cc +++ b/components/policy/core/common/preg_parser_unittest.cc
@@ -28,7 +28,7 @@ const char kInvalidEncodingRegistryPolFile[] = "invalid_encoding/registry.pol"; const char kNonExistingRegistryPolFile[] = "does_not_exist.pol"; -const char kRegistryKey[] = "SOFTWARE\\Policies\\Chromium"; +const char16_t kRegistryKey[] = u"SOFTWARE\\Policies\\Chromium"; // Check whether two RegistryDicts equal each other. testing::AssertionResult RegistryDictEquals(const RegistryDict& a, @@ -117,8 +117,7 @@ // Run the parser. base::FilePath test_file(test_data_dir_.AppendASCII(kRegistryPolFile)); PolicyLoadStatusUmaReporter status; - ASSERT_TRUE(preg_parser::ReadFile(test_file, base::ASCIIToUTF16(kRegistryKey), - &dict, &status)); + ASSERT_TRUE(preg_parser::ReadFile(test_file, kRegistryKey, &dict, &status)); // Build the expected output dictionary. RegistryDict expected; @@ -154,8 +153,7 @@ // Safety check with kRegistryKey (dict should not be empty). RegistryDict dict2; - ASSERT_TRUE(preg_parser::ReadFile(test_file, base::ASCIIToUTF16(kRegistryKey), - &dict2, &status)); + ASSERT_TRUE(preg_parser::ReadFile(test_file, kRegistryKey, &dict2, &status)); EXPECT_FALSE(RegistryDictEquals(dict2, empty)); } @@ -165,8 +163,7 @@ test_data_dir_.AppendASCII(kInvalidEncodingRegistryPolFile)); PolicyLoadStatusUmaReporter status; RegistryDict dict; - ASSERT_TRUE(preg_parser::ReadFile(test_file, base::ASCIIToUTF16(kRegistryKey), - &dict, &status)); + ASSERT_TRUE(preg_parser::ReadFile(test_file, kRegistryKey, &dict, &status)); RegistryDict empty; EXPECT_TRUE(RegistryDictEquals(dict, empty)); @@ -178,8 +175,7 @@ RegistryDict dict; base::FilePath test_file( test_data_dir_.AppendASCII(kNonExistingRegistryPolFile)); - ASSERT_FALSE(preg_parser::ReadFile( - test_file, base::ASCIIToUTF16(kRegistryKey), &dict, &status)); + ASSERT_FALSE(preg_parser::ReadFile(test_file, kRegistryKey, &dict, &status)); PolicyLoadStatusSampler::StatusSet expected_status_set; expected_status_set[POLICY_LOAD_STATUS_STARTED] = true;
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 9fda360..9198afc 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -24451,6 +24451,38 @@ Setting this policy to Disabled or leaving it unset will result in privet printers not appearing in print preview, as this printing method is deprecated.''', }, { + 'name': 'DataLeakPreventionReportingEnabled', + 'owners': ['file://chrome/browser/chromeos/policy/dlp/OWNERS', 'jkopanski@google.com'], + 'type': 'main', + 'schema': { 'type': 'boolean' }, + 'supported_on': ['chrome_os:92-'], + 'features': { + 'can_be_recommended': False, + # TODO(crbug.com/1203390): Enable dynamic refresh + 'dynamic_refresh': False, + 'per_profile': False, + }, + 'items': [ + { + 'value': True, + 'caption': 'Enable reporting of data leak prevention events', + }, + { + 'value': False, + 'caption': 'Disable reporting of data leak prevention events', + }, + ], + 'example_value': True, + 'default': False, + 'id': 856, + 'caption': '''Enable data leak prevention reporting''', + 'tags': [], + 'desc': '''This policy is a general switch for all rules defined in the DataLeakPreventionRulesList policy. + Setting this policy to True will switch on real-time reporting of data leak prevention events. + Setting this policy to False or leaving it unset will switch off the reporting. + Rules defined with ALLOW level restrictions in DataLeakPreventionRulesList will not report events in both cases.''' + }, + { 'name': 'DataLeakPreventionRulesList', 'owners': ['file://chrome/browser/chromeos/policy/dlp/OWNERS', 'ayaelattar@chromium.org'], 'type': 'dict', @@ -26680,6 +26712,6 @@ 'placeholders': [], 'deleted_policy_ids': [114, 115, 204, 205, 206, 412, 476, 544, 546, 562, 569, 578, 583, 585, 586, 587, 588, 589, 590, 591, 600, 668, 669], 'deleted_atomic_policy_group_ids': [19], - 'highest_id_currently_used': 855, + 'highest_id_currently_used': 856, 'highest_atomic_group_id_currently_used': 40 }
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index 279331e..1109d2282 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -949,7 +949,7 @@ Diese Richtlinie sollte nicht für Geräte verwendet werden, die öffentlich zugänglich sind. Wenn die Richtlinie auf "True" gesetzt oder nicht konfiguriert ist, bleibt die Datenschutzwarnung in der automatisch gestarteten verwalteten Gastsitzung angepinnt, bis der Nutzer sie schließt.</translation> -<translation id="2281878365805647176">Wenn die Richtlinie konfiguriert ist, sind die eingeschränkten Anmeldefunktionen von Chrome in <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> aktiviert und es wird verhindert, dass Nutzer diese Einstellung ändern. Nutzer können nur über Konten der angegebenen Domains auf Tools von Google zugreifen. Möchten Sie gmail.com- oder googlemail.com-Konten zulassen, müssen Sie der Domainliste „consumer_accounts“ (ohne Anführungszeichen) hinzufügen. Diese Einstellung verhindert, dass Nutzer sich auf einem verwalteten Gerät, für das eine Authentifizierung durch Google notwendig ist, anmelden und ein zweites Konto hinzufügen können, wenn dieses Konto nicht zu einer der Domains in der Zulassungsliste gehört. +<translation id="2281878365805647176">Wenn die Richtlinie konfiguriert ist, sind in <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> die eingeschränkten Anmeldefunktionen von Chrome aktiviert und es wird verhindert, dass Nutzer diese Einstellung ändern. Nutzer können nur über Konten der angegebenen Domains auf Tools von Google zugreifen. Möchten Sie gmail.com- oder googlemail.com-Konten zulassen, müssen Sie der Domainliste „consumer_accounts“ (ohne Anführungszeichen) hinzufügen. Diese Einstellung verhindert, dass Nutzer sich auf einem verwalteten Gerät, für das eine Authentifizierung durch Google notwendig ist, anmelden und ein zweites Konto hinzufügen können, wenn dieses Konto nicht zu einer der Domains in der Zulassungsliste gehört. Wenn Sie diese Einstellung leer lassen oder nicht konfigurieren, können Nutzer über beliebige Konten auf <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> zugreifen. @@ -1020,7 +1020,7 @@ Wenn Sie die Richtlinie auf "False" setzen oder nicht konfigurieren, führt die Tastatur standardmäßig Medientastenbefehle aus. Bei gedrückter Suchtaste führt die Tastatur Funktionstastenbefehle aus.</translation> <translation id="2358176879566587521">Diese Richtlinie wurde entfernt. Sie ist mit dieser Version von <ph name="PRODUCT_NAME" /> nicht kompatibel. Weitere Informationen dazu finden Sie unter https://support.google.com/chrome/a/answer/7643500.</translation> -<translation id="2362469626417133796">Zeitfenster für den Neustart</translation> +<translation id="2362469626417133796">Zeitfenster für Neustart</translation> <translation id="2364639863953745682">Modus für die Assistant-Einrichtung</translation> <translation id="2384233438419344179">Wenn diese Richtlinie aktiviert ist, können Websiteelemente, die nicht von der Domain in der Adressleiste des Browsers stammen, keine Cookies setzen. Wenn die Richtlinie deaktiviert ist, können diese Elemente Cookies setzen und Nutzer können diese Einstellung nicht ändern. @@ -1241,7 +1241,7 @@ Wenn die Richtlinie nicht konfiguriert ist, wird <ph name="PRINTERS_ALLOW_ALL" /> verwendet.</translation> <translation id="2586117300379904732">Wakelocks für die Energieverwaltung zulassen</translation> -<translation id="2586231026319371211">Die Zeit wird im lokalen 24-Stunden-Format angegeben.</translation> +<translation id="2586231026319371211">Die Zeit wird in der jeweiligen Ortszeit im 24-Stunden-Format angegeben.</translation> <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> als Standardbrowser festlegen</translation> <translation id="2588252329503406673">Mit dieser Richtlinie konfigurieren Sie, wie <ph name="PRODUCT_OS_NAME" /> sich verhalten soll, wenn auf dem Anmeldebildschirm eine Zeit lang keine Nutzeraktivität erfolgt. Durch die Richtlinie werden mehrere Einstellungen festgelegt. Deren Semantik und zulässige Wertebereiche finden Sie unter den entsprechenden Richtlinien zur Steuerung der Energieverwaltung innerhalb einer Sitzung. @@ -6186,11 +6186,11 @@ Nach dem Neustart wird die Sitzung des Nutzers wiederhergestellt.</translation> <translation id="9160028464653564229">Websites nicht erlauben, den Nutzer über die Serial API um Zugriff auf serielle Ports zu bitten</translation> -<translation id="916461878260574432">Sie können festlegen, ob P2P für die Nutzlasten von Betriebssystem-Updates verwendet werden soll. +<translation id="916461878260574432">Sie können festlegen, ob für die Nutzlasten von Betriebssystem-Updates P2P verwendet werden soll. Wenn die Richtlinie auf „True“ gesetzt ist, teilen Geräte Update-Nutzlasten im LAN und versuchen, die Daten von dort zu laden. Dadurch wird potenziell weniger Internetbandbreite verbraucht und es kommt seltener zu Datenstaus. Wenn die Update-Nutzlast nicht im LAN verfügbar ist, lädt das Gerät die Daten stattdessen von einem Updateserver herunter. Ist die Richtlinie auf „False“ gesetzt oder nicht konfiguriert, wird P2P nicht verwendet. - HINWEIS: Das Standardverhalten ist für Verbraucher- und Unternehmensgeräte unterschiedlich: Auf verwalteten Geräten ist P2P aktiviert, auf nicht verwalteten Geräten ist P2P dagegen deaktiviert.</translation> + HINWEIS: Das Standardverhalten hängt davon ab, ob es sich um ein Verbrauchergerät oder ein Unternehmensgerät handelt: Auf verwalteten Geräten ist P2P aktiviert, auf nicht verwalteten Geräten ist P2P dagegen deaktiviert.</translation> <translation id="9164656078867027374">Domains festlegen, die auf <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> zugreifen dürfen</translation> <translation id="9167719789236691545">Synchronisierung zwischen Drive und der App "Dateien" von <ph name="PRODUCT_OS_NAME" /> deaktivieren</translation> <translation id="9187743794267626640">Bereitstellen von externem Speicher deaktivieren</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index f0845e2d..f7f08b3 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -971,7 +971,7 @@ Esta política no debería aplicarse en dispositivos utilizados por el público general. Si se le asigna el valor "True" o no se le asigna ningún valor, la notificación de advertencia de privacidad en la sesión de invitado administrada e iniciada automáticamente quedará fijada hasta que el usuario la cierre.</translation> -<translation id="2281878365805647176">Si se define esta política, se activará la función de inicio de sesión restringido de Chrome en <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. Los usuarios no podrán cambiar este ajuste. Los usuarios solo podrán acceder a las herramientas de Google desde cuentas de los dominios especificados. Si quieres dar permiso a cuentas @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. +<translation id="2281878365805647176">Si se define esta política, se activará la función de inicio de sesión restringido de Chrome en <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. Los usuarios no podrán cambiar este ajuste. Los usuarios solo podrán acceder a las herramientas de Google desde cuentas de los dominios especificados. Si quieres dar permiso a cuentas 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. Si este ajuste se deja vacío o sin definir, los usuarios podrán acceder a <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> con cualquier cuenta.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index 03b8fcc..42cb9f2 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -441,17 +441,17 @@ Voir https://www.chromestatus.com/feature/4664843055398912.</translation> <translation id="1587585749332985896">Ne pas autoriser le mode sans interface graphique</translation> <translation id="1588240398285670601">Paramètres du navigateur</translation> -<translation id="1590071725627230651">Ce paramètre offre plusieurs options liées à la disponibilité du navigateur <ph name="LACROS_NAME" />. +<translation id="1590071725627230651">Ce paramètre offre plusieurs options de disponibilité pour le navigateur <ph name="LACROS_NAME" />. - Si cette règle est définie sur "<ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" />" ou qu'elle n'est pas configurée, l'utilisateur peut activer <ph name="LACROS_NAME" /> et le définir comme navigateur principal. (<ph name="LACROS_NAME" /> peut quand même être désactivé avec la règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />".) + Si cette règle est définie sur "<ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" />" ou qu'elle n'est pas configurée, l'utilisateur peut activer <ph name="LACROS_NAME" /> et en faire le navigateur principal. (<ph name="LACROS_NAME" /> peut quand même être non autorisé avec la règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />".) - Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />", l'utilisateur ne peut pas employer <ph name="LACROS_NAME" />. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.) + Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />", l'utilisateur ne peut pas se servir de <ph name="LACROS_NAME" />. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.) - Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />", <ph name="LACROS_NAME" /> est activé sans être le navigateur principal. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.) + Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />", <ph name="LACROS_NAME" /> est activé, mais n'est pas le navigateur principal. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.) - Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />", <ph name="LACROS_NAME" /> est activé comme navigateur principal. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.) + Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />", <ph name="LACROS_NAME" /> est activé et c'est le navigateur principal. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.) - À l'avenir, la valeur "<ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />" permettra de définir <ph name="LACROS_NAME" /> comme le seul navigateur disponible dans <ph name="PRODUCT_OS_NAME" />.</translation> + À l'avenir, la valeur "<ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />" permettra de faire de <ph name="LACROS_NAME" /> le seul navigateur disponible dans <ph name="PRODUCT_OS_NAME" />.</translation> <translation id="1599424828227887013">Activer l'isolation des sites pour des origines définies sur les appareils Android</translation> <translation id="159946228300522107">Si cette règle est définie sur "True", Chrome agrandit la première fenêtre affichée à la première exécution. @@ -696,7 +696,7 @@ <translation id="1920772397574801429">Permet de spécifier le type des comptes fournis par l'application d'authentification Android qui accepte la méthode d'authentification <ph name="HTTP_NEGOTIATE" /> (l'authentification Kerberos, par exemple). Ces informations doivent être disponibles auprès du fournisseur de l'application en question. Pour en savoir plus, consultez le site https://goo.gl/hajyfN (sur les projets Chromium). Si cette règle n'est pas configurée, la méthode d'authentification <ph name="HTTP_NEGOTIATE" /> est désactivée sous Android.</translation> -<translation id="1925529914257504750">Mise à jour automatique avec connexion P2P activée</translation> +<translation id="1925529914257504750">P2P activé pour les mises à jour auto</translation> <translation id="1930127294345368978">Nombre maximal de feuilles pouvant être imprimées par tâche d'impression</translation> <translation id="193259052151668190">Liste blanche d'appareils USB amovibles</translation> <translation id="1933378685401357864">Image de fond d'écran</translation> @@ -973,11 +973,11 @@ Notez que cette règle ne doit pas être appliquée aux appareils utilisés par le grand public. Si cette règle est définie sur "True" ou qu'elle n'est pas configurée, les avertissements liés à la confidentialité dans les sessions Invité gérées lancées automatiquement sont épinglés jusqu'à ce que les utilisateurs les ferment.</translation> -<translation id="2281878365805647176">Cette règle permet d'activer la fonctionnalité de connexion limitée de Chrome <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> sans que les utilisateurs puissent modifier ce paramètre. Les utilisateurs ne peuvent accéder aux outils Google que via des comptes associés aux domaines spécifiés (pour autoriser des comptes Gmail ou Googlemail, ajoutez "consumer_accounts" à la liste des domaines). Ce paramètre empêche les utilisateurs de se connecter et d'ajouter un compte secondaire sur un appareil géré qui exige l'authentification Google, si ce compte n'appartient pas à l'un des domaines explicitement autorisés. +<translation id="2281878365805647176">Cette règle permet d'activer la fonctionnalité de connexion limitée de Chrome dans <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> et d'empêcher les utilisateurs de modifier ce paramètre. Les utilisateurs ne peuvent accéder aux outils Google que via des comptes des domaines spécifiés (pour autoriser des comptes Gmail ou Googlemail, ajoutez "consumer_accounts" à la liste des domaines). Ce paramètre empêche les utilisateurs de se connecter et d'ajouter un compte secondaire sur un appareil géré qui exige l'authentification Google, si ce compte n'appartient pas à l'un des domaines explicitement autorisés. - Si ce paramètre n'est pas configuré, les utilisateurs peuvent accéder à <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> avec n'importe quel compte. + Si ce paramètre est vide ou qu'il n'est pas configuré, les utilisateurs peuvent accéder à <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> avec n'importe quel compte. - Sachez également que les utilisateurs ne peuvent pas modifier ni ignorer ce paramètre. + Les utilisateurs ne peuvent ni modifier, ni ignorer ce paramètre. Remarque : Cette règle entraîne l'ajout de l'en-tête "X-GoogApps-Allowed-Domains" à toutes les requêtes HTTP et HTTPS sur tous les domaines google.com (comme indiqué sur https://support.google.com/a/answer/1668854).</translation> <translation id="2289265947759479962">Cette règle détermine si les informations de version doivent être enregistrées. Cela concerne, par exemple, la version, la plate-forme et l'architecture du système d'exploitation, la version de <ph name="PRODUCT_NAME" /> et le canal de <ph name="PRODUCT_NAME" />. @@ -1044,7 +1044,7 @@ Si cette règle est définie sur "False" ou n'est pas configurée, les touches sont des touches multimédias par défaut. Elles deviennent des touches de fonction lorsque la touche de recherche est maintenue enfoncée.</translation> <translation id="2358176879566587521">Cette règle est supprimée. Elle n'est pas compatible avec cette version de <ph name="PRODUCT_NAME" />. Pour en savoir plus, rendez-vous sur https://support.google.com/chrome/a/answer/7643500.</translation> -<translation id="2362469626417133796">Créneau pour la fin de la période de notification de redémarrage</translation> +<translation id="2362469626417133796">Fenêtre de redémarrage</translation> <translation id="2364639863953745682">Mode du processus de prise en main de l'Assistant</translation> <translation id="2384233438419344179">Si cette règle est activée, les éléments de page Web qui ne font pas partie du domaine indiqué dans la barre d'adresse du navigateur ne peuvent pas placer de cookies. Si cette règle est désactivée, ces éléments sont autorisés à placer des cookies, et les utilisateurs ne peuvent pas modifier ce paramètre. @@ -1119,7 +1119,7 @@ <translation id="2433516903565257847">Pourcentage du parc à mettre à jour au terme du nombre de jours indiqué.</translation> <translation id="2435052056904485763">Liste d'autorisation des serveurs de délégation Kerberos</translation> <translation id="2435232509335686514">Règle de configuration de <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> pour la gestion des fichiers téléchargés</translation> -<translation id="2436302465999055995">Définir <ph name="LACROS_NAME" /> comme le seul navigateur disponible (pas encore implémenté)</translation> +<translation id="2436302465999055995">Faire de <ph name="LACROS_NAME" /> le seul navigateur disponible (pas encore implémenté)</translation> <translation id="2448315169529769573">Si cette règle est activée, <ph name="PRODUCT_OS_NAME" /> envoie à Google les statistiques d'utilisation et les données de diagnostic, y compris les rapports d'erreur. Si cette règle est désactivée, ces statistiques et ces données ne sont pas envoyées. Si cette règle n'est pas configurée, les statistiques et les données de diagnostic ne sont pas envoyées concernant les appareils non gérés, mais le sont pour les appareils gérés.</translation> @@ -1283,7 +1283,7 @@ <translation id="2593762551209145088">La navigation sécurisée n'est jamais active.</translation> <translation id="26023406105317310">Configurer les comptes Kerberos</translation> <translation id="2604182581880595781">Configurer les règles associées à la fonctionnalité Partages de fichiers en réseau.</translation> -<translation id="2608535066974278204">Durée du créneau (en minutes) pour la fin de la période de notification de redémarrage.</translation> +<translation id="2608535066974278204">Durée (en minutes) de la fenêtre de redémarrage.</translation> <translation id="2615240493030733717">Transmettre le fuseau horaire</translation> <translation id="2619966380594000538">Si cette règle est activée ou qu'elle n'est pas configurée, des avertissements de sécurité s'affichent lorsque des options de ligne de commande potentiellement dangereuses sont utilisées pour lancer Chrome. @@ -3406,7 +3406,7 @@ <translation id="5526184558582921522">Autoriser les requêtes au serveur Quirks et le téléchargement potentiel de fichiers de configuration spécifiques au matériel</translation> <translation id="5526701598901867718">Tous les types de chiffrement (option non sécurisée)</translation> <translation id="5530347722229944744">Bloquer les téléchargements potentiellement dangereux</translation> -<translation id="5535256585099022933">Définir le créneau pour la fin de la période de notification de redémarrage</translation> +<translation id="5535256585099022933">Définir l'intervalle du redémarrage</translation> <translation id="5535973522252703021">Liste blanche des serveurs de délégation Kerberos</translation> <translation id="553806128266843748">Indicateur booléen spécifiant si la limitation est activée.</translation> <translation id="5540885720415375851">Autoriser la détection des appareils en local</translation> @@ -3702,7 +3702,7 @@ <translation id="5890063326284543943">Contrôler l'utilisation de l'API Serial</translation> <translation id="5897913798715600338">Recharge de la batterie à l'aide d'une technologie de recharge rapide.</translation> <translation id="5898486742390981550">Lorsque plusieurs personnes sont connectées, l'utilisateur principal est le seul à pouvoir se servir des applications Android.</translation> -<translation id="5899751601113377553">Empêcher les utilisateurs d'employer <ph name="LACROS_NAME" /></translation> +<translation id="5899751601113377553">Empêcher les utilisateurs de se servir de <ph name="LACROS_NAME" /></translation> <translation id="5901427587865226597">Impression recto verso seulement</translation> <translation id="5905473632148429217">Activer les contrôles OCSP/CRL en ligne</translation> <translation id="5907283448020542268">Configurer <ph name="GLS_ENABLED" /> active les services de localisation Google lors de la configuration initiale, sauf si la règle <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> est définie sur <ph name="BLOCK_GEOLOCATION_SETTING" />. Si la règle est définie sur <ph name="GLS_DISABLED" /> ou n'est pas configurée, les services de localisation restent désactivés pendant la configuration. @@ -3890,13 +3890,13 @@ En revanche, ils peuvent appliquer le thème de leur choix au navigateur si la règle n'est pas configurée.</translation> <translation id="6195802366906945965">Déterminer si l'outil de vérification des certificats intégré sera utilisé pour vérifier les certificats des serveurs</translation> -<translation id="6198375221792846439">Cette règle permet de définir un créneau cible pour la fin de la période de notification de redémarrage. +<translation id="6198375221792846439">Cette règle permet de définir une fenêtre cible pour la fin de la période de notification du redémarrage. - En fonction des paramètres des règles "<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" />" et "<ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />", les utilisateurs reçoivent une notification les invitant à redémarrer leur navigateur ou appareil. Si la règle "<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" />" est définie sur "Obligatoire", le navigateur ou l'appareil concernés sont redémarrés de manière forcée une fois la période de notification écoulée. La règle "<ph name="RELAUNCH_WINDOW_POLICY_NAME" />" peut servir à différer la fin de la période de notification afin qu'elle tombe dans un créneau spécifique. + Selon les paramètres des règles "<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" />" et "<ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />", les utilisateurs sont prévenus que le navigateur va devoir être relancé, ou l'appareil, redémarré. Si la règle "<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" />" est définie sur "Obligatoire", les navigateurs ou appareils sont redémarrés de manière forcée une fois la période de notification écoulée. La règle "<ph name="RELAUNCH_WINDOW_POLICY_NAME" />" peut servir à différer la fin de la période de notification afin qu'elle coïncide avec une fenêtre spécifique. - Si cette règle n'est pas configurée, le créneau cible par défaut est compris entre 2h et 4h du matin pour <ph name="PRODUCT_OS_NAME" /> ou étendu à toute la journée pour <ph name="PRODUCT_NAME" /> (la fin de la période de notification n'est alors jamais différée). + Si cette règle n'est pas configurée, la fenêtre cible par défaut est comprise entre 2h et 4h du matin pour <ph name="PRODUCT_OS_NAME" /> ou étendue à toute la journée pour <ph name="PRODUCT_NAME" /> (la fin de la période de notification n'est alors jamais différée). - Avertissement : La configuration de cette règle peut retarder l'application des mises à jour logicielles.</translation> + Avertissement : Configurer cette règle peut retarder l'application des mises à jour logicielles.</translation> <translation id="6208896993204286313">Enregistrer les informations sur les règles concernant <ph name="PRODUCT_NAME" /></translation> <translation id="6210259502936598222">Enregistrer les informations sur la version de <ph name="PRODUCT_NAME" /> et l'OS</translation> <translation id="6212868225782276239">Toutes les imprimantes sont affichées à l'exception de celles qui sont répertoriées dans la liste noire.</translation> @@ -4072,7 +4072,7 @@ <translation id="6464074037294098618">Activer la saisie automatique pour les adresses</translation> <translation id="6467613372414922590">Autoriser les hôtes de messagerie natifs au niveau de l'utilisateur (installés sans l'autorisation d'un administrateur)</translation> <translation id="6473623140202114570">Configurez la liste des domaines sur lesquels la navigation sécurisée ne déclenchera aucun avertissement.</translation> -<translation id="647645276885673708">Activer <ph name="LACROS_NAME" /> et le définir comme navigateur principal</translation> +<translation id="647645276885673708">Activer <ph name="LACROS_NAME" /> et en faire le navigateur principal</translation> <translation id="647698599569353771">Autorisez l'activation du Partage à proximité.</translation> <translation id="6478258366184919502">Origines de l'écran de connexion</translation> <translation id="6478261301433199402">Cette règle permet de définir l'image de <ph name="PLUGIN_VM_NAME" /> pour un utilisateur. Spécifiez cette règle sous la forme d'une chaîne au format JSON. Dans le champ "<ph name="URL_PLUGIN_VM_IMAGE_FIELD" />", indiquez l'URL où télécharger l'image, et dans le champ "<ph name="HASH_PLUGIN_VM_IMAGE_FIELD" />", le hachage SHA-256 utilisé pour vérifier l'intégrité du téléchargement.</translation> @@ -5994,7 +5994,7 @@ <translation id="8892286064305622118">Espace disque libre requis pour <ph name="PLUGIN_VM_NAME" /></translation> <translation id="8892783613915541293">Délais et actions à effectuer en cas d'inactivité de l'utilisateur quand l'appareil fonctionne sur secteur.</translation> <translation id="8897796778265450949">Limiter la durée pendant laquelle un utilisateur authentifié via GAIA sans SAML peut se connecter hors connexion</translation> -<translation id="889814528399907891">Autoriser les utilisateurs à activer <ph name="LACROS_NAME" /> et à le définir comme navigateur principal</translation> +<translation id="889814528399907891">Autoriser les utilisateurs à activer <ph name="LACROS_NAME" /> et à en faire le navigateur principal</translation> <translation id="8903283771634816230">Si vous activez cette règle, cela signifie que <ph name="PRODUCT_NAME" /> utilise l'imprimante par défaut du système d'exploitation en tant que destination par défaut pour l'aperçu avant impression. Si vous la désactivez, ou si vous ne la configurez pas, <ph name="PRODUCT_NAME" /> définira la dernière imprimante utilisée en tant que destination par défaut pour l'aperçu avant impression.</translation> @@ -6137,7 +6137,7 @@ Si cette règle est désactivée, les appareils enregistrés n'enregistrent et ne communiquent pas ces périodes.</translation> <translation id="9077227880520270584">Minuteur de connexion automatique au compte local de l'appareil</translation> <translation id="9084985621503260744">Indiquer si l'activité vidéo a une incidence sur la gestion de l'alimentation</translation> -<translation id="9088191250434406767">Si cette règle est activée ou qu'elle n'est pas configurée, les utilisateurs peuvent faire une recherche avec leur appareil photo à l'aide de <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si cette règle est désactivée, les utilisateurs ne peuvent pas voir le bouton <ph name="GOOGLE_LENS_PRODUCT_NAME" /> dans le champ de recherche lorsque la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo est compatible.</translation> +<translation id="9088191250434406767">Si cette règle est activée ou qu'elle n'est pas configurée, les utilisateurs peuvent rechercher avec leur appareil photo à l'aide de <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si cette règle est désactivée, les utilisateurs ne peuvent pas voir le bouton <ph name="GOOGLE_LENS_PRODUCT_NAME" /> dans le champ de recherche lorsque la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo est compatible.</translation> <translation id="9088433379343318874">Activer le fournisseur de contenu de l'utilisateur supervisé</translation> <translation id="9088444059179765143">Configurer la méthode de détection automatique du fuseau horaire</translation> <translation id="9095999573959728902">Si ce paramètre est activé, les utilisateurs seront autorisés à activer Phone Hub, qui leur permet d'interagir avec leur téléphone sur un appareil Chrome OS. @@ -6216,11 +6216,11 @@ La session de l'utilisateur est restaurée après le redémarrage.</translation> <translation id="9160028464653564229">Interdire à tous les sites de demander l'accès aux ports série via l'API Serial</translation> -<translation id="916461878260574432">Cette règle permet de spécifier si une connexion P2P doit être utilisée pour les charges utiles de mise à jour de l'OS. - Si cette règle est définie sur "True", les charges utiles de mise à jour sur le réseau local sont partagées et utilisées par les appareils, ce qui peut avoir pour effet de réduire la quantité de bande passante utilisée et l'encombrement sur Internet. Si la charge utile de mise à jour n'est pas disponible sur le réseau local, le téléchargement est effectué sur l'appareil à partir d'un serveur de mise à jour. - Si cette règle est définie sur "False" ou qu'elle n'est pas configurée, la connexion P2P n'est pas utilisée. +<translation id="916461878260574432">Cette règle permet de spécifier si le P2P doit être utilisé pour les charges utiles de mise à jour de l'OS. + Si cette règle est définie sur "True", les appareils partagent et tentent de consommer les charges utiles de mise à jour sur le réseau local, ce qui peut réduire l'utilisation et la congestion de la bande passante Internet. Si la charge utile de mise à jour n'est pas disponible sur le réseau local, l'appareil repassera au téléchargement depuis un serveur de mise à jour. + Si cette règle est définie sur "False", le P2P n'est pas utilisé. - REMARQUE : Le comportement par défaut des appareils grand public et professionnels diffère. Sur les appareils gérés, la connexion P2P sera activée, tandis que sur les appareils non gérés, elle ne le sera pas.</translation> + REMARQUE : Le comportement par défaut des appareils grand public et professionnels diffère. Sur les appareils gérés, le P2P est activé, tandis que sur les appareils non gérés, il ne l'est pas.</translation> <translation id="9164656078867027374">Définir les domaines autorisés à accéder à <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation> <translation id="9167719789236691545">Désactiver Drive dans l'application "Fichiers" de <ph name="PRODUCT_OS_NAME" /></translation> <translation id="9187743794267626640">Désactiver le montage de périphériques de stockage externe</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 2302e38..4e0a65b5 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -438,6 +438,17 @@ 请参阅 https://www.chromestatus.com/feature/4664843055398912。</translation> <translation id="1587585749332985896">不允许使用无头模式</translation> <translation id="1588240398285670601">浏览器设置</translation> +<translation id="1590071725627230651">此设置旨在为 <ph name="LACROS_NAME" /> 浏览器提供多个可用性选项。 + + 如果此政策设为“<ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" />”或未设置此政策,则用户可以启用 <ph name="LACROS_NAME" /> 并将其设为主要浏览器。仍可使用 <ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策禁用 <ph name="LACROS_NAME" />。 + + 如果此政策设为“<ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />”,则用户无法使用 <ph name="LACROS_NAME" />。<ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策会被忽略。 + + 如果此政策设为“<ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />”,则会启用 <ph name="LACROS_NAME" />,但不会将其设为主要浏览器。<ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策会被忽略。 + + 如果此政策设为“<ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />”,则会启用 <ph name="LACROS_NAME" />,并将其设为主要浏览器。<ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策会被忽略。 + + 将来可以使用“<ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />”值将 <ph name="LACROS_NAME" /> 设为 <ph name="PRODUCT_OS_NAME" />中唯一可用的浏览器。</translation> <translation id="1599424828227887013">在 Android 设备上为指定的来源启用网站隔离功能</translation> <translation id="159946228300522107">如果此政策设为 True,Chrome 会在首次运行时将所显示的第一个窗口最大化。 @@ -673,6 +684,7 @@ <translation id="1920772397574801429">通过设置此政策,您可以指定支持 <ph name="HTTP_NEGOTIATE" /> 身份验证(例如 Kerberos 身份验证)的 Android 身份验证应用提供的帐号所属的类型。您应该可以从身份验证应用的供应商处获得此信息。如需更多详细信息,请访问 https://goo.gl/hajyfN 查看 Chromium 项目 如果您不设置此政策,Android 设备上将停用 <ph name="HTTP_NEGOTIATE" /> 身份验证。</translation> +<translation id="1925529914257504750">已启用点对点技术自动更新</translation> <translation id="1930127294345368978">单个打印任务可以使用的纸张数上限</translation> <translation id="193259052151668190">分离式 USB 设备白名单</translation> <translation id="1933378685401357864">壁纸图片</translation> @@ -748,6 +760,7 @@ 请注意,此政策是按渲染程序进程来应用的,当有渲染程序进程启动时,此政策设置中的最新值会生效。必须完全重启设备,才能确保所加载的所有标签页都会收到一致的政策设置。不同的进程可以使用此政策的不同值运行。 </translation> +<translation id="2029985289397958781">为企业用户停用由 <ph name="GOOGLE_LENS_PRODUCT_NAME" />提供支持的摄像头辅助搜索功能</translation> <translation id="2030905906517501646">默认搜索服务提供商关键字</translation> <translation id="203096360153626918">此政策对 Android 应用没有任何影响。即使此政策设为 <ph name="FALSE" />,这些应用也将能够进入全屏模式。</translation> <translation id="2032848225007871645">通过设置此政策,您可以控制哪些快速解锁模式可为锁定屏幕解锁。 @@ -937,6 +950,13 @@ 请勿将此政策用于公用设备。 如果此政策设为 True 或未设置,系统则会将自动启动的受管理访客会话中的隐私权警告通知固定在屏幕上,直到用户关闭它为止。</translation> +<translation id="2281878365805647176">通过设置此政策,您可以开启 Chrome 的 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 受限登录功能,并禁止用户更改此设置。用户只能通过来自指定网域的帐号使用 Google 工具(若要允许使用 gmail 或 googlemail 帐号,请将 consumer_accounts 添加到网域列表中)。在需要进行 Google 身份验证的受管设备上,此设置会禁止用户登录和添加辅助帐号(如果该帐号不属于明确允许的某一网域)。 + + 如果您将此设置留空/未配置此设置,用户将能够使用任何帐号访问 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />。 + + 用户无法更改或覆盖此设置。 + + 请注意:此政策会致使系统将 X-GoogApps-Allowed-Domains 标头附加到向所有 google.com 网域发送的所有 HTTP 和 HTTPS 请求中,如 https://support.google.com/a/answer/1668854 中所述。</translation> <translation id="2289265947759479962">此政策旨在控制是否报告版本信息,例如操作系统版本、操作系统平台、操作系统架构、<ph name="PRODUCT_NAME" /> 版本号和 <ph name="PRODUCT_NAME" /> 版本类型。 如果 <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> 政策未设置或已停用,系统将忽略此政策。 @@ -1001,6 +1021,7 @@ 如果此政策设为 False 或未设置,键盘会默认发出媒体键命令。按搜索键可将这些键改为功能键。</translation> <translation id="2358176879566587521">此政策已被移除。它与这个版本的 <ph name="PRODUCT_NAME" /> 不兼容。如需了解详情,请访问 https://support.google.com/chrome/a/answer/7643500</translation> +<translation id="2362469626417133796">重新启动时间范围</translation> <translation id="2364639863953745682">Google 助理新手入门体验的模式</translation> <translation id="2384233438419344179">如果此政策已启用,系统会阻止来自浏览器地址栏所含网域之外的网页元素设置 Cookie。如果此政策已停用,系统会允许这些元素设置 Cookie,并会阻止用户更改此设置。 @@ -1075,6 +1096,7 @@ <translation id="2433516903565257847">应在指定天数后更新的设备所占的百分比。</translation> <translation id="2435052056904485763">Kerberos 委派服务器许可名单</translation> <translation id="2435232509335686514">与<ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" />对所下载文件的处理方式有关的配置政策</translation> +<translation id="2436302465999055995">将 <ph name="LACROS_NAME" /> 设为唯一可用的浏览器(尚未实施)</translation> <translation id="2448315169529769573">如果此政策已启用,<ph name="PRODUCT_OS_NAME" />便会将使用情况指标和诊断数据(包括崩溃报告)反馈给 Google。如果此政策已停用,系统会关闭指标和诊断数据报告功能。 如果此政策未设置,在不受管理的设备上,指标和诊断数据报告功能会保持关闭状态;但在受管理的设备上,该功能会保持开启状态。</translation> @@ -1220,6 +1242,7 @@ 如果您未设置此政策,系统将会应用 <ph name="PRINTERS_ALLOW_ALL" />。</translation> <translation id="2586117300379904732">允许使用唤醒锁定以便进行电源管理</translation> +<translation id="2586231026319371211">以当地 24 小时制显示时间。</translation> <translation id="2587719089023392205">将 <ph name="PRODUCT_NAME" /> 设为默认浏览器</translation> <translation id="2588252329503406673">通过设置此政策,您可以指定在系统显示登录屏幕期间用户停止操作一定时间后 <ph name="PRODUCT_OS_NAME" />的行为。此政策能够控制多项设置。有关各项设置的语义和值范围,请参见用于控制会话内电源管理情况的相应政策。 @@ -1237,6 +1260,7 @@ <translation id="2593762551209145088">“安全浏览”功能会一直处于关闭状态。</translation> <translation id="26023406105317310">配置 Kerberos 帐号</translation> <translation id="2604182581880595781">配置网络文件共享功能相关政策。</translation> +<translation id="2608535066974278204">用于指定重新启动时间范围长度的时间段(以分钟为单位)。</translation> <translation id="2615240493030733717">报告时区信息</translation> <translation id="2619966380594000538">如果此政策已启用或未设置,当您使用可能不安全的命令行标记启动 Chrome 时,系统会显示安全警告。 @@ -1859,6 +1883,7 @@ <translation id="3415954062311826850">此政策在 Arc 中不受支持。</translation> <translation id="34160070798637152">控制设备级网络配置。</translation> <translation id="3417130629744653218">允许网站查询可用的付款方式。</translation> +<translation id="3417391585519621050">为企业用户启用由 <ph name="GOOGLE_LENS_PRODUCT_NAME" />提供支持的摄像头辅助搜索功能</translation> <translation id="3417418267404583991">如果未配置此政策或将其设置为 true,<ph name="PRODUCT_OS_NAME" />将启用访客登录。访客登录是匿名用户会话,不需要密码。 如果将此政策设置为 false,<ph name="PRODUCT_OS_NAME" />就不会允许访客会话启动。</translation> @@ -3342,6 +3367,7 @@ 当该策略值已设置,且不为零,那么当不活动期达到指定的时间期间后,当前登录的演示用户就会自动退出。 该策略值应该以毫秒为单位。</translation> +<translation id="55057839818162162">启用由 <ph name="GOOGLE_LENS_PRODUCT_NAME" />提供支持的摄像头辅助搜索功能</translation> <translation id="5508307164752647432">启用 Kerberos 功能</translation> <translation id="5511702823008968136">启用书签栏</translation> <translation id="5512418063782665071">主页网址</translation> @@ -3358,6 +3384,7 @@ <translation id="5526184558582921522">允许向 Quirks Server 发送查询并酌情下载硬件专用配置文件</translation> <translation id="5526701598901867718">所有(不安全)</translation> <translation id="5530347722229944744">拦截可能有危险的下载内容</translation> +<translation id="5535256585099022933">设置重新启动时间间隔</translation> <translation id="5535973522252703021">Kerberos 授权服务器白名单</translation> <translation id="553806128266843748">一个布尔值标记,用于表明是否启用节流功能。</translation> <translation id="5540885720415375851">允许使用“本地设备发现”功能</translation> @@ -3643,6 +3670,7 @@ <translation id="5890063326284543943">控制对 Serial API 的使用</translation> <translation id="5897913798715600338">使用快速充电技术为电池充电。</translation> <translation id="5898486742390981550">如果有多个用户同时登录,则只有主要用户可以使用 Android 应用。</translation> +<translation id="5899751601113377553">禁止用户使用 <ph name="LACROS_NAME" /></translation> <translation id="5901427587865226597">仅限双面打印</translation> <translation id="5905473632148429217">启用在线 OCSP/CRL 检查</translation> <translation id="5907283448020542268">除非 <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> 政策已设为 <ph name="BLOCK_GEOLOCATION_SETTING" />,否则将此政策设为 <ph name="GLS_ENABLED" /> 会在初始设置期间开启 Google 位置信息服务。将此政策设为 <ph name="GLS_DISABLED" /> 或不设置,位置信息服务会在设置期间保持关闭状态。 @@ -3811,6 +3839,13 @@ 如果此政策未设置,用户可根据自己的偏好更改所用浏览器的主题。</translation> <translation id="6195802366906945965">确定是否会使用内置的证书验证程序来验证服务器证书</translation> +<translation id="6198375221792846439">为重新启动通知时间段的结束指定目标时间范围。 + + 系统会根据 <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> 和 <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> 政策设置向用户发送通知,指明他们需要重新启动浏览器或重启设备。如果 <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> 政策设为“必需”,系统会在通知时间段结束时强制重启浏览器和设备。此 <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> 政策可用于将通知时间段的结束时间推迟至特定的时间范围内。 + + 如果此政策未设置,<ph name="PRODUCT_OS_NAME" />的默认目标时间范围会是凌晨 2 点到 4 点之间,而 <ph name="PRODUCT_NAME" /> 的默认目标时间范围会是全天(即,一律不推迟通知时间段的结束时间)。 + + 警告:设置此政策可能会延迟应用软件更新。</translation> <translation id="6208896993204286313">报告 <ph name="PRODUCT_NAME" /> 政策信息</translation> <translation id="6210259502936598222">报告操作系统和 <ph name="PRODUCT_NAME" /> 版本信息</translation> <translation id="6212868225782276239">系统会显示除黑名单中所列打印机之外的所有打印机。</translation> @@ -3986,6 +4021,7 @@ <translation id="6464074037294098618">自动填充地址信息</translation> <translation id="6467613372414922590">允许使用用户级本地消息传递主机(安装时没有管理员权限)</translation> <translation id="6473623140202114570">配置安全浏览功能在哪些网域中不会触发警告。</translation> +<translation id="647645276885673708">启用 <ph name="LACROS_NAME" /> 并将其设为主要浏览器</translation> <translation id="647698599569353771">允许启用“附近分享”功能。</translation> <translation id="6478258366184919502">登录和屏幕来源</translation> <translation id="6478261301433199402">通过设置此政策,您可以指定用户的 <ph name="PLUGIN_VM_NAME" /> 映像。此政策应指定为一个 JSON 格式字符串:使用 <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> 指明相应映像的下载位置,并使用 <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> 指定用于验证下载内容是否完整的 SHA-256 哈希值。</translation> @@ -4771,6 +4807,7 @@ <translation id="7340034977315324840">报告设备活动时间</translation> <translation id="7343004974628511824">执行 DNS 拦截检查</translation> <translation id="7343497214039883642">设备的企业打印机配置文件</translation> +<translation id="7358359585412734876">启用 <ph name="LACROS_NAME" /></translation> <translation id="7358744897221281073">如果您启用了此设置,已选择启用 Phone Hub 功能的用户将能够在 Chrome 操作系统上继续执行尚未完成的任务(例如查看其手机中的网页)。 如果您停用了此设置,用户将无法使用该功能。如果 PhoneHubAllowed 政策已停用,用户也将无法使用该功能。 @@ -5275,6 +5312,7 @@ 如果此政策已停用或未设置,已注册的设备将不会报告存储统计信息。</translation> <translation id="8044493735196713914">报告设备引导模式</translation> +<translation id="80453040817068401">启用 <ph name="LACROS_NAME" /> 浏览器</translation> <translation id="8049769137921877885">此政策旨在控制是否报告政策数据和政策提取时间。 如果 <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> 政策未设置或已停用,系统将忽略此政策。 @@ -5895,6 +5933,7 @@ <translation id="8892286064305622118"><ph name="PLUGIN_VM_NAME" /> 所需的可用磁盘空间</translation> <translation id="8892783613915541293">当设备闲置且使用交流电源供电时应执行的操作以及相应延迟时间</translation> <translation id="8897796778265450949">限制通过 GAIA(不使用 SAML)验证身份的用户可离线登录的时长</translation> +<translation id="889814528399907891">允许用户启用 <ph name="LACROS_NAME" /> 并将其设为主要浏览器</translation> <translation id="8903283771634816230">如果此政策已启用,<ph name="PRODUCT_NAME" /> 会在进行打印预览时将操作系统默认打印机用作默认目标。 如果此政策已停用或未设置,<ph name="PRODUCT_NAME" /> 会在进行打印预览时将上次使用的打印机用作默认目标。</translation> @@ -6037,6 +6076,7 @@ 如果此政策已停用,已注册的设备将不会记录或报告活动时间。</translation> <translation id="9077227880520270584">设备本地帐号自动登录计时器</translation> <translation id="9084985621503260744">指定视频活动是否影响电源管理</translation> +<translation id="9088191250434406767">如果此政策未设置或已启用,用户便可借助 <ph name="GOOGLE_LENS_PRODUCT_NAME" />使用摄像头进行搜索。如果此政策已停用,那么即使可以使用由 <ph name="GOOGLE_LENS_PRODUCT_NAME" />提供支持的摄像头辅助搜索功能,用户也不会在搜索框中看到 <ph name="GOOGLE_LENS_PRODUCT_NAME" />按钮。</translation> <translation id="9088433379343318874">启用受监管用户内容提供方</translation> <translation id="9088444059179765143">配置自动检测时区方法</translation> <translation id="9095999573959728902">如果您启用了此设置,用户将能够选择启用 Phone Hub 功能,以便在 Chrome 操作系统设备上与其手机互动。 @@ -6108,6 +6148,12 @@ 浏览器重新启动/设备重启后,将会恢复用户会话。</translation> <translation id="9160028464653564229">不允许任何网站请求通过 Serial API 使用串行端口</translation> +<translation id="916461878260574432">指定是否为操作系统更新载荷使用点对点技术。 + 如果设为 True,设备将共享并试图消耗 LAN 中的更新载荷,从而可能会减少互联网带宽使用量和拥塞。如果 LAN 中没有更新载荷,设备将回退到从更新服务器下载。 + 如果设为 False,则不会使用点对点技术。 + + 请注意,消费者设备和企业设备的默认行为有所不同:系统会在受管设备上启用点对点技术,而在非受管设备上停用该技术。</translation> +<translation id="9164656078867027374">定义允许访问 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 的网域</translation> <translation id="9167719789236691545">在 <ph name="PRODUCT_OS_NAME" />的“文件”应用中停用 Google 云端硬盘</translation> <translation id="9187743794267626640">禁止装载外部存储设备</translation> <translation id="9190456586252617675">此政策旨在控制 Google 助理新手入门体验的模式。
diff --git a/components/security_interstitials/content/ssl_error_handler.cc b/components/security_interstitials/content/ssl_error_handler.cc index 0529f77..475bf51 100644 --- a/components/security_interstitials/content/ssl_error_handler.cc +++ b/components/security_interstitials/content/ssl_error_handler.cc
@@ -450,7 +450,7 @@ const GURL& suggested_url, CommonNameMismatchHandler::CheckUrlCallback callback) { scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory( - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); common_name_mismatch_handler_ = std::make_unique<CommonNameMismatchHandler>( request_url_, url_loader_factory);
diff --git a/components/security_interstitials/content/stateful_ssl_host_state_delegate.cc b/components/security_interstitials/content/stateful_ssl_host_state_delegate.cc index e2c90c7..895823b 100644 --- a/components/security_interstitials/content/stateful_ssl_host_state_delegate.cc +++ b/components/security_interstitials/content/stateful_ssl_host_state_delegate.cc
@@ -218,12 +218,11 @@ content::WebContents* web_contents) { DCHECK(web_contents); content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - browser_context_, web_contents->GetMainFrame()->GetSiteInstance(), + browser_context_->GetStoragePartition( + web_contents->GetMainFrame()->GetSiteInstance(), false /* can_create */); if (!storage_partition || - storage_partition != content::BrowserContext::GetDefaultStoragePartition( - browser_context_)) { + storage_partition != browser_context_->GetDefaultStoragePartition()) { // Decisions for non-default storage partitions are stored in memory only; // see comment on declaration of // |allowed_certs_for_non_default_storage_partitions_|. @@ -297,12 +296,11 @@ return ALLOWED; content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - browser_context_, web_contents->GetMainFrame()->GetSiteInstance(), + browser_context_->GetStoragePartition( + web_contents->GetMainFrame()->GetSiteInstance(), false /* can_create */); if (!storage_partition || - storage_partition != content::BrowserContext::GetDefaultStoragePartition( - browser_context_)) { + storage_partition != browser_context_->GetDefaultStoragePartition()) { if (allowed_certs_for_non_default_storage_partitions_.find(host) == allowed_certs_for_non_default_storage_partitions_.end()) { return DENIED; @@ -397,12 +395,11 @@ DCHECK(web_contents); content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - browser_context_, web_contents->GetMainFrame()->GetSiteInstance(), + browser_context_->GetStoragePartition( + web_contents->GetMainFrame()->GetSiteInstance(), false /* can_create */); if (!storage_partition || - storage_partition != content::BrowserContext::GetDefaultStoragePartition( - browser_context_)) { + storage_partition != browser_context_->GetDefaultStoragePartition()) { return allowed_certs_for_non_default_storage_partitions_.find(host) != allowed_certs_for_non_default_storage_partitions_.end(); } @@ -451,8 +448,7 @@ const std::string& host) { RevokeUserAllowExceptions(host); auto* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser_context_) - ->GetNetworkContext(); + browser_context_->GetDefaultStoragePartition()->GetNetworkContext(); network_context->CloseIdleConnections(base::NullCallback()); }
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc index e0069af0..cb65ddf 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
@@ -14,6 +14,7 @@ #include "base/callback.h" #include "base/callback_helpers.h" #include "base/json/json_reader.h" +#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/stl_util.h" #include "base/strings/string_util.h" @@ -99,6 +100,11 @@ UMA_HISTOGRAM_ENUMERATION("Signin.GaiaCookieManager.Logout", logout_state); } +void RecordRemoveLocalAccountOutcome( + GaiaCookieManagerService::RemoveLocalAccountOutcome outcome) { + base::UmaHistogramEnumeration("Signin.RemoveLocalAccountOutcome", outcome); +} + } // namespace GaiaCookieManagerService::GaiaCookieRequest::SetAccountsParams:: @@ -665,11 +671,10 @@ void GaiaCookieManagerService::RemoveLoggedOutAccountByGaiaId( const std::string& gaia_id) { - // TODO(crbug.com/1078762): Add UMA for the various codepaths in this - // function. VLOG(1) << "GaiaCookieManagerService::RemoveLoggedOutAccountByGaiaId"; if (list_accounts_stale_) { + RecordRemoveLocalAccountOutcome(RemoveLocalAccountOutcome::kAccountsStale); return; } @@ -680,9 +685,13 @@ }) != 0; if (!accounts_updated) { + RecordRemoveLocalAccountOutcome( + RemoveLocalAccountOutcome::kSignedOutAccountMissing); return; } + RecordRemoveLocalAccountOutcome(RemoveLocalAccountOutcome::kSuccess); + if (gaia_accounts_updated_in_cookie_callback_) { gaia_accounts_updated_in_cookie_callback_.Run( listed_accounts_, signed_out_accounts_,
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h index 6bb2ae9b..2439837 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h
@@ -69,6 +69,19 @@ SET_ACCOUNTS }; + // The result of processing a request to remove an account (i.e. + // Google-Accounts-RemoveLocalAccount). Used as entry for histogram + // |Signin.RemoveLocalAccountOutcome|, hence entries should not be renumbered + // and numeric values should never be reused. Exposed publicly for testing + // purposes. + enum class RemoveLocalAccountOutcome { + kSuccess = 0, + kAccountsStale = 1, + // Missing means the account is not listed in |signed_out_accounts_|. + kSignedOutAccountMissing = 2, + kMaxValue = kSignedOutAccountMissing + }; + typedef base::OnceCallback<void(signin::SetAccountsInCookieResult)> SetAccountsInCookieCompletedCallback; typedef base::OnceCallback<void(const CoreAccountId&,
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc b/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc index 4e1dbca..3326598 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc
@@ -1138,6 +1138,7 @@ _, /*signed_out_accounts=*/ ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId2)), _)); EXPECT_CALL(helper, StartFetchingListAccounts()).Times(0); + base::HistogramTester histograms; helper.RemoveLoggedOutAccountByGaiaId(kTestGaiaId1); // Verify that ListAccounts wasn't triggered. @@ -1147,6 +1148,10 @@ ASSERT_TRUE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); EXPECT_THAT(signed_out_accounts, ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId2))); + + histograms.ExpectUniqueSample( + "Signin.RemoveLocalAccountOutcome", + GaiaCookieManagerService::RemoveLocalAccountOutcome::kSuccess, 1); } TEST_F(GaiaCookieManagerServiceTest, @@ -1181,6 +1186,7 @@ // The removal should be ignored because the account list is stale. EXPECT_CALL(observer, OnGaiaAccountsInCookieUpdated(_, _, _)).Times(0); EXPECT_CALL(helper, StartFetchingListAccounts()).Times(0); + base::HistogramTester histograms; helper.RemoveLoggedOutAccountByGaiaId(kTestGaiaId1); // Verify that ListAccounts wasn't triggered again. @@ -1189,10 +1195,14 @@ ASSERT_FALSE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); EXPECT_THAT(signed_out_accounts, ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId1))); + + histograms.ExpectUniqueSample( + "Signin.RemoveLocalAccountOutcome", + GaiaCookieManagerService::RemoveLocalAccountOutcome::kAccountsStale, 1); } TEST_F(GaiaCookieManagerServiceTest, - RemoveLoggedOutAccountByGaiaIdForUnknownAccount) { + RemoveLoggedOutAccountByGaiaIdForMissingAccount) { const std::string kTestGaiaId1 = "8"; const std::string kNonListedAccount = "9"; @@ -1220,6 +1230,7 @@ // The removal should be ignored because the Gaia ID is not listed/known. EXPECT_CALL(observer, OnGaiaAccountsInCookieUpdated(_, _, _)).Times(0); EXPECT_CALL(helper, StartFetchingListAccounts()).Times(0); + base::HistogramTester histograms; helper.RemoveLoggedOutAccountByGaiaId(kNonListedAccount); // Verify that ListAccounts wasn't triggered. @@ -1229,4 +1240,10 @@ ASSERT_TRUE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); EXPECT_THAT(signed_out_accounts, ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId1))); + + histograms.ExpectUniqueSample( + "Signin.RemoveLocalAccountOutcome", + GaiaCookieManagerService::RemoveLocalAccountOutcome:: + kSignedOutAccountMissing, + 1); }
diff --git a/components/spellcheck/browser/spelling_service_client.cc b/components/spellcheck/browser/spelling_service_client.cc index 22c9a43b..9c47f2251 100644 --- a/components/spellcheck/browser/spelling_service_client.cc +++ b/components/spellcheck/browser/spelling_service_client.cc
@@ -149,11 +149,10 @@ std::make_unique<TextCheckCallbackData>(std::move(simple_url_loader), std::move(callback), text)); network::SimpleURLLoader* loader = it->get()->simple_url_loader.get(); - auto url_loader_factory = - url_loader_factory_for_testing_ - ? url_loader_factory_for_testing_ - : content::BrowserContext::GetDefaultStoragePartition(context) - ->GetURLLoaderFactoryForBrowserProcess(); + auto url_loader_factory = url_loader_factory_for_testing_ + ? url_loader_factory_for_testing_ + : context->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(); loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie( url_loader_factory.get(), base::BindOnce(&SpellingServiceClient::OnSimpleLoaderComplete,
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index a12d780..e2e3ed58 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -1703,6 +1703,7 @@ <translation id="7481312909269577407">ফৰৱাৰ্ড কৰক</translation> <translation id="7485870689360869515">কোনো ডেটা বিচাৰি পোৱা নগ’ল।</translation> <translation id="7495528107193238112">এই সমলটো অৱৰোধ কৰা হৈছে। সমস্যাটো সমাধান কৰিবলৈ ছাইটৰ গৰাকীৰ সৈতে যোগাযোগ কৰক।</translation> +<translation id="7498193950643227031">এইটোৰ আকাৰ সলনি কৰিলে ই অস্বাভাৱিকভাৱে আচৰণ কৰিব পাৰে। আপুনি এতিয়া <ph name="SETTINGS" />ত এপৰ আকাৰ সলনি কৰিব পৰাটো সীমিত কৰিব পাৰে।</translation> <translation id="7503664977220660814">আপুনি এটা প্ৰৱঞ্চনামূলক ছাইটত এইমাত্ৰ নিজৰ পাছৱৰ্ডটো দিছে। Chromiumএ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> আৰু অন্য ছাইটসমূহ, য’ত আপুনি এই পাছৱৰ্ডটো ব্যৱহাৰ কৰে সেইবিলাকত ছেভ কৰি থোৱা আপোনাৰ পাছৱৰ্ডসমূহ এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।</translation> <translation id="7508255263130623398">উভতোৱা নীতিৰ ডিভাইচ আইডি খালী বা বর্তমান আইডি সৈতে অমিল</translation> <translation id="7508870219247277067">গাঢ় সেউজীয়া</translation> @@ -1910,6 +1911,7 @@ <translation id="8249296373107784235">নিষ্ফল কৰক</translation> <translation id="8249320324621329438">অন্তিমবাৰ বিচৰা হৈছিল:</translation> <translation id="8253091569723639551">বিলিঙৰ ঠিকনা আৱশ্যক</translation> +<translation id="8257387598443225809">এই এপ্টো ম'বাইলৰ বাবে ডিজাইন কৰা হৈছে</translation> <translation id="825929999321470778">ছেভ কৰি থোৱা সকলো পাছৱৰ্ড দেখুৱাওক</translation> <translation id="8261506727792406068">মচক</translation> <translation id="8262952874573525464">তলৰ অংশৰ কাষত চিলাওক</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index d26f8029..424fd42 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -1712,6 +1712,7 @@ <translation id="7481312909269577407">ফরওয়ার্ড</translation> <translation id="7485870689360869515">কোনো ডেটা পাওয়া যায়নি৷</translation> <translation id="7495528107193238112">এই কন্টেন্ট ব্লক করা হয়েছে। এই সমস্যার সমাধান করতে সাইটের মালিকের সাথে যোগাযোগ করুন।</translation> +<translation id="7498193950643227031">ছোট বড় করলে, এটি অপ্রত্যাশিতভাবে কাজ করতে পারে। আপনি এখন <ph name="SETTINGS" /> থেকে অ্যাপের ছোট বড় করার ক্ষমতা সীমিত করতে পারেন।</translation> <translation id="7503664977220660814">আপনি এইমাত্র একটি প্রতারণামূলক সাইটে আপনার পাসওয়ার্ড লিখেছেন। <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> এবং অন্যান্য সাইটে, যেখানে যেখানে আপনি এই পাসওয়ার্ডটি ব্যবহার করেন, Chromium আপনাকে সেইসব জায়গায় গিয়ে আপনার সেভ করা পাসওয়ার্ডগুলি পরিবর্তন করতে সাজেস্ট করছে।</translation> <translation id="7508255263130623398">ফিরে পাওয়া নীতির ডিভাইস আইডি খালি অথবা বর্তমান ডিভাইস আইডির সাথে মিলছে না</translation> <translation id="7508870219247277067">অ্যাভোকাডো সবুজ</translation> @@ -1920,6 +1921,7 @@ <translation id="8249296373107784235">বাতিল</translation> <translation id="8249320324621329438">সর্বশেষ প্রাপ্ত করেছে:</translation> <translation id="8253091569723639551">বিলিং ঠিকানা প্রয়োজন</translation> +<translation id="8257387598443225809">এই অ্যাপটি মোবাইলের কথা ভেবে তৈরি করা হয়েছে</translation> <translation id="825929999321470778">সেভ করা সমস্ত পাসওয়ার্ড দেখান</translation> <translation id="8261506727792406068">মুছুন</translation> <translation id="8262952874573525464">নিচে ধারের দিকে সেলাই</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index 0d06b4f..1e0007f6 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -1699,7 +1699,7 @@ <translation id="7481312909269577407">Vorwärts</translation> <translation id="7485870689360869515">Keine Daten gefunden</translation> <translation id="7495528107193238112">Dieser Inhalt ist blockiert. Setzen Sie sich mit dem Websiteinhaber in Verbindung, um das Problem zu beheben.</translation> -<translation id="7498193950643227031">Die App kann unerwartetes Verhalten aufweisen, wenn ihre Größe angepasst wird. Sie können jetzt die Möglichkeit zur Größenanpassung von Apps in den <ph name="SETTINGS" /> einschränken.</translation> +<translation id="7498193950643227031">Wenn die Größe von Apps geändert wird, kann das zu unerwartetem Verhalten führen. Sie können jetzt in den <ph name="SETTINGS" /> das Ändern der App-Größe einschränken.</translation> <translation id="7503664977220660814">Sie haben Ihr Passwort gerade auf einer verdächtigen Seite eingegeben. Chromium empfiehlt, Ihre gespeicherten Passwörter für <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> und alle anderen Websites, auf denen Sie dieses Passwort verwenden, zu prüfen.</translation> <translation id="7508255263130623398">Zurückgegebene Geräte-ID der Richtlinie ist leer oder entspricht nicht der aktuellen Geräte-ID</translation> <translation id="7508870219247277067">Avocadogrün</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index f396385..4223467 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -1710,7 +1710,7 @@ <translation id="7481312909269577407">Avancer</translation> <translation id="7485870689360869515">Aucune donnée n'a été trouvée.</translation> <translation id="7495528107193238112">Ce contenu est bloqué. Pour résoudre le problème, contactez le propriétaire du site.</translation> -<translation id="7498193950643227031">Une appli redimensionnée peut avoir un comportement inattendu. Vous pouvez limiter l'utilisation du redimensionnement d'applis dans <ph name="SETTINGS" />.</translation> +<translation id="7498193950643227031">Elle peut se comporter de façon inattendue si elle est redimensionnée. Vous pouvez limiter la capacité à redimensionner les applis dans <ph name="SETTINGS" />.</translation> <translation id="7503664977220660814">Vous venez de saisir votre mot de passe sur un site trompeur. Chromium vous recommande de vérifier vos mots de passe enregistrés pour <ph name="WEBSITE_1" /> et <ph name="WEBSITE_2" />, ainsi que les autres sites pour lesquels vous utilisez ce mot de passe actuellement.</translation> <translation id="7508255263130623398">L'ID d'appareil de la règle renvoyé est vide ou ne correspond pas à l'ID d'appareil actuel.</translation> <translation id="7508870219247277067">Vert avocat</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 041f1dd6..1bf877e 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -1711,6 +1711,7 @@ <translation id="7481312909269577407">ફોર્વર્ડ કરો</translation> <translation id="7485870689360869515">કોઈ ડેટા મળ્યો નથી.</translation> <translation id="7495528107193238112">આ કન્ટેન્ટ બ્લૉક કરવામાં આવ્યું છે. સમસ્યાનાં નિરાકરણ માટે, સાઇટના માલિકનો સંપર્ક કરો.</translation> +<translation id="7498193950643227031">જો તેનું કદ બદલવામાં આવે તો તે અનપેક્ષિત રીતે કાર્ય કરી શકે છે. હવે તમે <ph name="SETTINGS" />માં ઍપનું કદ બદલવાની ક્ષમતાને મર્યાદિત કરી શકો છો.</translation> <translation id="7503664977220660814">હમણાં જ કોઈ છેતરામણી સાઇટ પર તમે તમારો પાસવર્ડ દાખલ કર્યો. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> અને હવે તમે આ પાસવર્ડનો જ્યાં ઉપયોગ કરતા હો તે અન્ય સાઇટ પરના તમે સાચવેલા પાસવર્ડ ચેક કરવાનો Chromium સુઝાવ આપે છે.</translation> <translation id="7508255263130623398">પરત થયેલું પૉલિસી ડિવાઇસ id ખાલી છે અથવા વર્તમાન ટોકન સાથે મેળ ખાતું નથી</translation> <translation id="7508870219247277067">જમરૂખ જેવો લીલો</translation> @@ -1919,6 +1920,7 @@ <translation id="8249296373107784235">છોડો</translation> <translation id="8249320324621329438">છેલ્લું આનયન:</translation> <translation id="8253091569723639551">બિલિંગ સરનામું આવશ્યક</translation> +<translation id="8257387598443225809">આ ઍપ મોબાઇલ માટે ડિઝાઇન કરવામાં આવી છે</translation> <translation id="825929999321470778">બધા સાચવેલા પાસવર્ડ બતાવો</translation> <translation id="8261506727792406068">ડિલીટ કરો</translation> <translation id="8262952874573525464">નીચે કિનારી જોડવી</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index 9ad2cb8a..7a1cd5e 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -1712,6 +1712,7 @@ <translation id="7481312909269577407">पुढील</translation> <translation id="7485870689360869515">डेटा आढळला नाही.</translation> <translation id="7495528107193238112">हा आशय ब्लॉक केला गेला आहे. समस्येचे निराकरण करण्यासाठी साइटच्या मालकाशी संपर्क साधा.</translation> +<translation id="7498193950643227031">आकार बदलल्यास, ते अनपेक्षितपणे काम करू शकते. तुम्ही आता अॅप्सचा आकार बदलण्याची क्षमता <ph name="SETTINGS" /> मध्ये मर्यादित करू शकता.</translation> <translation id="7503664977220660814">तुम्ही आताच एका फसव्या साइटवर तुमचा पासवर्ड एंटर केला. तुम्ही हा पासवर्ड आता जेथे वापरता अशा <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> आणि इतर साइटसाठी तुमचे सेव्ह केलेले पासवर्ड तपासण्याची Chromium शिफारस करते.</translation> <translation id="7508255263130623398">परत केलेला धोरण डिव्हाइस आयडी रिक्त आहे किंवा वर्तमान डिव्हाइस आयडी शी जुळत नाही</translation> <translation id="7508870219247277067">हिरवे पिवळे</translation> @@ -1920,6 +1921,7 @@ <translation id="8249296373107784235">रद्द करा</translation> <translation id="8249320324621329438">अंतिम प्राप्त केलेले:</translation> <translation id="8253091569723639551">बिलिंग पत्ता आवश्यक आहे</translation> +<translation id="8257387598443225809">हे ॲप मोबाइलसाठी डिझाइन केले आहे</translation> <translation id="825929999321470778">सेव्ह केलेले सर्व पासवर्ड दाखवा</translation> <translation id="8261506727792406068">हटवा</translation> <translation id="8262952874573525464">एज स्टिच बॉटम</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb index 90b78aa..cd12f2b 100644 --- a/components/strings/components_strings_ne.xtb +++ b/components/strings/components_strings_ne.xtb
@@ -1708,6 +1708,7 @@ <translation id="7481312909269577407">अगाडि</translation> <translation id="7485870689360869515">कुनैपनि डाटा भेटिएन।</translation> <translation id="7495528107193238112">यो सामग्रीलाई रोक लगाइएको छ। यो समस्या समाधान गर्न उक्त साइटका मालिकसँग सम्पर्क गर्नुहोस्।</translation> +<translation id="7498193950643227031">तपाईंले एपको आकार बदल्नुभयो भने एपले अप्रत्याशित व्यवहार देखाउन सक्छ। तपाईं अब <ph name="SETTINGS" /> मा गई एपको आकार बदल्ने सुविधा सीमित पार्न सक्नुहुन्छ।</translation> <translation id="7503664977220660814">तपाईंले भर्खरै कुनै भ्रामक साइटमा आफ्नो पासवर्ड प्रविष्टि गर्नुभएको छ। Chromium तपाईंलाई अहिले नै <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> र तपाईंले हाल यो पासवर्ड प्रयोग गर्ने अन्य साइटका सुरक्षित गरिएका पासवर्डहरूको जाँच गर्न सिफारिस गर्छ।</translation> <translation id="7508255263130623398">फिर्ता गरिएको नीति सम्बन्धी यन्त्र खाली छ वा हालको यन्त्रको id सँग मेल खाँदैन</translation> <translation id="7508870219247277067">गाढा हरियो</translation> @@ -1916,6 +1917,7 @@ <translation id="8249296373107784235">रद्द गर्नुहोस्</translation> <translation id="8249320324621329438">पछिल्लो पटक ल्याइएको:</translation> <translation id="8253091569723639551">बिल पठाउने ठेगाना आवश्यक छ</translation> +<translation id="8257387598443225809">यो एप मोबाइलमा चलाउने प्रयोजनले बनाइएको हो</translation> <translation id="825929999321470778">सुरक्षित गरिएका सबै पासवर्डहरू देखाउनुहोस्</translation> <translation id="8261506727792406068">मेट्नुहोस्</translation> <translation id="8262952874573525464">फेदको किनारमा स्टिच</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index e88bb92..638c3f56 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -1697,6 +1697,7 @@ <translation id="7481312909269577407">ଅଗ୍ରଗତି</translation> <translation id="7485870689360869515">କୌଣସି ଡାଟା ମିଳିଲା ନାହିଁ।</translation> <translation id="7495528107193238112">ଏହି ବିଷୟବସ୍ତୁକୁ ବ୍ଲକ୍ କରାଯାଇଛି। ସମସ୍ୟାର ସମାଧାନ କରିବାକୁ ସାଇଟର ମାଲିକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation> +<translation id="7498193950643227031">ଯଦି ଆକାର ପରିବର୍ତ୍ତନ କରାଯାଏ ତେବେ ଏହା ଅପ୍ରତ୍ୟାଶିତ ଭାବେ କାମ କରିପାରେ। ଆପଣ ବର୍ତ୍ତମାନ <ph name="SETTINGS" />ରେ ଆପଗୁଡ଼ିକର ଆକାର ପରିବର୍ତ୍ତନ କରିବାର କ୍ଷମତାକୁ ସୀମିତ କରିପାରିବେ।</translation> <translation id="7503664977220660814">ଆପଣ ଏବେ ଏକ ପ୍ରତାରଣାମୂଳକ ସାଇଟରେ ଆପଣଙ୍କ ପାସୱାର୍ଡ ଲେଖିଛନ୍ତି। <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ଏବଂ ଆପଣ ବର୍ତ୍ତମାନ ଏହି ପାସୱାର୍ଡ ବ୍ୟବହାର କରିଥିବା ଅନ୍ୟ ସାଇଟଗୁଡ଼ିକ ପାଇଁ Chromium ଆପଣଙ୍କର ସେଭ୍ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିବାକୁ ସୁପାରିଶ କରେ।</translation> <translation id="7508255263130623398">ଫେରସ୍ତ ନୀତି ଡିଭାଇସ୍ id ଖାଲି ଅଛି କିମ୍ବା ବର୍ତ୍ତମାନର ଡିଭାଇସ୍ id ସହିତ ମେଳ ହେଉନାହିଁ</translation> <translation id="7508870219247277067">ଆଭୋକାଡୋ ସବୁଜ</translation> @@ -1905,6 +1906,7 @@ <translation id="8249296373107784235">ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="8249320324621329438">ଶେଷଥର ପ୍ରାପ୍ତ କରାଯାଇଥିବା:</translation> <translation id="8253091569723639551">ବିଲିଂ ଠିକଣା ଆବଶ୍ୟକ</translation> +<translation id="8257387598443225809">ଏହି ଆପକୁ ମୋବାଇଲ ପାଇଁ ଡିଜାଇନ୍ କରାଯାଇଛି</translation> <translation id="825929999321470778">ସେଭ୍ ଥିବା ସମସ୍ତ ପାସ୍ୱର୍ଡ ଦେଖାନ୍ତୁ</translation> <translation id="8261506727792406068">ବିଲୋପ</translation> <translation id="8262952874573525464">ତଳ ପଟରେ ଏଜ୍ ଷ୍ଟିଚ୍</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index 0061123..41052c5 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -1712,6 +1712,7 @@ <translation id="7481312909269577407">ఫార్వర్డ్</translation> <translation id="7485870689360869515">డేటా కనుగొనబడలేదు.</translation> <translation id="7495528107193238112">ఈ కంటెంట్ బ్లాక్ అయింది. ఈ సమస్య పరిష్కారం కోసం సైట్ ఓనర్ను సంప్రదించండి.</translation> +<translation id="7498193950643227031">పరిమాణం మార్చబడినట్లయితే, అది అనుకోనివిధంగా ప్రవర్తించవచ్చు. <ph name="SETTINGS" />లో మీరు ఇప్పుడు యాప్ల పరిమాణం మార్చే సామర్థ్యాన్ని పరిమితి చేయవచ్చు.</translation> <translation id="7503664977220660814">మీరు మోసపూరితమైన సైట్లో మీ పాస్వర్డ్ను ఎంటర్ చేశారు. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, ఇతర సైట్లలో ప్రస్తుతం మీరు ఎక్కడైతే ఈ పాస్వర్డ్ను ఉపయోగిస్తారో, అక్కడ మీ సేవ్ చేసిన పాస్వర్డ్లను తనిఖీ చేసుకోమని Chromium సిఫార్సు చేస్తోంది.</translation> <translation id="7508255263130623398">అందించబడిన విధాన పరికర id ఖాళీగా ఉంది లేదా ప్రస్తుత పరికర idకి సరిపోలలేదు</translation> <translation id="7508870219247277067">వెన్నపండు ఆకుపచ్చ</translation> @@ -1920,6 +1921,7 @@ <translation id="8249296373107784235">రద్దుచేయి</translation> <translation id="8249320324621329438">చివరగా పొందబడినవి:</translation> <translation id="8253091569723639551">బిల్లింగ్ చిరునామా ఆవశ్యకం</translation> +<translation id="8257387598443225809">ఈ యాప్ మొబైల్ కోసం రూపొందించబడింది</translation> <translation id="825929999321470778">సేవ్ చేసిన అన్ని పాస్వర్డ్లను చూపండి</translation> <translation id="8261506727792406068">తొలగించు</translation> <translation id="8262952874573525464">దిగువ భాగంలో కుట్టిన అంచులు</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index 1082a0f..e25fab8 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -1716,6 +1716,7 @@ <translation id="7481312909269577407">فارورڈ کریں</translation> <translation id="7485870689360869515">کوئی ڈیٹا نہیں ملا۔</translation> <translation id="7495528107193238112">یہ مواد مسدود ہے۔ مسئلے کو حل کرنے کے لیے سائٹ کے مالک سے رابطہ کریں۔</translation> +<translation id="7498193950643227031">سائز تبدیل ہونے پر ممکن ہے کہ یہ غیر متوقع طور پر برتاؤ کرے۔ اب آپ <ph name="SETTINGS" /> میں ایپس کا سائز تبدیل کرنے کی اہلیت کو محدود کر سکتے ہیں۔</translation> <translation id="7503664977220660814">آپ نے ابھی ایک پُرفریب سائٹ پر اپنا پاس ورڈ درج کیا ہے۔ Chromium <ph name="WEBSITE_1" />، <ph name="WEBSITE_2" /> اور دیگر ایسی سائٹس کے لیے اپنے محفوظ کردہ پاس ورڈز کو ابھی چیک کرنے کی تجویز کرتا ہے جہاں آپ اس پاس ورڈ کا استعمال کرتے ہیں۔</translation> <translation id="7508255263130623398">واپس کردہ پالیسی آلہ id خالی ہے یا موجودہ آلہ id سے مماثل نہیں ہے</translation> <translation id="7508870219247277067">مَگَر ناشپاتی سبز</translation> @@ -1924,6 +1925,7 @@ <translation id="8249296373107784235">منسوخ کریں</translation> <translation id="8249320324621329438">آخری بازیابی:</translation> <translation id="8253091569723639551">بلنگ پتہ درکار ہے</translation> +<translation id="8257387598443225809">یہ ایپ موبائل کے لیے بنائی گئی ہے</translation> <translation id="825929999321470778">سبھی 'محفوظ پاسورڈز' دکھائيں</translation> <translation id="8261506727792406068">حذف کریں</translation> <translation id="8262952874573525464">نیچے کنارے کی سلائی</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 11a5b066..44917173 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -1696,6 +1696,7 @@ <translation id="7481312909269577407">前进</translation> <translation id="7485870689360869515">找不到数据。</translation> <translation id="7495528107193238112">该内容被屏蔽了。请联系网站所有者以解决此问题。</translation> +<translation id="7498193950643227031">如果调整大小,应用可能会出现意外行为。现在,您可从“<ph name="SETTINGS" />”中限制调整应用大小的功能。</translation> <translation id="7503664977220660814">您刚刚在一个诈骗网站中输入了密码。Chromium 建议您立即前往 <ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> 以及使用此密码的其他网站检查您保存的密码。</translation> <translation id="7508255263130623398">返回的政策设备 ID 为空,或与当前的设备 ID 不一致</translation> <translation id="7508870219247277067">黄绿色</translation> @@ -1904,6 +1905,7 @@ <translation id="8249296373107784235">取消</translation> <translation id="8249320324621329438">最后一次抓取时间:</translation> <translation id="8253091569723639551">账单邮寄地址是必填项</translation> +<translation id="8257387598443225809">此应用是专为移动设备设计的</translation> <translation id="825929999321470778">显示所有已保存的密码</translation> <translation id="8261506727792406068">删除</translation> <translation id="8262952874573525464">边缘装订(底部)</translation>
diff --git a/components/sync/driver/glue/sync_engine_backend.cc b/components/sync/driver/glue/sync_engine_backend.cc index 7419bf2..1468a2a 100644 --- a/components/sync/driver/glue/sync_engine_backend.cc +++ b/components/sync/driver/glue/sync_engine_backend.cc
@@ -13,12 +13,13 @@ #include "base/metrics/histogram_macros.h" #include "base/sequenced_task_runner.h" #include "base/threading/sequenced_task_runner_handle.h" +#include "components/invalidation/impl/invalidation_switches.h" #include "components/invalidation/public/invalidation_util.h" -#include "components/invalidation/public/topic_invalidation_map.h" #include "components/sync/base/invalidation_adapter.h" #include "components/sync/base/legacy_directory_deletion.h" #include "components/sync/base/sync_base_switches.h" #include "components/sync/driver/configure_context.h" +#include "components/sync/driver/glue/sync_engine_impl.h" #include "components/sync/driver/model_type_controller.h" #include "components/sync/driver/sync_driver_switches.h" #include "components/sync/engine/cycle/sync_cycle_snapshot.h" @@ -37,18 +38,10 @@ // Helper macros to log with the syncer thread name; useful when there // are multiple syncers involved. -#define SLOG(severity) LOG(severity) << name_ << ": " - #define SDVLOG(verbose_level) DVLOG(verbose_level) << name_ << ": " -namespace net { -class URLFetcher; -} - namespace syncer { -class EngineComponentsFactory; - namespace { const base::FilePath::CharType kNigoriStorageFilename[] = @@ -351,14 +344,17 @@ void SyncEngineBackend::DoShutdown(ShutdownReason reason) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // |nigori_controller_| and |sync_manager_| might be null if DoInitialize() - // wasn't called. - if (nigori_controller_) { - DCHECK(sync_manager_); + // |sync_manager_| and |nigori_controller_| may be null if DoInitialize() was + // never called. + if (sync_manager_) { + // However, |sync_manager_| and |nigori_controller_| are always either both + // null or both non-null. + DCHECK(nigori_controller_); + sync_manager_->GetModelTypeConnector()->DisconnectDataType(NIGORI); nigori_controller_->Stop(reason, base::DoNothing()); - } - if (sync_manager_) { + nigori_controller_.reset(); + sync_manager_->RemoveObserver(this); sync_manager_->ShutdownOnSyncThread(); sync_manager_.reset();
diff --git a/components/sync/driver/glue/sync_engine_backend.h b/components/sync/driver/glue/sync_engine_backend.h index 60b6cae..6b44ae6 100644 --- a/components/sync/driver/glue/sync_engine_backend.h +++ b/components/sync/driver/glue/sync_engine_backend.h
@@ -5,8 +5,6 @@ #ifndef COMPONENTS_SYNC_DRIVER_GLUE_SYNC_ENGINE_BACKEND_H_ #define COMPONENTS_SYNC_DRIVER_GLUE_SYNC_ENGINE_BACKEND_H_ -#include <stdint.h> - #include <map> #include <memory> #include <string> @@ -16,18 +14,18 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/sequence_checker.h" -#include "components/invalidation/impl/invalidation_switches.h" #include "components/invalidation/public/invalidation.h" +#include "components/invalidation/public/invalidator_state.h" +#include "components/invalidation/public/topic_invalidation_map.h" #include "components/sync/base/system_encryptor.h" -#include "components/sync/driver/glue/sync_engine_impl.h" #include "components/sync/engine/cancelation_signal.h" #include "components/sync/engine/model_type_configurer.h" #include "components/sync/engine/shutdown_reason.h" #include "components/sync/engine/sync_encryption_handler.h" +#include "components/sync/engine/sync_engine.h" #include "components/sync/engine/sync_manager.h" #include "components/sync/engine/sync_status_observer.h" #include "google_apis/gaia/core_account_id.h" -#include "url/gurl.h" namespace syncer { @@ -68,7 +66,7 @@ const base::FilePath& sync_data_folder, const base::WeakPtr<SyncEngineImpl>& host); - // SyncManager::Observer implementation. The Core just acts like an air + // SyncManager::Observer implementation. The Backend just acts like an air // traffic controller here, forwarding incoming messages to appropriate // landing threads. void OnSyncCycleCompleted(const SyncCycleSnapshot& snapshot) override; @@ -80,6 +78,12 @@ // SyncStatusObserver implementation. void OnSyncStatusChanged(const SyncStatus& status) override; + // Note: + // + // The Do* methods are the various entry points from our SyncEngineImpl. + // They are all called on the sync thread to actually perform synchronous (and + // potentially blocking) operations. + // Forwards an invalidation state change to the sync manager. void DoOnInvalidatorStateChange(invalidation::InvalidatorState state); @@ -87,12 +91,6 @@ void DoOnIncomingInvalidation( const invalidation::TopicInvalidationMap& invalidation_map); - // Note: - // - // The Do* methods are the various entry points from our SyncEngineImpl. - // They are all called on the sync thread to actually perform synchronous (and - // potentially blocking) syncapi operations. - // // Called to perform initialization of the syncapi on behalf of // SyncEngine::Initialize. void DoInitialize(SyncEngine::InitParams params, @@ -147,12 +145,6 @@ ModelTypeSet types_to_config, base::OnceCallback<void(ModelTypeSet, ModelTypeSet)> ready_task); - // Set the base request context to use when making HTTP calls. - // This method will add a reference to the context to persist it - // on the IO thread. Must be removed from IO thread. - - SyncManager* sync_manager() { return sync_manager_.get(); } - void SendBufferedProtocolEventsAndEnableForwarding(); void DisableProtocolEventForwarding();
diff --git a/components/sync/driver/glue/sync_engine_impl.h b/components/sync/driver/glue/sync_engine_impl.h index c5abde4..2d8ee3e6 100644 --- a/components/sync/driver/glue/sync_engine_impl.h +++ b/components/sync/driver/glue/sync_engine_impl.h
@@ -5,15 +5,12 @@ #ifndef COMPONENTS_SYNC_DRIVER_GLUE_SYNC_ENGINE_IMPL_H_ #define COMPONENTS_SYNC_DRIVER_GLUE_SYNC_ENGINE_IMPL_H_ -#include <stdint.h> - #include <map> #include <memory> #include <string> #include <vector> -#include "base/callback.h" -#include "base/compiler_specific.h" +#include "base/callback_forward.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" @@ -31,8 +28,6 @@ #include "components/sync/engine/sync_engine.h" #include "components/sync/engine/sync_status.h" #include "components/sync/invalidations/invalidations_listener.h" -#include "components/sync/protocol/encryption.pb.h" -#include "components/sync/protocol/sync_protocol_error.h" namespace invalidation { class InvalidationService; @@ -47,6 +42,7 @@ class ProtocolEvent; class SyncEngineBackend; class SyncInvalidationsService; +struct SyncProtocolError; class SyncTransportDataPrefs; // The only real implementation of the SyncEngine. See that interface's
diff --git a/components/sync/engine/sync_engine.h b/components/sync/engine/sync_engine.h index 80b2bb1..866b329 100644 --- a/components/sync/engine/sync_engine.h +++ b/components/sync/engine/sync_engine.h
@@ -5,16 +5,14 @@ #ifndef COMPONENTS_SYNC_ENGINE_SYNC_ENGINE_H_ #define COMPONENTS_SYNC_ENGINE_SYNC_ENGINE_H_ -#include <map> #include <memory> #include <string> #include <vector> -#include "base/callback.h" -#include "base/compiler_specific.h" +#include "base/callback_forward.h" #include "base/files/file_path.h" #include "base/macros.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "components/signin/public/identity_manager/account_info.h" #include "components/sync/base/extensions_activity.h" @@ -27,7 +25,6 @@ #include "components/sync/engine/sync_credentials.h" #include "components/sync/engine/sync_encryption_handler.h" #include "components/sync/engine/sync_manager_factory.h" -#include "google_apis/gaia/core_account_id.h" #include "url/gurl.h" namespace syncer {
diff --git a/components/sync/protocol/vault.proto b/components/sync/protocol/vault.proto index adcb452..7ba8e41 100644 --- a/components/sync/protocol/vault.proto +++ b/components/sync/protocol/vault.proto
@@ -20,8 +20,15 @@ optional bytes rotation_proof = 2; } +message SecurityDomainDetails { + message SyncDetails { optional bool degraded_recoverability = 1; } + + optional SyncDetails sync_details = 1; +} + message SecurityDomain { optional string name = 1; + optional SecurityDomainDetails security_domain_details = 3; } message SecurityDomainMember {
diff --git a/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc b/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc index 85e374d..32ffa73 100644 --- a/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc +++ b/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc
@@ -84,6 +84,11 @@ std::unique_ptr<SecureBoxKeyPair> device_key_pair, DownloadNewKeysCallback callback), (override)); + MOCK_METHOD(std::unique_ptr<Request>, + RetrieveIsRecoverabilityDegraded, + (const CoreAccountInfo& account_info, + IsRecoverabilityDegradedCallback), + (override)); }; class StandaloneTrustedVaultBackendTest : public testing::Test {
diff --git a/components/sync/trusted_vault/trusted_vault_connection.h b/components/sync/trusted_vault/trusted_vault_connection.h index f45dfa8..35d3c28 100644 --- a/components/sync/trusted_vault/trusted_vault_connection.h +++ b/components/sync/trusted_vault/trusted_vault_connection.h
@@ -43,6 +43,13 @@ kOtherError }; +enum class TrustedVaultRecoverabilityStatus { + // Recoverability status not retrieved due to network, http or protocol error. + kError, + kNotDegraded, + kDegraded +}; + enum class AuthenticationFactorType { kPhysicalDevice }; struct TrustedVaultKeyAndVersion { @@ -65,6 +72,8 @@ base::OnceCallback<void(TrustedVaultDownloadKeysStatus, const std::vector<std::vector<uint8_t>>& /*keys*/, int /*last_key_version*/)>; + using IsRecoverabilityDegradedCallback = + base::OnceCallback<void(TrustedVaultRecoverabilityStatus)>; // Used to control ongoing request lifetime, destroying Request object causes // request cancellation. @@ -107,6 +116,13 @@ last_trusted_vault_key_and_version, std::unique_ptr<SecureBoxKeyPair> device_key_pair, DownloadNewKeysCallback callback) WARN_UNUSED_RESULT = 0; + + // Asynchronously attempts to retrieve degraded recoverability status from the + // trusted vault server. Caller should hold returned request object until + // |callback| call or until request needs to be cancelled. + virtual std::unique_ptr<Request> RetrieveIsRecoverabilityDegraded( + const CoreAccountInfo& account_info, + IsRecoverabilityDegradedCallback callback) WARN_UNUSED_RESULT = 0; }; } // namespace syncer
diff --git a/components/sync/trusted_vault/trusted_vault_connection_impl.cc b/components/sync/trusted_vault/trusted_vault_connection_impl.cc index 5899b65..be0e51af 100644 --- a/components/sync/trusted_vault/trusted_vault_connection_impl.cc +++ b/components/sync/trusted_vault/trusted_vault_connection_impl.cc
@@ -119,6 +119,37 @@ processed_response.last_key_version); } +void ProcessRetrieveIsRecoverabilityDegradedResponse( + TrustedVaultConnection::IsRecoverabilityDegradedCallback callback, + TrustedVaultRequest::HttpStatus http_status, + const std::string& response_body) { + // TODO(crbug.com/1201659): consider special handling when security domain + // doesn't exist. + switch (http_status) { + case TrustedVaultRequest::HttpStatus::kSuccess: + break; + case TrustedVaultRequest::HttpStatus::kOtherError: + case TrustedVaultRequest::HttpStatus::kNotFound: + case TrustedVaultRequest::HttpStatus::kFailedPrecondition: + std::move(callback).Run(TrustedVaultRecoverabilityStatus::kError); + return; + } + sync_pb::SecurityDomain security_domain; + if (!security_domain.ParseFromString(response_body) || + !security_domain.security_domain_details().has_sync_details()) { + std::move(callback).Run(TrustedVaultRecoverabilityStatus::kError); + return; + } + TrustedVaultRecoverabilityStatus status = + TrustedVaultRecoverabilityStatus::kNotDegraded; + if (security_domain.security_domain_details() + .sync_details() + .degraded_recoverability()) { + status = TrustedVaultRecoverabilityStatus::kDegraded; + } + std::move(callback).Run(status); +} + } // namespace TrustedVaultConnectionImpl::TrustedVaultConnectionImpl( @@ -185,6 +216,25 @@ return request; } +std::unique_ptr<TrustedVaultConnection::Request> +TrustedVaultConnectionImpl::RetrieveIsRecoverabilityDegraded( + const CoreAccountInfo& account_info, + IsRecoverabilityDegradedCallback callback) { + auto request = std::make_unique<TrustedVaultRequest>( + TrustedVaultRequest::HttpMethod::kGet, + GURL(trusted_vault_service_url_.spec() + + kGetSecurityDomainURLPathAndQuery), + /*serialized_request_proto=*/base::nullopt); + + request->FetchAccessTokenAndSendRequest( + account_info.account_id, GetOrCreateURLLoaderFactory(), + access_token_fetcher_.get(), + base::BindOnce(&ProcessRetrieveIsRecoverabilityDegradedResponse, + std::move(callback))); + + return request; +} + scoped_refptr<network::SharedURLLoaderFactory> TrustedVaultConnectionImpl::GetOrCreateURLLoaderFactory() { if (!url_loader_factory_) {
diff --git a/components/sync/trusted_vault/trusted_vault_connection_impl.h b/components/sync/trusted_vault/trusted_vault_connection_impl.h index c9c6106..dae2392 100644 --- a/components/sync/trusted_vault/trusted_vault_connection_impl.h +++ b/components/sync/trusted_vault/trusted_vault_connection_impl.h
@@ -51,6 +51,10 @@ std::unique_ptr<SecureBoxKeyPair> device_key_pair, DownloadNewKeysCallback callback) override; + std::unique_ptr<Request> RetrieveIsRecoverabilityDegraded( + const CoreAccountInfo& account_info, + IsRecoverabilityDegradedCallback callback) override; + private: // SharedURLLoaderFactory is created lazily, because it needs to be done on // the backend sequence, while this class ctor is called on UI thread.
diff --git a/components/sync/trusted_vault/trusted_vault_connection_impl_unittest.cc b/components/sync/trusted_vault/trusted_vault_connection_impl_unittest.cc index c658d2ac..277eb74 100644 --- a/components/sync/trusted_vault/trusted_vault_connection_impl_unittest.cc +++ b/components/sync/trusted_vault/trusted_vault_connection_impl_unittest.cc
@@ -48,6 +48,16 @@ return SecureBoxKeyPair::CreateByPrivateKeyImport(private_key_bytes); } +sync_pb::SecurityDomain MakeSecurityDomainWithDegradedRecoverability( + bool recoverability_degraded) { + sync_pb::SecurityDomain security_domain; + security_domain.set_name(kSyncSecurityDomainName); + security_domain.mutable_security_domain_details() + ->mutable_sync_details() + ->set_degraded_recoverability(recoverability_degraded); + return security_domain; +} + class FakeTrustedVaultAccessTokenFetcher : public TrustedVaultAccessTokenFetcher { public: @@ -128,6 +138,15 @@ /*content=*/std::string(), response_http_code); } + bool RespondToGetSecurityDomainRequest(net::HttpStatusCode response_http_code, + const std::string& response_body) { + // Allow request to reach |test_url_loader_factory_|. + base::RunLoop().RunUntilIdle(); + return test_url_loader_factory_.SimulateResponseForPendingRequest( + GetFullGetSecurityDomainURLForTesting(kTestURL).spec(), response_body, + response_http_code); + } + const std::vector<uint8_t> kTrustedVaultKey = {1, 2, 3, 4}; const GURL kTestURL = GURL("https://test.com/test"); @@ -487,6 +506,121 @@ RespondToGetSecurityDomainMemberRequest(net::HTTP_OK); } +TEST_F(TrustedVaultConnectionImplTest, + ShouldSendGetSecurityDomainRequestWhenRetrievingRecoverability) { + std::unique_ptr<TrustedVaultConnection::Request> request = + connection()->RetrieveIsRecoverabilityDegraded( + /*account_info=*/CoreAccountInfo(), + TrustedVaultConnection::IsRecoverabilityDegradedCallback()); + ASSERT_THAT(request, NotNull()); + + const network::TestURLLoaderFactory::PendingRequest* pending_http_request = + GetPendingHTTPRequest(); + ASSERT_THAT(pending_http_request, NotNull()); + + const network::ResourceRequest& resource_request = + pending_http_request->request; + EXPECT_THAT(resource_request.method, Eq("GET")); + EXPECT_THAT(resource_request.url, + Eq(GetFullGetSecurityDomainURLForTesting(kTestURL))); +} + +TEST_F(TrustedVaultConnectionImplTest, + ShouldHandleValidResponseWhenRetrievingRecoverability) { + base::MockCallback<TrustedVaultConnection::IsRecoverabilityDegradedCallback> + callback; + + std::unique_ptr<TrustedVaultConnection::Request> request = + connection()->RetrieveIsRecoverabilityDegraded( + /*account_info=*/CoreAccountInfo(), callback.Get()); + ASSERT_THAT(request, NotNull()); + + EXPECT_CALL(callback, Run(TrustedVaultRecoverabilityStatus::kNotDegraded)); + EXPECT_TRUE(RespondToGetSecurityDomainRequest( + net::HTTP_OK, + /*response_body=*/MakeSecurityDomainWithDegradedRecoverability( + /*recoverability_degraded=*/false) + .SerializeAsString())); + testing::Mock::VerifyAndClearExpectations(&callback); + + request = connection()->RetrieveIsRecoverabilityDegraded( + /*account_info=*/CoreAccountInfo(), callback.Get()); + ASSERT_THAT(request, NotNull()); + + EXPECT_CALL(callback, Run(TrustedVaultRecoverabilityStatus::kDegraded)); + EXPECT_TRUE(RespondToGetSecurityDomainRequest( + net::HTTP_OK, + /*response_body=*/MakeSecurityDomainWithDegradedRecoverability( + /*recoverability_degraded=*/true) + .SerializeAsString())); +} + +TEST_F(TrustedVaultConnectionImplTest, + ShouldHandleFailedRequestWhenRetrievingRecoverability) { + base::MockCallback<TrustedVaultConnection::IsRecoverabilityDegradedCallback> + callback; + + std::unique_ptr<TrustedVaultConnection::Request> request = + connection()->RetrieveIsRecoverabilityDegraded( + /*account_info=*/CoreAccountInfo(), callback.Get()); + ASSERT_THAT(request, NotNull()); + + EXPECT_CALL(callback, Run(TrustedVaultRecoverabilityStatus::kError)); + EXPECT_TRUE(RespondToGetSecurityDomainRequest( + net::HTTP_INTERNAL_SERVER_ERROR, + /*response_body=*/MakeSecurityDomainWithDegradedRecoverability( + /*recoverability_degraded=*/false) + .SerializeAsString())); +} + +TEST_F(TrustedVaultConnectionImplTest, + ShouldHandleCorruptedResponseWhenRetrievingRecoverability) { + base::MockCallback<TrustedVaultConnection::IsRecoverabilityDegradedCallback> + callback; + + std::unique_ptr<TrustedVaultConnection::Request> request = + connection()->RetrieveIsRecoverabilityDegraded( + /*account_info=*/CoreAccountInfo(), callback.Get()); + ASSERT_THAT(request, NotNull()); + + EXPECT_CALL(callback, Run(TrustedVaultRecoverabilityStatus::kError)); + // Respond with invalid proto. + EXPECT_TRUE( + RespondToGetSecurityDomainRequest(net::HTTP_OK, + /*response_body=*/"invalid proto")); + + request = connection()->RetrieveIsRecoverabilityDegraded( + /*account_info=*/CoreAccountInfo(), callback.Get()); + ASSERT_THAT(request, NotNull()); + + EXPECT_CALL(callback, Run(TrustedVaultRecoverabilityStatus::kError)); + // Respond with empty proto. + EXPECT_TRUE(RespondToGetSecurityDomainRequest( + net::HTTP_OK, + /*response_body=*/sync_pb::SecurityDomain().SerializeAsString())); +} + +TEST_F(TrustedVaultConnectionImplTest, + ShouldCancelRequestWhenRetrievingRecoverability) { + base::MockCallback<TrustedVaultConnection::IsRecoverabilityDegradedCallback> + callback; + + std::unique_ptr<TrustedVaultConnection::Request> request = + connection()->RetrieveIsRecoverabilityDegraded( + /*account_info=*/CoreAccountInfo(), callback.Get()); + ASSERT_THAT(request, NotNull()); + + EXPECT_CALL(callback, Run).Times(0); + request.reset(); + // Returned value isn't checked here, because the request can be cancelled + // before reaching TestURLLoaderFactory. + RespondToGetSecurityDomainRequest( + net::HTTP_OK, + /*response_body=*/MakeSecurityDomainWithDegradedRecoverability( + /*recoverability_degraded=*/false) + .SerializeAsString()); +} + } // namespace } // namespace syncer
diff --git a/components/sync/trusted_vault/trusted_vault_server_constants.cc b/components/sync/trusted_vault/trusted_vault_server_constants.cc index 8d00029..98a6469 100644 --- a/components/sync/trusted_vault/trusted_vault_server_constants.cc +++ b/components/sync/trusted_vault/trusted_vault_server_constants.cc
@@ -20,6 +20,8 @@ const char kSecurityDomainMemberNamePrefix[] = "users/me/members/"; const char kJoinSecurityDomainsURLPath[] = "users/me/securitydomains/chromesync:join"; +extern const char kGetSecurityDomainURLPathAndQuery[] = + "users/me/securitydomains/chromesync?view=2"; std::vector<uint8_t> GetConstantTrustedVaultKey() { return std::vector<uint8_t>(16, 0); @@ -49,4 +51,10 @@ kQueryParameterAlternateOutputKey, kQueryParameterAlternateOutputProto); } +GURL GetFullGetSecurityDomainURLForTesting(const GURL& server_url) { + return net::AppendQueryParameter( + /*url=*/GURL(server_url.spec() + kGetSecurityDomainURLPathAndQuery), + kQueryParameterAlternateOutputKey, kQueryParameterAlternateOutputProto); +} + } // namespace syncer
diff --git a/components/sync/trusted_vault/trusted_vault_server_constants.h b/components/sync/trusted_vault/trusted_vault_server_constants.h index c3cc17d..0b188b3 100644 --- a/components/sync/trusted_vault/trusted_vault_server_constants.h +++ b/components/sync/trusted_vault/trusted_vault_server_constants.h
@@ -16,6 +16,7 @@ extern const char kSyncSecurityDomainName[]; extern const char kSecurityDomainMemberNamePrefix[]; extern const char kJoinSecurityDomainsURLPath[]; +extern const char kGetSecurityDomainURLPathAndQuery[]; std::vector<uint8_t> GetConstantTrustedVaultKey(); std::string GetGetSecurityDomainMemberURLPathAndQuery( @@ -26,6 +27,8 @@ GURL GetFullGetSecurityDomainMemberURLForTesting( const GURL& server_url, base::span<const uint8_t> public_key); +GURL GetFullGetSecurityDomainURLForTesting(const GURL& server_url); + } // namespace syncer #endif // COMPONENTS_SYNC_TRUSTED_VAULT_TRUSTED_VAULT_SERVER_CONSTANTS_H_
diff --git a/components/url_pattern_index/url_rule_test_support.cc b/components/url_pattern_index/url_rule_test_support.cc index 6ab0d06..ada11a7 100644 --- a/components/url_pattern_index/url_rule_test_support.cc +++ b/components/url_pattern_index/url_rule_test_support.cc
@@ -3,9 +3,9 @@ // found in the LICENSE file. #include "components/url_pattern_index/url_rule_test_support.h" -#include "base/strings/string_piece.h" #include "base/check.h" +#include "base/strings/string_piece.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" #include "url/gurl.h" #include "url/origin.h"
diff --git a/components/viz/service/display/direct_renderer.cc b/components/viz/service/display/direct_renderer.cc index e973fc8..c9e27f3 100644 --- a/components/viz/service/display/direct_renderer.cc +++ b/components/viz/service/display/direct_renderer.cc
@@ -33,6 +33,7 @@ #include "components/viz/service/display/output_surface.h" #include "components/viz/service/display/skia_output_surface.h" #include "ui/gfx/geometry/quad_f.h" +#include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/rect_conversions.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/transform.h" @@ -740,18 +741,6 @@ if (render_pass == current_frame()->root_render_pass) return false; - // TODO(crbug.com/783275): It's possible to skip a child RenderPass if damage - // does not overlap it, since that means nothing has changed: - // ComputeScissorRectForRenderPass(render_pass).IsEmpty() - // However that caused crashes where the RenderPass' texture was not present - // (never seen the RenderPass before, or the texture was deleted when not used - // for a frame). It could avoid skipping if there is no texture present, which - // is what was done for a while, but this seems to papering over a missing - // damage problem, or we're failing to understand the system wholey. - // If attempted again this should probably CHECK() that the texture exists, - // and attempt to figure out where the new RenderPass texture without damage - // is coming from. - // If the RenderPass wants to be cached, then we only draw it if we need to. // When damage is present, then we can't skip the RenderPass. Or if the // texture does not exist (first frame, or was deleted) then we can't skip @@ -762,6 +751,13 @@ return IsRenderPassResourceAllocated(render_pass->id); } + // Only render what is damaged. If there are copy requests associated with + // this pass the damage should always be the full |output_rect|. + if (use_partial_swap_ && + ComputeScissorRectForRenderPass(render_pass).IsEmpty()) { + return true; + } + return false; } @@ -875,8 +871,10 @@ // If the root damage rect has been expanded due to overlays, all the other // damage rect calculations are incorrect. - if (!root_render_pass->damage_rect.Contains(root_damage_rect)) + if (!root_damage_rect.IsEmpty() && + !root_render_pass->damage_rect.Contains(root_damage_rect)) { return render_pass->output_rect; + } DCHECK(render_pass->copy_requests.empty() || (render_pass->damage_rect == render_pass->output_rect));
diff --git a/components/webapps/browser/installable/installable_manager.cc b/components/webapps/browser/installable/installable_manager.cc index f23766b..f2f8958 100644 --- a/components/webapps/browser/installable/installable_manager.cc +++ b/components/webapps/browser/installable/installable_manager.cc
@@ -239,8 +239,8 @@ // This is null in unit tests. if (web_contents) { content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - web_contents->GetBrowserContext(), web_contents->GetSiteInstance()); + web_contents->GetBrowserContext()->GetStoragePartition( + web_contents->GetSiteInstance()); DCHECK(storage_partition); service_worker_context_ = storage_partition->GetServiceWorkerContext();
diff --git a/components/webdata/common/web_database_migration_unittest.cc b/components/webdata/common/web_database_migration_unittest.cc index 8173eb66..f87805c 100644 --- a/components/webdata/common/web_database_migration_unittest.cc +++ b/components/webdata/common/web_database_migration_unittest.cc
@@ -346,9 +346,10 @@ EXPECT_EQ("00000000-0000-0000-0000-000000000001", s_profiles.ColumnString(0)); EXPECT_EQ(u"Google, Inc.", s_profiles.ColumnString16(1)); - EXPECT_EQ(ASCIIToUTF16("1950 Charleston Rd.\n" - "(2nd floor)"), - s_profiles.ColumnString16(2)); + EXPECT_EQ( + u"1950 Charleston Rd.\n" + u"(2nd floor)", + s_profiles.ColumnString16(2)); EXPECT_EQ(std::u16string(), s_profiles.ColumnString16(3)); EXPECT_EQ(u"Mountain View", s_profiles.ColumnString16(4)); EXPECT_EQ(u"CA", s_profiles.ColumnString16(5));
diff --git a/content/browser/accessibility/accessibility_scripts_mac_browsertest.mm b/content/browser/accessibility/accessibility_scripts_mac_browsertest.mm index 658aed4c..aec27e0 100644 --- a/content/browser/accessibility/accessibility_scripts_mac_browsertest.mm +++ b/content/browser/accessibility/accessibility_scripts_mac_browsertest.mm
@@ -303,4 +303,38 @@ AssertOutputMatchesExpectations(); } +IN_PROC_BROWSER_TEST_F(AccessibilityScriptsMacBrowserTest, + SetSelectedTextRange_ContentEditable) { + LoadFile("set-selectedtextrange-contenteditable.html"); + + // AXValue='The quick brown foxes jumps over the lazy dog' + AttributeInvoker textarea = GetInvokerAndAssertRole(":2", "AXTextArea"); + // select 1st word + { + OptionalNSObject range{[NSValue valueWithRange:NSMakeRange(0, 3)]}; + textarea.SetValue("AXSelectedTextRange", range); + WaitForEvent(ax::mojom::Event::kTextSelectionChanged); + OptionalNSObject selected_text = textarea.GetValue("AXSelectedText"); + Print(selected_text); + } + // select text inside span + { + OptionalNSObject range{[NSValue valueWithRange:NSMakeRange(22, 4)]}; + textarea.SetValue("AXSelectedTextRange", range); + WaitForEvent(ax::mojom::Event::kTextSelectionChanged); + OptionalNSObject selected_text = textarea.GetValue("AXSelectedText"); + Print(selected_text); + } + // select text across several elements + { + OptionalNSObject range{[NSValue valueWithRange:NSMakeRange(24, 15)]}; + textarea.SetValue("AXSelectedTextRange", range); + WaitForEvent(ax::mojom::Event::kTextSelectionChanged); + OptionalNSObject selected_text = textarea.GetValue("AXSelectedText"); + Print(selected_text); + } + + AssertOutputMatchesExpectations(); +} + } // namespace content
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm index efa116ac..4e2e994 100644 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -3822,8 +3822,8 @@ NSRange range = [(NSValue*)value rangeValue]; BrowserAccessibilityManager* manager = _owner->manager(); manager->SetSelection(BrowserAccessibility::AXRange( - _owner->CreatePositionAt(range.location), - _owner->CreatePositionAt(NSMaxRange(range)))); + _owner->CreatePositionAt(range.location)->AsLeafTextPosition(), + _owner->CreatePositionAt(NSMaxRange(range))->AsLeafTextPosition())); } if ([attribute isEqualToString:NSAccessibilitySelectedTextMarkerRangeAttribute]) {
diff --git a/content/browser/appcache/appcache_cache_test_helper_unittest.cc b/content/browser/appcache/appcache_cache_test_helper_unittest.cc index 868e1e8..b32bb60 100644 --- a/content/browser/appcache/appcache_cache_test_helper_unittest.cc +++ b/content/browser/appcache/appcache_cache_test_helper_unittest.cc
@@ -208,7 +208,7 @@ AppCacheCacheTestHelperTest() : process_id_(123), weak_partition_factory_(static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(&browser_context_))) {} + browser_context_.GetDefaultStoragePartition())) {} void SetUp() override { ChildProcessSecurityPolicyImpl::GetInstance()->Add(process_id_,
diff --git a/content/browser/appcache/appcache_internals_ui.cc b/content/browser/appcache/appcache_internals_ui.cc index 11c4113..36deb0a 100644 --- a/content/browser/appcache/appcache_internals_ui.cc +++ b/content/browser/appcache/appcache_internals_ui.cc
@@ -375,10 +375,8 @@ } void AppCacheInternalsHandler::OnJavascriptAllowed() { - BrowserContext::ForEachStoragePartition( - GetBrowserContext(), - base::BindRepeating(&AppCacheInternalsHandler::CreateProxyForPartition, - AsWeakPtr())); + GetBrowserContext()->ForEachStoragePartition(base::BindRepeating( + &AppCacheInternalsHandler::CreateProxyForPartition, AsWeakPtr())); } void AppCacheInternalsHandler::OnJavascriptDisallowed() {
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc index 5d5f95e..729cb70 100644 --- a/content/browser/appcache/appcache_storage_impl_unittest.cc +++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -309,7 +309,7 @@ // including setting up a disk cache, which checks feature lists. // Defer until here so test constructors can set feature lists first. weak_partition_factory_.emplace(static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(&browser_context_))); + browser_context_.GetDefaultStoragePartition())); } void SetUpTest() {
diff --git a/content/browser/appcache/appcache_update_job_unittest.cc b/content/browser/appcache/appcache_update_job_unittest.cc index 150bf0c0..cfbe874 100644 --- a/content/browser/appcache/appcache_update_job_unittest.cc +++ b/content/browser/appcache/appcache_update_job_unittest.cc
@@ -783,8 +783,7 @@ weak_partition_factory_ = std::make_unique<base::WeakPtrFactory<StoragePartitionImpl>>( static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - browser_context_.get()))); + browser_context_->GetDefaultStoragePartition())); ChildProcessSecurityPolicyImpl::GetInstance()->AddForTesting( process_id_, browser_context_.get());
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc index cb383977..8f06f62e 100644 --- a/content/browser/back_forward_cache_browsertest.cc +++ b/content/browser/back_forward_cache_browsertest.cc
@@ -10671,7 +10671,9 @@ } }; -IN_PROC_BROWSER_TEST_F(BackForwardCacheOptInBrowserTest, NoCacheWithoutHeader) { +// TODO(crbug.com/1204058): This test is flaky. +IN_PROC_BROWSER_TEST_F(BackForwardCacheOptInBrowserTest, + DISABLED_NoCacheWithoutHeader) { ASSERT_TRUE(embedded_test_server()->Start()); GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html")); GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html")); @@ -10735,8 +10737,9 @@ ExpectRestored(FROM_HERE); } +// TODO(crbug.com/1204027): This test is flaky. IN_PROC_BROWSER_TEST_F(BackForwardCacheOptInBrowserTest, - NoCacheIfHeaderOnlyPresentOnDestinationPage) { + DISABLED_NoCacheIfHeaderOnlyPresentOnDestinationPage) { net::test_server::ControllableHttpResponse response(embedded_test_server(), "/opt_in_document"); ASSERT_TRUE(embedded_test_server()->Start());
diff --git a/content/browser/background_fetch/background_fetch_job_controller_unittest.cc b/content/browser/background_fetch/background_fetch_job_controller_unittest.cc index ad9a3136..af00200 100644 --- a/content/browser/background_fetch/background_fetch_job_controller_unittest.cc +++ b/content/browser/background_fetch/background_fetch_job_controller_unittest.cc
@@ -179,7 +179,7 @@ BackgroundFetchTestBase::SetUp(); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); delegate_proxy_ = std::make_unique<BackgroundFetchDelegateProxy>(browser_context());
diff --git a/content/browser/background_fetch/background_fetch_test_base.cc b/content/browser/background_fetch/background_fetch_test_base.cc index 97f1be5..b5b658c 100644 --- a/content/browser/background_fetch/background_fetch_test_base.cc +++ b/content/browser/background_fetch/background_fetch_test_base.cc
@@ -80,8 +80,7 @@ delegate_(browser_context_.GetBackgroundFetchDelegate()), embedded_worker_test_helper_(base::FilePath()), origin_(url::Origin::Create(GURL(kTestOrigin))), - storage_partition_( - BrowserContext::GetDefaultStoragePartition(browser_context())) {} + storage_partition_(browser_context()->GetDefaultStoragePartition()) {} BackgroundFetchTestBase::~BackgroundFetchTestBase() { DCHECK(set_up_called_);
diff --git a/content/browser/background_sync/background_sync_base_browsertest.cc b/content/browser/background_sync/background_sync_base_browsertest.cc index d8bb112..82bba0c 100644 --- a/content/browser/background_sync/background_sync_base_browsertest.cc +++ b/content/browser/background_sync/background_sync_base_browsertest.cc
@@ -156,8 +156,9 @@ StoragePartitionImpl* BackgroundSyncBaseBrowserTest::GetStorage() { WebContents* web_contents = shell_->web_contents(); - return static_cast<StoragePartitionImpl*>(BrowserContext::GetStoragePartition( - web_contents->GetBrowserContext(), web_contents->GetSiteInstance())); + return static_cast<StoragePartitionImpl*>( + web_contents->GetBrowserContext()->GetStoragePartition( + web_contents->GetSiteInstance())); } WebContents* BackgroundSyncBaseBrowserTest::web_contents() {
diff --git a/content/browser/background_sync/background_sync_launcher.cc b/content/browser/background_sync/background_sync_launcher.cc index e923bbb..cc69ca09 100644 --- a/content/browser/background_sync/background_sync_launcher.cc +++ b/content/browser/background_sync/background_sync_launcher.cc
@@ -67,22 +67,20 @@ if (sync_type == blink::mojom::BackgroundSyncType::PERIODIC) last_browser_wakeup_for_periodic_sync_ = base::Time::Now(); base::RepeatingClosure done_closure = base::BarrierClosure( - content::BrowserContext::GetStoragePartitionCount(browser_context), + browser_context->GetStoragePartitionCount(), base::BindOnce(base::android::RunRunnableAndroid, base::android::ScopedJavaGlobalRef<jobject>(j_runnable))); - BrowserContext::ForEachStoragePartition( - browser_context, base::BindRepeating( - [](blink::mojom::BackgroundSyncType sync_type, - base::OnceClosure done_closure, - StoragePartition* storage_partition) { - BackgroundSyncContext* sync_context = - storage_partition->GetBackgroundSyncContext(); - DCHECK(sync_context); - sync_context->FireBackgroundSyncEvents( - sync_type, std::move(done_closure)); - }, - sync_type, std::move(done_closure))); + browser_context->ForEachStoragePartition(base::BindRepeating( + [](blink::mojom::BackgroundSyncType sync_type, + base::OnceClosure done_closure, StoragePartition* storage_partition) { + BackgroundSyncContext* sync_context = + storage_partition->GetBackgroundSyncContext(); + DCHECK(sync_context); + sync_context->FireBackgroundSyncEvents(sync_type, + std::move(done_closure)); + }, + sync_type, std::move(done_closure))); } #endif @@ -115,11 +113,9 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); SetGlobalSoonestWakeupDelta(sync_type, base::TimeDelta::Max()); - BrowserContext::ForEachStoragePartition( - browser_context, - base::BindRepeating( - &BackgroundSyncLauncher::GetSoonestWakeupDeltaForStoragePartition, - base::Unretained(this), sync_type)); + browser_context->ForEachStoragePartition(base::BindRepeating( + &BackgroundSyncLauncher::GetSoonestWakeupDeltaForStoragePartition, + base::Unretained(this), sync_type)); return GetGlobalSoonestWakeupDelta(sync_type); }
diff --git a/content/browser/background_sync/background_sync_launcher_unittest.cc b/content/browser/background_sync/background_sync_launcher_unittest.cc index 0b89cde..21b80fa9d 100644 --- a/content/browser/background_sync/background_sync_launcher_unittest.cc +++ b/content/browser/background_sync/background_sync_launcher_unittest.cc
@@ -64,8 +64,8 @@ DCHECK(!urls.empty()); for (const auto& url : urls) { - auto* storage_partition = BrowserContext::GetStoragePartitionForUrl( - &test_browser_context_, url); + auto* storage_partition = + test_browser_context_.GetStoragePartitionForUrl(url); auto iter = wakeup_deltas.find(url); if (iter == wakeup_deltas.end()) @@ -97,8 +97,7 @@ auto done_closure = base::BindLambdaForTesting( [&]() { num_invocations_fire_background_sync_events_++; }); - BrowserContext::ForEachStoragePartition( - &test_browser_context_, + test_browser_context_.ForEachStoragePartition( base::BindRepeating( [](base::OnceClosure done_closure, StoragePartition* storage_partition) {
diff --git a/content/browser/background_sync/background_sync_manager_unittest.cc b/content/browser/background_sync/background_sync_manager_unittest.cc index 4f792f3..9933ac7 100644 --- a/content/browser/background_sync/background_sync_manager_unittest.cc +++ b/content/browser/background_sync/background_sync_manager_unittest.cc
@@ -134,8 +134,8 @@ // Create a StoragePartition with the correct BrowserContext so that the // BackgroundSyncManager can find the BrowserContext through it. storage_partition_impl_ = static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartitionForUrl(helper_->browser_context(), - GURL("https://example.com"))); + helper_->browser_context()->GetStoragePartitionForUrl( + GURL("https://example.com"))); helper_->context_wrapper()->set_storage_partition(storage_partition_impl_); SetMaxSyncAttemptsAndRestartManager(1);
diff --git a/content/browser/background_sync/background_sync_scheduler_unittest.cc b/content/browser/background_sync/background_sync_scheduler_unittest.cc index 698bf6f..c1b7b1f5 100644 --- a/content/browser/background_sync/background_sync_scheduler_unittest.cc +++ b/content/browser/background_sync/background_sync_scheduler_unittest.cc
@@ -60,7 +60,7 @@ auto* scheduler = BackgroundSyncScheduler::GetFor(&test_browser_context_); DCHECK(scheduler); auto* storage_partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartitionForUrl(&test_browser_context_, url)); + test_browser_context_.GetStoragePartitionForUrl(url)); DCHECK(storage_partition); scheduler->ScheduleDelayedProcessing(storage_partition, sync_type, delay, @@ -72,7 +72,7 @@ auto* scheduler = BackgroundSyncScheduler::GetFor(&test_browser_context_); DCHECK(scheduler); auto* storage_partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartitionForUrl(&test_browser_context_, url)); + test_browser_context_.GetStoragePartitionForUrl(url)); DCHECK(storage_partition); scheduler->CancelDelayedProcessing(storage_partition, sync_type);
diff --git a/content/browser/bluetooth/web_bluetooth_service_impl.cc b/content/browser/bluetooth/web_bluetooth_service_impl.cc index 4f95a626..68d91fb 100644 --- a/content/browser/bluetooth/web_bluetooth_service_impl.cc +++ b/content/browser/bluetooth/web_bluetooth_service_impl.cc
@@ -2160,8 +2160,7 @@ BluetoothAllowedDevices& WebBluetoothServiceImpl::allowed_devices() { StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - web_contents()->GetBrowserContext())); + web_contents()->GetBrowserContext()->GetDefaultStoragePartition()); return partition->GetBluetoothAllowedDevicesMap()->GetOrCreateAllowedDevices( GetOrigin()); }
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc index a9a2c40c..3895246 100644 --- a/content/browser/browser_context.cc +++ b/content/browser/browser_context.cc
@@ -131,88 +131,71 @@ return self->impl()->GetPermissionController(); } -// static StoragePartition* BrowserContext::GetStoragePartition( - BrowserContext* self, SiteInstance* site_instance, bool can_create) { if (site_instance) - DCHECK_EQ(self, site_instance->GetBrowserContext()); + DCHECK_EQ(this, site_instance->GetBrowserContext()); auto* site_instance_impl = static_cast<SiteInstanceImpl*>(site_instance); auto partition_config = site_instance_impl - ? site_instance_impl->GetSiteInfo().GetStoragePartitionConfig(self) - : StoragePartitionConfig::CreateDefault(self); - return GetStoragePartition(self, partition_config, can_create); + ? site_instance_impl->GetSiteInfo().GetStoragePartitionConfig(this) + : StoragePartitionConfig::CreateDefault(this); + return GetStoragePartition(partition_config, can_create); } -// static StoragePartition* BrowserContext::GetStoragePartition( - BrowserContext* self, const StoragePartitionConfig& storage_partition_config, bool can_create) { - if (self->IsOffTheRecord()) { + if (IsOffTheRecord()) { // An off the record profile MUST only use in memory storage partitions. CHECK(storage_partition_config.in_memory()); } - return self->impl()->GetOrCreateStoragePartitionMap()->Get( - storage_partition_config, can_create); + return impl()->GetOrCreateStoragePartitionMap()->Get(storage_partition_config, + can_create); } -// static StoragePartition* BrowserContext::GetStoragePartitionForUrl( - BrowserContext* self, const GURL& url, bool can_create) { auto storage_partition_config = SiteInfo::GetStoragePartitionConfigForUrl( - self, url, /*is_site_url=*/false); + this, url, /*is_site_url=*/false); - return GetStoragePartition(self, storage_partition_config, can_create); + return GetStoragePartition(storage_partition_config, can_create); } -// static void BrowserContext::ForEachStoragePartition( - BrowserContext* self, StoragePartitionCallback callback) { - StoragePartitionImplMap* partition_map = - self->impl()->storage_partition_map(); + StoragePartitionImplMap* partition_map = impl()->storage_partition_map(); if (!partition_map) return; partition_map->ForEach(std::move(callback)); } -// static -size_t BrowserContext::GetStoragePartitionCount(BrowserContext* self) { - StoragePartitionImplMap* partition_map = - self->impl()->storage_partition_map(); +size_t BrowserContext::GetStoragePartitionCount() { + StoragePartitionImplMap* partition_map = impl()->storage_partition_map(); return partition_map ? partition_map->size() : 0; } -// static void BrowserContext::AsyncObliterateStoragePartition( - BrowserContext* self, const std::string& partition_domain, base::OnceClosure on_gc_required) { - self->impl()->GetOrCreateStoragePartitionMap()->AsyncObliterate( + impl()->GetOrCreateStoragePartitionMap()->AsyncObliterate( partition_domain, std::move(on_gc_required)); } -// static void BrowserContext::GarbageCollectStoragePartitions( - BrowserContext* self, std::unique_ptr<std::unordered_set<base::FilePath>> active_paths, base::OnceClosure done) { - self->impl()->GetOrCreateStoragePartitionMap()->GarbageCollect( + impl()->GetOrCreateStoragePartitionMap()->GarbageCollect( std::move(active_paths), std::move(done)); } -// static -StoragePartition* BrowserContext::GetDefaultStoragePartition( - BrowserContext* self) { - return GetStoragePartition(self, StoragePartitionConfig::CreateDefault(self)); +StoragePartition* BrowserContext::GetDefaultStoragePartition() { + return GetStoragePartition(StoragePartitionConfig::CreateDefault(this)); } // static @@ -292,13 +275,12 @@ // end up rewriting the same value but this still causes a race condition. // // See http://crbug.com/115678. - GetDefaultStoragePartition(self); + self->GetDefaultStoragePartition(); } // static void BrowserContext::SaveSessionState(BrowserContext* self) { - StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(self); + StoragePartition* storage_partition = self->GetDefaultStoragePartition(); storage::DatabaseTracker* database_tracker = storage_partition->GetDatabaseTracker(); @@ -436,8 +418,8 @@ if (use_in_memory_db) { stats_db = std::make_unique<media::InMemoryVideoDecodeStatsDBImpl>(nullptr); } else { - auto* db_provider = BrowserContext::GetDefaultStoragePartition(this) - ->GetProtoDatabaseProvider(); + auto* db_provider = + GetDefaultStoragePartition()->GetProtoDatabaseProvider(); stats_db = media::VideoDecodeStatsDBImpl::Create( GetPath().Append(FILE_PATH_LITERAL("VideoDecodeStats")), db_provider);
diff --git a/content/browser/browser_context_impl.cc b/content/browser/browser_context_impl.cc index 6a7c16f..08134909 100644 --- a/content/browser/browser_context_impl.cc +++ b/content/browser/browser_context_impl.cc
@@ -127,10 +127,10 @@ // Shut down service worker and shared worker machinery because these can keep // RenderProcessHosts and SiteInstances alive, and the codebase assumes these // are destroyed before the BrowserContext is destroyed. - BrowserContext::ForEachStoragePartition( - self_, base::BindRepeating(ShutdownServiceWorkerContext)); - BrowserContext::ForEachStoragePartition( - self_, base::BindRepeating(ShutdownSharedWorkerContext)); + self_->ForEachStoragePartition( + base::BindRepeating(ShutdownServiceWorkerContext)); + self_->ForEachStoragePartition( + base::BindRepeating(ShutdownSharedWorkerContext)); // Also forcibly release keep alive refcounts on RenderProcessHosts, to ensure // they destruct before the BrowserContext does.
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.cc b/content/browser/browsing_data/browsing_data_remover_impl.cc index 349ceb6..ce1dcc5 100644 --- a/content/browser/browsing_data/browsing_data_remover_impl.cc +++ b/content/browser/browsing_data/browsing_data_remover_impl.cc
@@ -529,8 +529,7 @@ // Reporting cache. if (remove_mask & DATA_TYPE_COOKIES) { network::mojom::NetworkContext* network_context = - BrowserContext::GetDefaultStoragePartition(browser_context_) - ->GetNetworkContext(); + browser_context_->GetDefaultStoragePartition()->GetNetworkContext(); network_context->ClearReportingCacheClients( filter_builder->BuildNetworkServiceFilter(), CreateTaskCompletionClosureForMojo(TracingDataType::kReportingCache)); @@ -545,7 +544,7 @@ // Auth cache. if ((remove_mask & DATA_TYPE_COOKIES) && !(remove_mask & DATA_TYPE_AVOID_CLOSING_CONNECTIONS)) { - BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetNetworkContext() ->ClearHttpAuthCache( delete_begin_.is_null() ? base::Time::Min() : delete_begin_, @@ -628,7 +627,7 @@ StoragePartition* BrowsingDataRemoverImpl::GetStoragePartition() { return storage_partition_for_testing_ ? storage_partition_for_testing_ - : BrowserContext::GetDefaultStoragePartition(browser_context_); + : browser_context_->GetDefaultStoragePartition(); } void BrowsingDataRemoverImpl::OnDelegateDone(
diff --git a/content/browser/browsing_data/browsing_data_remover_impl_browsertest.cc b/content/browser/browsing_data/browsing_data_remover_impl_browsertest.cc index 4c77804..4b14d8a1 100644 --- a/content/browser/browsing_data/browsing_data_remover_impl_browsertest.cc +++ b/content/browser/browsing_data/browsing_data_remover_impl_browsertest.cc
@@ -213,15 +213,19 @@ } network::mojom::URLLoaderFactory* url_loader_factory() { - return BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + return shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); } network::mojom::NetworkContext* network_context() { - return BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + return shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetNetworkContext(); }
diff --git a/content/browser/browsing_data/browsing_data_test_utils.cc b/content/browser/browsing_data/browsing_data_test_utils.cc index cc66f231..3254f62 100644 --- a/content/browser/browsing_data/browsing_data_test_utils.cc +++ b/content/browser/browsing_data/browsing_data_test_utils.cc
@@ -22,7 +22,7 @@ network::mojom::CookieManager* GetCookieManager( BrowserContext* browser_context) { StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); return storage_partition->GetCookieManagerForBrowserProcess(); }
diff --git a/content/browser/browsing_data/clear_site_data_handler_browsertest.cc b/content/browser/browsing_data/clear_site_data_handler_browsertest.cc index 4b17d23..a76995d3 100644 --- a/content/browser/browsing_data/clear_site_data_handler_browsertest.cc +++ b/content/browser/browsing_data/clear_site_data_handler_browsertest.cc
@@ -160,7 +160,7 @@ } StoragePartition* storage_partition() { - return BrowserContext::GetDefaultStoragePartition(browser_context()); + return browser_context()->GetDefaultStoragePartition(); } // Adds a cookie for the |url|. Used in the cookie integration tests.
diff --git a/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc b/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc index d0b3b69..9408960 100644 --- a/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc +++ b/content/browser/browsing_data/conditional_cache_deletion_helper_browsertest.cc
@@ -98,7 +98,7 @@ } StoragePartition* storage_partition() { - return BrowserContext::GetDefaultStoragePartition(browser_context()); + return browser_context()->GetDefaultStoragePartition(); } private:
diff --git a/content/browser/browsing_data/same_site_data_remover_impl.cc b/content/browser/browsing_data/same_site_data_remover_impl.cc index b727776..d60d7ef8 100644 --- a/content/browser/browsing_data/same_site_data_remover_impl.cc +++ b/content/browser/browsing_data/same_site_data_remover_impl.cc
@@ -69,8 +69,7 @@ SameSiteDataRemoverImpl::SameSiteDataRemoverImpl( BrowserContext* browser_context) : browser_context_(browser_context), - storage_partition_( - BrowserContext::GetDefaultStoragePartition(browser_context_)) { + storage_partition_(browser_context_->GetDefaultStoragePartition()) { DCHECK(browser_context_); }
diff --git a/content/browser/browsing_data/same_site_data_remover_impl_browsertest.cc b/content/browser/browsing_data/same_site_data_remover_impl_browsertest.cc index 8ad02c0..787070d9 100644 --- a/content/browser/browsing_data/same_site_data_remover_impl_browsertest.cc +++ b/content/browser/browsing_data/same_site_data_remover_impl_browsertest.cc
@@ -62,7 +62,7 @@ } StoragePartition* GetStoragePartition() { - return BrowserContext::GetDefaultStoragePartition(GetBrowserContext()); + return GetBrowserContext()->GetDefaultStoragePartition(); } net::EmbeddedTestServer* GetHttpsServer() { return https_server_.get(); }
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc index 69b3578..7519c34 100644 --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc
@@ -1360,8 +1360,8 @@ int child_id = site_instance->GetProcess()->GetID(); - StoragePartition* storage_partition = BrowserContext::GetStoragePartition( - site_instance->GetBrowserContext(), site_instance); + StoragePartition* storage_partition = + site_instance->GetBrowserContext()->GetStoragePartition(site_instance); const storage::FileSystemContext* file_system_context = storage_partition->GetFileSystemContext();
diff --git a/content/browser/content_index/content_index_browsertest.cc b/content/browser/content_index/content_index_browsertest.cc index 135a6c0..9d25fa68 100644 --- a/content/browser/content_index/content_index_browsertest.cc +++ b/content/browser/content_index/content_index_browsertest.cc
@@ -43,9 +43,9 @@ shell_->web_contents()->GetBrowserContext()->GetContentIndexProvider()); ASSERT_TRUE(provider_); - auto* storage_partition = BrowserContext::GetStoragePartition( - shell_->web_contents()->GetBrowserContext(), - shell_->web_contents()->GetSiteInstance()); + auto* storage_partition = + shell_->web_contents()->GetBrowserContext()->GetStoragePartition( + shell_->web_contents()->GetSiteInstance()); context_ = storage_partition->GetContentIndexContext(); ASSERT_TRUE(context_); }
diff --git a/content/browser/conversions/conversion_manager_impl.cc b/content/browser/conversions/conversion_manager_impl.cc index 4be3a303..7cdc825 100644 --- a/content/browser/conversions/conversion_manager_impl.cc +++ b/content/browser/conversions/conversion_manager_impl.cc
@@ -48,8 +48,7 @@ ConversionManager* ConversionManagerProviderImpl::GetManager( WebContents* web_contents) const { return static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - web_contents->GetBrowserContext())) + web_contents->GetBrowserContext()->GetDefaultStoragePartition()) ->GetConversionManager(); }
diff --git a/content/browser/conversions/conversion_reporter_impl_unittest.cc b/content/browser/conversions/conversion_reporter_impl_unittest.cc index 57291f1..de195b97 100644 --- a/content/browser/conversions/conversion_reporter_impl_unittest.cc +++ b/content/browser/conversions/conversion_reporter_impl_unittest.cc
@@ -72,7 +72,7 @@ : task_environment_(base::test::TaskEnvironment::TimeSource::MOCK_TIME), browser_context_(std::make_unique<TestBrowserContext>()), reporter_(std::make_unique<ConversionReporterImpl>( - BrowserContext::GetDefaultStoragePartition(browser_context_.get()), + browser_context_->GetDefaultStoragePartition(), task_environment_.GetMockClock())) { auto network_sender = std::make_unique<MockNetworkSender>(); sender_ = network_sender.get();
diff --git a/content/browser/conversions/conversions_origin_trial_browsertest.cc b/content/browser/conversions/conversions_origin_trial_browsertest.cc index 2d4650f..a887b4a 100644 --- a/content/browser/conversions/conversions_origin_trial_browsertest.cc +++ b/content/browser/conversions/conversions_origin_trial_browsertest.cc
@@ -113,8 +113,7 @@ ConversionManagerImpl* conversion_manager = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - web_contents()->GetBrowserContext())) + web_contents()->GetBrowserContext()->GetDefaultStoragePartition()) ->GetConversionManager(); base::RunLoop run_loop;
diff --git a/content/browser/devtools/protocol/storage_handler.cc b/content/browser/devtools/protocol/storage_handler.cc index bf3b7753..839a38c9 100644 --- a/content/browser/devtools/protocol/storage_handler.cc +++ b/content/browser/devtools/protocol/storage_handler.cc
@@ -542,8 +542,7 @@ BrowserHandler::FindBrowserContext(browser_context_id, &browser_context); if (!response.IsSuccess()) return response; - *storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + *storage_partition = browser_context->GetDefaultStoragePartition(); if (!*storage_partition) return Response::InternalError(); return Response::Success();
diff --git a/content/browser/direct_sockets/direct_sockets_tcp_browsertest.cc b/content/browser/direct_sockets/direct_sockets_tcp_browsertest.cc index 12381ee..4292bd3 100644 --- a/content/browser/direct_sockets/direct_sockets_tcp_browsertest.cc +++ b/content/browser/direct_sockets/direct_sockets_tcp_browsertest.cc
@@ -219,8 +219,7 @@ } network::mojom::NetworkContext* GetNetworkContext() { - return BrowserContext::GetDefaultStoragePartition(browser_context()) - ->GetNetworkContext(); + return browser_context()->GetDefaultStoragePartition()->GetNetworkContext(); } std::string CreateMDNSHostName() {
diff --git a/content/browser/dom_storage/dom_storage_browsertest.cc b/content/browser/dom_storage/dom_storage_browsertest.cc index 1b97a60b..2e1595ec 100644 --- a/content/browser/dom_storage/dom_storage_browsertest.cc +++ b/content/browser/dom_storage/dom_storage_browsertest.cc
@@ -55,8 +55,10 @@ } StoragePartition* partition() { - return BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + return shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); } std::vector<StorageUsageInfo> GetUsage() {
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc index a948e55..1358ed15 100644 --- a/content/browser/download/download_manager_impl.cc +++ b/content/browser/download/download_manager_impl.cc
@@ -111,7 +111,7 @@ site_instance = render_frame_host_->GetSiteInstance(); } return static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartition(context, site_instance)); + context->GetStoragePartition(site_instance)); } // TODO(acolwell): Update DownloadManager and related code to pass around @@ -121,7 +121,7 @@ auto partition_config = SiteInfo::GetStoragePartitionConfigForUrl( context, site_url, /*is_site_url=*/true); return static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartition(context, partition_config)); + context->GetStoragePartition(partition_config)); } void OnDownloadStarted( @@ -329,9 +329,8 @@ download::SetIOTaskRunner(GetIOThreadTaskRunner({})); if (!in_progress_manager_) { - auto* proto_db_provider = - BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetProtoDatabaseProvider(); + auto* proto_db_provider = browser_context->GetDefaultStoragePartition() + ->GetProtoDatabaseProvider(); in_progress_manager_ = std::make_unique<download::InProgressDownloadManager>( this, base::FilePath(), proto_db_provider,
diff --git a/content/browser/file_system/file_system_browsertest.cc b/content/browser/file_system/file_system_browsertest.cc index feb2c97..973826db 100644 --- a/content/browser/file_system/file_system_browsertest.cc +++ b/content/browser/file_system/file_system_browsertest.cc
@@ -73,8 +73,10 @@ public: void SetUpOnMainThread() override { FileSystemBrowserTest::SetUpOnMainThread(); - SetLowQuota(BrowserContext::GetDefaultStoragePartition( - browser()->web_contents()->GetBrowserContext()) + SetLowQuota(browser() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetQuotaManager()); }
diff --git a/content/browser/file_system_access/file_system_chooser_browsertest.cc b/content/browser/file_system_access/file_system_chooser_browsertest.cc index faad76f..a19b8f0 100644 --- a/content/browser/file_system_access/file_system_chooser_browsertest.cc +++ b/content/browser/file_system_access/file_system_chooser_browsertest.cc
@@ -207,9 +207,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -325,9 +326,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -446,9 +448,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -473,9 +476,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -552,9 +556,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -614,9 +619,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -729,9 +735,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -811,9 +818,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -900,9 +908,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -984,9 +993,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -1074,9 +1084,10 @@ testing::StrictMock<MockFileSystemAccessPermissionContext> permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -1418,9 +1429,10 @@ FakeFileSystemAccessPermissionContext permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context); @@ -1489,9 +1501,10 @@ FakeFileSystemAccessPermissionContext permission_context; static_cast<FileSystemAccessManagerImpl*>( - BrowserContext::GetStoragePartition( - shell()->web_contents()->GetBrowserContext(), - shell()->web_contents()->GetSiteInstance()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetStoragePartition(shell()->web_contents()->GetSiteInstance()) ->GetFileSystemAccessEntryFactory()) ->SetPermissionContextForTesting(&permission_context);
diff --git a/content/browser/host_zoom_map_impl.cc b/content/browser/host_zoom_map_impl.cc index 9332680..247e738 100644 --- a/content/browser/host_zoom_map_impl.cc +++ b/content/browser/host_zoom_map_impl.cc
@@ -64,16 +64,15 @@ HostZoomMap* HostZoomMap::GetDefaultForBrowserContext(BrowserContext* context) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - StoragePartition* partition = - BrowserContext::GetDefaultStoragePartition(context); + StoragePartition* partition = context->GetDefaultStoragePartition(); DCHECK(partition); return partition->GetHostZoomMap(); } HostZoomMap* HostZoomMap::Get(SiteInstance* instance) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - StoragePartition* partition = BrowserContext::GetStoragePartition( - instance->GetBrowserContext(), instance); + StoragePartition* partition = + instance->GetBrowserContext()->GetStoragePartition(instance); DCHECK(partition); return partition->GetHostZoomMap(); } @@ -83,8 +82,8 @@ // TODO(wjmaclean): Update this behaviour to work with OOPIF. // See crbug.com/528407. StoragePartition* partition = - BrowserContext::GetStoragePartition(contents->GetBrowserContext(), - contents->GetSiteInstance()); + contents->GetBrowserContext()->GetStoragePartition( + contents->GetSiteInstance()); DCHECK(partition); return partition->GetHostZoomMap(); }
diff --git a/content/browser/indexed_db/indexed_db_browsertest.cc b/content/browser/indexed_db/indexed_db_browsertest.cc index 9757ba7..d1538c8f 100644 --- a/content/browser/indexed_db/indexed_db_browsertest.cc +++ b/content/browser/indexed_db/indexed_db_browsertest.cc
@@ -149,8 +149,9 @@ storage::mojom::IndexedDBControl& GetControl(Shell* browser = nullptr) { if (!browser) browser = shell(); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - browser->web_contents()->GetBrowserContext()); + StoragePartition* partition = browser->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); return partition->GetIndexedDBControl(); } @@ -163,17 +164,19 @@ void BindControlTest( mojo::PendingReceiver<storage::mojom::IndexedDBControlTest> receiver) { auto* browser = shell(); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - browser->web_contents()->GetBrowserContext()); + StoragePartition* partition = browser->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); auto& control = partition->GetIndexedDBControl(); control.BindTestInterface(std::move(receiver)); } void SetQuota(int per_host_quota_kilobytes) { - SetTempQuota(per_host_quota_kilobytes, - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) - ->GetQuotaManager()); + SetTempQuota(per_host_quota_kilobytes, shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() + ->GetQuotaManager()); } static void SetTempQuota(int per_host_quota_kilobytes,
diff --git a/content/browser/indexed_db/indexed_db_internals_ui.cc b/content/browser/indexed_db/indexed_db_internals_ui.cc index 93c89f7..411e04c 100644 --- a/content/browser/indexed_db/indexed_db_internals_ui.cc +++ b/content/browser/indexed_db/indexed_db_internals_ui.cc
@@ -92,8 +92,7 @@ BrowserContext* browser_context = web_ui()->GetWebContents()->GetBrowserContext(); - BrowserContext::ForEachStoragePartition( - browser_context, + browser_context->ForEachStoragePartition( base::BindRepeating( [](base::WeakPtr<IndexedDBInternalsHandler> handler, StoragePartition* partition) { @@ -167,8 +166,7 @@ StoragePartition* result_partition = nullptr; *control = nullptr; - BrowserContext::ForEachStoragePartition( - browser_context, + browser_context->ForEachStoragePartition( base::BindRepeating(&FindControl, path, &result_partition, control)); if (!result_partition || !control)
diff --git a/content/browser/interest_group/interest_group_browsertest.cc b/content/browser/interest_group/interest_group_browsertest.cc index 3bec9352..fc04e44 100644 --- a/content/browser/interest_group/interest_group_browsertest.cc +++ b/content/browser/interest_group/interest_group_browsertest.cc
@@ -97,10 +97,12 @@ &InterestGroupBrowserTest::OnHttpsTestServerRequestMonitor, base::Unretained(this))); ASSERT_TRUE(https_server_->Start()); - storage_ = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())) - ->GetInterestGroupStorage(); + storage_ = + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()) + ->GetInterestGroupStorage(); content_browser_client_.SetAllowList( {url::Origin::Create(https_server_->GetURL("a.test", "/echo")), url::Origin::Create(https_server_->GetURL("b.test", "/echo"))});
diff --git a/content/browser/loader/cross_site_document_blocking_browsertest.cc b/content/browser/loader/cross_site_document_blocking_browsertest.cc index 03c57f2..8b4b76f 100644 --- a/content/browser/loader/cross_site_document_blocking_browsertest.cc +++ b/content/browser/loader/cross_site_document_blocking_browsertest.cc
@@ -1652,8 +1652,7 @@ BrowserContext* browser_context = shell()->web_contents()->GetBrowserContext(); - StoragePartition* partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + StoragePartition* partition = browser_context->GetDefaultStoragePartition(); ASSERT_EQ(net::OK, LoadBasicRequest(partition->GetNetworkContext(), test_url)); }
diff --git a/content/browser/loader/navigation_url_loader_impl_unittest.cc b/content/browser/loader/navigation_url_loader_impl_unittest.cc index 32f1bd0..87b1624 100644 --- a/content/browser/loader/navigation_url_loader_impl_unittest.cc +++ b/content/browser/loader/navigation_url_loader_impl_unittest.cc
@@ -224,8 +224,7 @@ &most_recent_resource_request_)); return std::make_unique<NavigationURLLoaderImpl>( - browser_context_.get(), - BrowserContext::GetDefaultStoragePartition(browser_context_.get()), + browser_context_.get(), browser_context_->GetDefaultStoragePartition(), std::move(request_info), nullptr /* navigation_ui_data */, nullptr /* service_worker_handle */, nullptr /* appcache_handle */, nullptr /* prefetched_signed_exchange_cache */, delegate,
diff --git a/content/browser/loader/navigation_url_loader_unittest.cc b/content/browser/loader/navigation_url_loader_unittest.cc index b46e684..d75a2661 100644 --- a/content/browser/loader/navigation_url_loader_unittest.cc +++ b/content/browser/loader/navigation_url_loader_unittest.cc
@@ -79,7 +79,7 @@ common_params->initiator_origin = url::Origin::Create(url); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context_.get()); + browser_context_->GetDefaultStoragePartition(); url::Origin origin = url::Origin::Create(url); std::unique_ptr<NavigationRequestInfo> request_info( @@ -161,8 +161,7 @@ // Set HSTS for the test domain in order to make SSL errors fatal. base::Time expiry = base::Time::Now() + base::TimeDelta::FromDays(1000); bool include_subdomains = false; - auto* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context_.get()); + auto* storage_partition = browser_context_->GetDefaultStoragePartition(); base::RunLoop run_loop; storage_partition->GetNetworkContext()->AddHSTS( url.host(), expiry, include_subdomains, run_loop.QuitClosure());
diff --git a/content/browser/loader/prefetch_browsertest_base.cc b/content/browser/loader/prefetch_browsertest_base.cc index 3a0d948..64804ae4 100644 --- a/content/browser/loader/prefetch_browsertest_base.cc +++ b/content/browser/loader/prefetch_browsertest_base.cc
@@ -59,9 +59,11 @@ void PrefetchBrowserTestBase::SetUpOnMainThread() { ContentBrowserTest::SetUpOnMainThread(); - StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())); + StoragePartitionImpl* partition = + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()); partition->GetPrefetchURLLoaderService() ->RegisterPrefetchLoaderCallbackForTest(base::BindRepeating( &PrefetchBrowserTestBase::OnPrefetchURLLoaderCalled,
diff --git a/content/browser/media/android/media_resource_getter_impl.cc b/content/browser/media/android/media_resource_getter_impl.cc index 86ea560..464b3e30 100644 --- a/content/browser/media/android/media_resource_getter_impl.cc +++ b/content/browser/media/android/media_resource_getter_impl.cc
@@ -49,7 +49,7 @@ url::Origin request_origin = url::Origin::Create(url); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); // `request_origin` cannot be used to create `isolation_info` since it // represents the media resource, not the frame origin. Here we use the @@ -153,7 +153,7 @@ return; } - BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetNetworkContext() ->LookupServerBasicAuthCredentials( url, render_frame_host->GetNetworkIsolationKey(),
diff --git a/content/browser/media/encrypted_media_browsertest.cc b/content/browser/media/encrypted_media_browsertest.cc index 31035dc8..849f902 100644 --- a/content/browser/media/encrypted_media_browsertest.cc +++ b/content/browser/media/encrypted_media_browsertest.cc
@@ -63,8 +63,9 @@ #endif // EME-specific test results and errors. -const char kEmeKeyError[] = "KEYERROR"; +const char16_t kEmeKeyError[] = u"KEYERROR"; const char kEmeNotSupportedError[] = "NOTSUPPORTEDERROR"; +const char16_t kEmeNotSupportedError16[] = u"NOTSUPPORTEDERROR"; const char kDefaultEmePlayer[] = "eme_player.html"; const char kDefaultMseOnlyEmePlayer[] = "mse_different_containers.html"; @@ -175,8 +176,8 @@ // We want to fail quickly when a test fails because an error is encountered. void AddTitlesToAwait(content::TitleWatcher* title_watcher) override { MediaBrowserTest::AddTitlesToAwait(title_watcher); - title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kEmeNotSupportedError)); - title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kEmeKeyError)); + title_watcher->AlsoWaitForTitle(kEmeNotSupportedError16); + title_watcher->AlsoWaitForTitle(kEmeKeyError); } void SetUpCommandLine(base::CommandLine* command_line) override {
diff --git a/content/browser/media/media_capabilities_browsertest.cc b/content/browser/media/media_capabilities_browsertest.cc index 1aae7f3..f271f48 100644 --- a/content/browser/media/media_capabilities_browsertest.cc +++ b/content/browser/media/media_capabilities_browsertest.cc
@@ -22,8 +22,10 @@ const char kDecodeTestFile[] = "decode_capabilities_test.html"; const char kSupported[] = "SUPPORTED"; +const char16_t kSupported16[] = u"SUPPORTED"; const char kUnsupported[] = "UNSUPPORTED"; -const char kError[] = "ERROR"; +const char16_t kUnsupported16[] = u"UNSUPPORTED"; +const char16_t kError[] = u"ERROR"; const char kFileString[] = "file"; const char kMediaSourceString[] = "media-source"; @@ -141,10 +143,9 @@ EXPECT_TRUE(ExecJs(shell(), command)); - TitleWatcher title_watcher(shell()->web_contents(), - base::ASCIIToUTF16(kSupported)); - title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16(kUnsupported)); - title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16(kError)); + TitleWatcher title_watcher(shell()->web_contents(), kSupported16); + title_watcher.AlsoWaitForTitle(kUnsupported16); + title_watcher.AlsoWaitForTitle(kError); return base::UTF16ToASCII(title_watcher.WaitAndGetTitle()); }
diff --git a/content/browser/media/media_interface_proxy.cc b/content/browser/media/media_interface_proxy.cc index df82683..a0ad50b1 100644 --- a/content/browser/media/media_interface_proxy.cc +++ b/content/browser/media/media_interface_proxy.cc
@@ -201,8 +201,8 @@ void CreateProvisionFetcher( mojo::PendingReceiver<media::mojom::ProvisionFetcher> receiver) override { #if BUILDFLAG(ENABLE_MOJO_CDM) - ProvisionFetcherImpl::Create(BrowserContext::GetDefaultStoragePartition( - render_frame_host_->GetBrowserContext()) + ProvisionFetcherImpl::Create(render_frame_host_->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), std::move(receiver)); #endif
diff --git a/content/browser/native_io/native_io_manager_browsertest.cc b/content/browser/native_io/native_io_manager_browsertest.cc index ba870b9..c831ec2c 100644 --- a/content/browser/native_io/native_io_manager_browsertest.cc +++ b/content/browser/native_io/native_io_manager_browsertest.cc
@@ -135,8 +135,9 @@ Shell* browser = CreateBrowser(); base::RunLoop run_loop; scoped_refptr<storage::QuotaManager> quota_manager = - BrowserContext::GetDefaultStoragePartition( - browser->web_contents()->GetBrowserContext()) + browser->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetQuotaManager(); NavigateToURLBlockUntilNavigationsComplete(browser, test_url,
diff --git a/content/browser/net/split_cache_browsertest.cc b/content/browser/net/split_cache_browsertest.cc index b8074af6..eeeec49 100644 --- a/content/browser/net/split_cache_browsertest.cc +++ b/content/browser/net/split_cache_browsertest.cc
@@ -760,8 +760,7 @@ base::Time end_time) { last_computed_cache_size_ = -1; auto* network_context = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetNetworkContext(); + context->GetDefaultStoragePartition()->GetNetworkContext(); network::mojom::NetworkContext::ComputeHttpCacheSizeCallback size_callback = base::BindOnce( &SplitCacheComputeHttpCacheSize::ComputeCacheSizeCallback,
diff --git a/content/browser/network_service_browsertest.cc b/content/browser/network_service_browsertest.cc index 5cc2ff3..9aa53998 100644 --- a/content/browser/network_service_browsertest.cc +++ b/content/browser/network_service_browsertest.cc
@@ -228,8 +228,10 @@ request->url = embedded_test_server()->GetURL("/auth-basic?password="); auto loader = network::SimpleURLLoader::Create(std::move(request), TRAFFIC_ANNOTATION_FOR_TESTS); - auto loader_factory = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + auto loader_factory = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); scoped_refptr<net::HttpResponseHeaders> headers; base::RunLoop loop; @@ -569,8 +571,10 @@ params->factory_override = network::mojom::URLLoaderFactoryOverride::New(); params->factory_override->overriding_factory = test_loader_factory_receiver.BindNewPipeAndPassRemote(); - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateURLLoaderFactory( loader_factory_remote.BindNewPipeAndPassReceiver(), @@ -616,9 +620,11 @@ // Verifies that in-process network service works. IN_PROC_BROWSER_TEST_F(NetworkServiceInProcessBrowserTest, Basic) { GURL test_url = embedded_test_server()->GetURL("foo.com", "/echo"); - StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())); + StoragePartitionImpl* partition = + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()); EXPECT_TRUE(NavigateToURL(shell(), test_url)); ASSERT_EQ(net::OK, LoadBasicRequest(partition->GetNetworkContext(), test_url)); @@ -644,9 +650,11 @@ // Verifies that an invalid --log-net-log flag won't crash the browser. IN_PROC_BROWSER_TEST_F(NetworkServiceInvalidLogBrowserTest, Basic) { GURL test_url = embedded_test_server()->GetURL("foo.com", "/echo"); - StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())); + StoragePartitionImpl* partition = + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()); EXPECT_TRUE(NavigateToURL(shell(), test_url)); ASSERT_EQ(net::OK, LoadBasicRequest(partition->GetNetworkContext(), test_url));
diff --git a/content/browser/network_service_restart_browsertest.cc b/content/browser/network_service_restart_browsertest.cc index 101798f0..824ca9e5 100644 --- a/content/browser/network_service_restart_browsertest.cc +++ b/content/browser/network_service_restart_browsertest.cc
@@ -366,7 +366,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); network::mojom::NetworkContext* old_network_context = partition->GetNetworkContext(); @@ -391,7 +391,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter = partition->url_loader_factory_getter(); @@ -421,7 +421,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); auto factory_owner = IOThreadSharedURLLoaderFactoryOwner::Create( partition->url_loader_factory_getter().get()); @@ -451,7 +451,7 @@ std::unique_ptr<ShellBrowserContext> browser_context = std::make_unique<ShellBrowserContext>(true); auto* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context.get())); + browser_context->GetDefaultStoragePartition()); auto factory_owner = IOThreadSharedURLLoaderFactoryOwner::Create( partition->url_loader_factory_getter().get()); @@ -469,7 +469,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE( NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html"))); @@ -491,7 +491,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE(NavigateToURL(shell(), embedded_test_server()->GetURL("/echo"))); EXPECT_TRUE(CheckCanLoadHttp(shell(), "/title1.html")); @@ -517,8 +517,7 @@ IN_PROC_BROWSER_TEST_F(NetworkServiceRestartBrowserTest, BrowserUIFactory) { if (IsInProcessNetworkService()) return; - auto* partition = - BrowserContext::GetDefaultStoragePartition(browser_context()); + auto* partition = browser_context()->GetDefaultStoragePartition(); auto* factory = partition->GetURLLoaderFactoryForBrowserProcess().get(); EXPECT_EQ(net::OK, LoadBasicRequestOnUIThread(factory, GetTestURL())); @@ -540,8 +539,7 @@ base::ScopedAllowBlockingForTesting allow_blocking; std::unique_ptr<ShellBrowserContext> browser_context = std::make_unique<ShellBrowserContext>(true); - auto* partition = - BrowserContext::GetDefaultStoragePartition(browser_context.get()); + auto* partition = browser_context->GetDefaultStoragePartition(); scoped_refptr<network::SharedURLLoaderFactory> factory( partition->GetURLLoaderFactoryForBrowserProcess()); @@ -566,8 +564,7 @@ MAYBE_BrowserIOPendingFactory) { if (IsInProcessNetworkService()) return; - auto* partition = - BrowserContext::GetDefaultStoragePartition(browser_context()); + auto* partition = browser_context()->GetDefaultStoragePartition(); auto pending_shared_url_loader_factory = partition->GetURLLoaderFactoryForBrowserProcessIOThread(); @@ -590,8 +587,7 @@ IN_PROC_BROWSER_TEST_F(NetworkServiceRestartBrowserTest, BrowserIOFactory) { if (IsInProcessNetworkService()) return; - auto* partition = - BrowserContext::GetDefaultStoragePartition(browser_context()); + auto* partition = browser_context()->GetDefaultStoragePartition(); auto factory_owner = IOThreadSharedURLLoaderFactoryOwner::Create( partition->GetURLLoaderFactoryForBrowserProcessIOThread()); @@ -612,7 +608,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE(NavigateToURL(shell(), embedded_test_server()->GetURL("/echo"))); EXPECT_TRUE(CheckCanLoadHttpInWindowOpen("/title1.html")); @@ -663,7 +659,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE(NavigateToURL(shell(), embedded_test_server()->GetURL("/echo"))); EXPECT_TRUE(CheckCanWorkerFetch("worker1", "/title1.html")); @@ -689,7 +685,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); EXPECT_TRUE(NavigateToURL(shell(), embedded_test_server()->GetURL("/echo"))); EXPECT_TRUE(CheckCanWorkerFetch("worker1", "/title1.html")); @@ -732,7 +728,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ServiceWorkerStatusObserver observer; ServiceWorkerContextWrapper* service_worker_context = partition->GetServiceWorkerContext(); @@ -775,7 +771,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ServiceWorkerStatusObserver observer; ServiceWorkerContextWrapper* service_worker_context = partition->GetServiceWorkerContext(); @@ -818,7 +814,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ServiceWorkerStatusObserver observer; ServiceWorkerContextWrapper* service_worker_context = partition->GetServiceWorkerContext(); @@ -860,7 +856,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ServiceWorkerStatusObserver observer; ServiceWorkerContextWrapper* service_worker_context = partition->GetServiceWorkerContext(); @@ -905,7 +901,7 @@ if (IsInProcessNetworkService()) return; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); InjectTestSharedWorkerService(partition); @@ -1156,7 +1152,7 @@ // Flush the interface to make sure the error notification was received. StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->FlushNetworkInterfaceForTesting(); }; CommitMessageDelayer::DidCommitCallback pre_did_commit_callback =
diff --git a/content/browser/notifications/devtools_event_logging.cc b/content/browser/notifications/devtools_event_logging.cc index 4e23018..6e80bb63 100644 --- a/content/browser/notifications/devtools_event_logging.cc +++ b/content/browser/notifications/devtools_event_logging.cc
@@ -32,8 +32,7 @@ DevToolsBackgroundServicesContext* GetDevToolsContext( BrowserContext* browser_context, const GURL& origin) { - auto* storage_partition = - BrowserContext::GetStoragePartitionForUrl(browser_context, origin); + auto* storage_partition = browser_context->GetStoragePartitionForUrl(origin); if (!storage_partition) return nullptr;
diff --git a/content/browser/notifications/notification_event_dispatcher_impl.cc b/content/browser/notifications/notification_event_dispatcher_impl.cc index e1642ce..39b54da 100644 --- a/content/browser/notifications/notification_event_dispatcher_impl.cc +++ b/content/browser/notifications/notification_event_dispatcher_impl.cc
@@ -370,7 +370,7 @@ DCHECK(origin.is_valid()); StoragePartition* partition = - BrowserContext::GetStoragePartitionForUrl(browser_context, origin); + browser_context->GetStoragePartitionForUrl(origin); scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = static_cast<ServiceWorkerContextWrapper*>(
diff --git a/content/browser/payments/installed_payment_apps_finder_impl.cc b/content/browser/payments/installed_payment_apps_finder_impl.cc index 0447ad6..2595729 100644 --- a/content/browser/payments/installed_payment_apps_finder_impl.cc +++ b/content/browser/payments/installed_payment_apps_finder_impl.cc
@@ -72,7 +72,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context_)); + browser_context_->GetDefaultStoragePartition()); scoped_refptr<PaymentAppContextImpl> payment_app_context = partition->GetPaymentAppContext();
diff --git a/content/browser/payments/payment_app_browsertest.cc b/content/browser/payments/payment_app_browsertest.cc index 5e5f316f..48af249 100644 --- a/content/browser/payments/payment_app_browsertest.cc +++ b/content/browser/payments/payment_app_browsertest.cc
@@ -183,9 +183,10 @@ // for service workers, for all origins, for an unbounded time range. base::RunLoop run_loop; - static_cast<StoragePartitionImpl*>( - content::BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())) + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()) ->ClearData(StoragePartition::REMOVE_DATA_MASK_SERVICE_WORKERS, StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL, GURL(), base::Time(), base::Time::Max(), run_loop.QuitClosure());
diff --git a/content/browser/payments/payment_app_content_unittest_base.cc b/content/browser/payments/payment_app_content_unittest_base.cc index 04b1633..f126beed 100644 --- a/content/browser/payments/payment_app_content_unittest_base.cc +++ b/content/browser/payments/payment_app_content_unittest_base.cc
@@ -275,7 +275,7 @@ StoragePartitionImpl* PaymentAppContentUnitTestBase::storage_partition() { return static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); } PaymentAppContextImpl* PaymentAppContentUnitTestBase::payment_app_context() {
diff --git a/content/browser/payments/payment_app_installer.cc b/content/browser/payments/payment_app_installer.cc index f4cd122..11250c0 100644 --- a/content/browser/payments/payment_app_installer.cc +++ b/content/browser/payments/payment_app_installer.cc
@@ -66,7 +66,7 @@ web_contents->GetBrowserContext(); service_worker_context_ = base::WrapRefCounted(static_cast<ServiceWorkerContextWrapper*>( - browser_context->GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetServiceWorkerContext())); service_worker_context_->FindReadyRegistrationForScope( scope_, @@ -186,8 +186,7 @@ DCHECK(web_contents()->GetBrowserContext()); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - web_contents()->GetBrowserContext())); + web_contents()->GetBrowserContext()->GetDefaultStoragePartition()); scoped_refptr<PaymentAppContextImpl> payment_app_context = partition->GetPaymentAppContext();
diff --git a/content/browser/payments/payment_app_provider_impl.cc b/content/browser/payments/payment_app_provider_impl.cc index 81f1379..6880050 100644 --- a/content/browser/payments/payment_app_provider_impl.cc +++ b/content/browser/payments/payment_app_provider_impl.cc
@@ -149,8 +149,8 @@ } StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - payment_request_web_contents_->GetBrowserContext())); + payment_request_web_contents_->GetBrowserContext() + ->GetDefaultStoragePartition()); scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = partition->GetServiceWorkerContext(); @@ -215,8 +215,8 @@ const SupportedDelegations& supported_delegations, PaymentAppProvider::UpdatePaymentAppIconCallback callback) { StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - payment_request_web_contents_->GetBrowserContext())); + payment_request_web_contents_->GetBrowserContext() + ->GetDefaultStoragePartition()); scoped_refptr<PaymentAppContextImpl> payment_app_context = partition->GetPaymentAppContext(); @@ -256,8 +256,8 @@ } StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - payment_request_web_contents_->GetBrowserContext())); + payment_request_web_contents_->GetBrowserContext() + ->GetDefaultStoragePartition()); scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = partition->GetServiceWorkerContext(); @@ -288,8 +288,8 @@ } StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - payment_request_web_contents_->GetBrowserContext())); + payment_request_web_contents_->GetBrowserContext() + ->GetDefaultStoragePartition()); scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = partition->GetServiceWorkerContext(); @@ -339,9 +339,10 @@ PaymentAppProviderImpl::GetDevTools(const url::Origin& sw_origin) { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(payment_request_web_contents_); - auto* storage_partition = BrowserContext::GetStoragePartitionForUrl( - payment_request_web_contents_->GetBrowserContext(), sw_origin.GetURL(), - /*can_create=*/true); + auto* storage_partition = + payment_request_web_contents_->GetBrowserContext() + ->GetStoragePartitionForUrl(sw_origin.GetURL(), + /*can_create=*/true); if (!storage_partition) return nullptr; @@ -361,8 +362,8 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - payment_request_web_contents_->GetBrowserContext())); + payment_request_web_contents_->GetBrowserContext() + ->GetDefaultStoragePartition()); scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = partition->GetServiceWorkerContext();
diff --git a/content/browser/push_messaging/push_messaging_router.cc b/content/browser/push_messaging/push_messaging_router.cc index 3cfa2e3..f7c33c42 100644 --- a/content/browser/push_messaging/push_messaging_router.cc +++ b/content/browser/push_messaging/push_messaging_router.cc
@@ -98,7 +98,7 @@ ServiceWorkerStartCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); StoragePartition* partition = - BrowserContext::GetStoragePartitionForUrl(browser_context, origin); + browser_context->GetStoragePartitionForUrl(origin); scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext());
diff --git a/content/browser/quota/quota_change_browsertest.cc b/content/browser/quota/quota_change_browsertest.cc index 2214992a..5f7f1a71 100644 --- a/content/browser/quota/quota_change_browsertest.cc +++ b/content/browser/quota/quota_change_browsertest.cc
@@ -89,8 +89,10 @@ bool is_incognito() const { return is_incognito_; } QuotaManager* quota_manager() { - return BrowserContext::GetDefaultStoragePartition( - browser()->web_contents()->GetBrowserContext()) + return browser() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetQuotaManager(); }
diff --git a/content/browser/renderer_host/cookie_browsertest.cc b/content/browser/renderer_host/cookie_browsertest.cc index aeed467..84cfc62d 100644 --- a/content/browser/renderer_host/cookie_browsertest.cc +++ b/content/browser/renderer_host/cookie_browsertest.cc
@@ -70,7 +70,8 @@ url, cookie_line, base::Time::Now(), base::nullopt /* server_time */); base::RunLoop run_loop; - BrowserContext::GetDefaultStoragePartition(tab->GetBrowserContext()) + tab->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->SetCanonicalCookie( *cookie_obj, url, options, @@ -86,7 +87,8 @@ net::CookieOptions::SameSiteCookieContext::MakeInclusive()); net::CookieList result; base::RunLoop run_loop; - BrowserContext::GetDefaultStoragePartition(tab->GetBrowserContext()) + tab->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->GetCookieList( url, options,
diff --git a/content/browser/renderer_host/ipc_utils.cc b/content/browser/renderer_host/ipc_utils.cc index 740e8472..28d172a90 100644 --- a/content/browser/renderer_host/ipc_utils.cc +++ b/content/browser/renderer_host/ipc_utils.cc
@@ -118,8 +118,8 @@ if (params->blob_url_token.is_valid()) { *out_blob_url_loader_factory = ChromeBlobStorageContext::URLLoaderFactoryForToken( - BrowserContext::GetStoragePartition( - site_instance->GetBrowserContext(), site_instance), + site_instance->GetBrowserContext()->GetStoragePartition( + site_instance), std::move(params->blob_url_token)); }
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc index 2caf747..a1a67daa 100644 --- a/content/browser/renderer_host/navigation_controller_impl.cc +++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -2626,7 +2626,7 @@ site_info.GetStoragePartitionConfig(browser_context_); StoragePartition* partition = - BrowserContext::GetStoragePartition(browser_context_, partition_config); + browser_context_->GetStoragePartition(partition_config); DOMStorageContextWrapper* context_wrapper = static_cast<DOMStorageContextWrapper*>(partition->GetDOMStorageContext());
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc index ab66515..6a894a7 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc
@@ -892,9 +892,10 @@ // resolving the blob URL in the site instance it was loaded in. navigation_request->blob_url_loader_factory_ = ChromeBlobStorageContext::URLLoaderFactoryForUrl( - BrowserContext::GetStoragePartition( - frame_tree_node->navigator().controller().GetBrowserContext(), - frame_entry->site_instance()), + frame_tree_node->navigator() + .controller() + .GetBrowserContext() + ->GetStoragePartition(frame_entry->site_instance()), navigation_request->common_params().url); } } @@ -3327,8 +3328,8 @@ BrowserContext* browser_context = frame_tree_node_->navigator().controller().GetBrowserContext(); - StoragePartition* partition = BrowserContext::GetStoragePartition( - browser_context, navigating_frame_host->GetSiteInstance()); + StoragePartition* partition = browser_context->GetStoragePartition( + navigating_frame_host->GetSiteInstance()); DCHECK(partition); // |loader_| should not exist if the service worker handle and app cache
diff --git a/content/browser/renderer_host/origin_policy_throttle.cc b/content/browser/renderer_host/origin_policy_throttle.cc index 506db529..73ca2c4b 100644 --- a/content/browser/renderer_host/origin_policy_throttle.cc +++ b/content/browser/renderer_host/origin_policy_throttle.cc
@@ -61,7 +61,7 @@ const GURL& url) { DCHECK(browser_context); StoragePartitionImpl* storage_partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartitionForUrl(browser_context, url)); + browser_context->GetStoragePartitionForUrl(url)); network::mojom::OriginPolicyManager* origin_policy_manager = storage_partition->GetOriginPolicyManagerForBrowserProcess();
diff --git a/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc b/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc index b3a236c..77f0182 100644 --- a/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc +++ b/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc
@@ -42,8 +42,8 @@ return false; SiteInstance* site_instance = render_frame_host->GetSiteInstance(); - StoragePartition* storage_partition = BrowserContext::GetStoragePartition( - site_instance->GetBrowserContext(), site_instance); + StoragePartition* storage_partition = + site_instance->GetBrowserContext()->GetStoragePartition(site_instance); storage_partition->GetNetworkContext()->LookUpProxyForURL( url, render_frame_host->GetNetworkIsolationKey(),
diff --git a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc index 47fdcb8..5c171ec 100644 --- a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc +++ b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc
@@ -389,8 +389,8 @@ SiteInstance* site_instance = render_frame_host->GetSiteInstance(); network::mojom::NetworkContext* network_context = - BrowserContext::GetStoragePartition(site_instance->GetBrowserContext(), - site_instance) + site_instance->GetBrowserContext() + ->GetStoragePartition(site_instance) ->GetNetworkContext(); if (g_create_udp_socket_callback_for_testing) { g_create_udp_socket_callback_for_testing->Run(
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index 46ca65a..1ed1f57 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -4159,8 +4159,7 @@ } StoragePartition* RenderFrameHostImpl::GetStoragePartition() { - return BrowserContext::GetStoragePartition(GetBrowserContext(), - GetSiteInstance()); + return GetBrowserContext()->GetStoragePartition(GetSiteInstance()); } void RenderFrameHostImpl::RequestTextSurroundingSelection( @@ -5614,8 +5613,7 @@ } // This will clone the sessionStorage for namespace_id_to_clone. - StoragePartition* storage_partition = BrowserContext::GetStoragePartition( - GetSiteInstance()->GetBrowserContext(), GetSiteInstance()); + StoragePartition* storage_partition = GetStoragePartition(); DOMStorageContextWrapper* dom_storage_context = static_cast<DOMStorageContextWrapper*>( storage_partition->GetDOMStorageContext()); @@ -6922,9 +6920,7 @@ } #endif - auto* partition = - static_cast<StoragePartitionImpl*>(BrowserContext::GetStoragePartition( - browser_context, GetSiteInstance())); + auto* partition = static_cast<StoragePartitionImpl*>(GetStoragePartition()); non_network_factories.emplace( url::kFileSystemScheme, CreateFileSystemURLLoaderFactory( GetProcess()->GetID(), GetFrameTreeNodeId(), @@ -7017,9 +7013,8 @@ // factories. TODO(kinuko): Consider setting this up only when prefetch // is used. Currently we have this here to make sure we have non-racy // situation (https://crbug.com/849929). - auto* storage_partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartition( - GetSiteInstance()->GetBrowserContext(), GetSiteInstance())); + auto* storage_partition = + static_cast<StoragePartitionImpl*>(GetStoragePartition()); storage_partition->GetPrefetchURLLoaderService()->GetFactory( prefetch_loader_factory.InitWithNewPipeAndPassReceiver(), frame_tree_node_->frame_tree_node_id(), @@ -7882,8 +7877,7 @@ (!network_service_disconnect_handler_holder_ || !network_service_disconnect_handler_holder_.is_connected())) { network_service_disconnect_handler_holder_.reset(); - StoragePartition* storage_partition = BrowserContext::GetStoragePartition( - GetSiteInstance()->GetBrowserContext(), GetSiteInstance()); + StoragePartition* storage_partition = GetStoragePartition(); network::mojom::URLLoaderFactoryParamsPtr monitoring_factory_params = network::mojom::URLLoaderFactoryParams::New(); monitoring_factory_params->process_id = GetProcess()->GetID();
diff --git a/content/browser/renderer_host/render_process_host_browsertest.cc b/content/browser/renderer_host/render_process_host_browsertest.cc index cfcfe02..fc7b06e 100644 --- a/content/browser/renderer_host/render_process_host_browsertest.cc +++ b/content/browser/renderer_host/render_process_host_browsertest.cc
@@ -489,9 +489,9 @@ // Class that simulates the fact that some //content embedders (e.g. by // overriding ChromeContentBrowserClient::GetStoragePartitionConfigForSite) can -// cause BrowserContext::GetDefaultStoragePartition(browser_context) to differ -// from BrowserContext::GetStoragePartition(browser_context, site_instance) even -// if |site_instance| is not for guests. +// cause `browser_context->GetDefaultStoragePartition()` to differ from +// `browser_context->GetStoragePartition(site_instance)` even if `site_instance` +// is not for guests. class CustomStoragePartitionForSomeSites : public TestContentBrowserClient { public: explicit CustomStoragePartitionForSomeSites(const GURL& site_to_isolate) @@ -542,9 +542,9 @@ ContentBrowserClient* old_client = SetBrowserClientForTesting(&modified_client); StoragePartition* default_storage = - BrowserContext::GetDefaultStoragePartition(browser_context); - StoragePartition* custom_storage = BrowserContext::GetStoragePartition( - browser_context, test_site_instance.get()); + browser_context->GetDefaultStoragePartition(); + StoragePartition* custom_storage = + browser_context->GetStoragePartition(test_site_instance.get()); EXPECT_NE(default_storage, custom_storage); // Open a test window - it should be associated with the default storage
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 7443edf6..3ae3008 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -546,7 +546,7 @@ void WarmupSpareRenderProcessHost(BrowserContext* browser_context) { if (spare_render_process_host_ && spare_render_process_host_->GetBrowserContext() == browser_context) { - DCHECK_EQ(BrowserContext::GetDefaultStoragePartition(browser_context), + DCHECK_EQ(browser_context->GetDefaultStoragePartition(), spare_render_process_host_->GetStoragePartition()); return; // Nothing to warm up. } @@ -627,7 +627,7 @@ // Get the StoragePartition for |site_instance|. Note that this might be // different than the default StoragePartition for |browser_context|. StoragePartition* site_storage = - BrowserContext::GetStoragePartition(browser_context, site_instance); + browser_context->GetStoragePartition(site_instance); // Log UMA metrics. using SpareProcessMaybeTakeAction = @@ -981,7 +981,7 @@ // TODO(alexmos): Sites should be tracked separately for each // StoragePartition. For now, track them only in the default one. StoragePartition* default_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); if (dest_partition != default_partition) return false; @@ -1004,9 +1004,9 @@ return false; return ShouldUseSiteProcessTracking( - browser_context, BrowserContext::GetStoragePartition( - browser_context, site_info.GetStoragePartitionConfig( - browser_context))); + browser_context, + browser_context->GetStoragePartition( + site_info.GetStoragePartitionConfig(browser_context))); } const void* const kUnmatchedServiceWorkerProcessTrackerKey = @@ -1534,7 +1534,7 @@ StoragePartitionImpl* storage_partition_impl = static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartition(browser_context, site_instance)); + browser_context->GetStoragePartition(site_instance)); // If we've made a StoragePartition for guests (e.g., for the <webview> tag), // stash the Site URL on it. This way, when we start a service worker inside @@ -3952,8 +3952,8 @@ // Check whether the given host and the intended site_info will be using the // same StoragePartition, since a RenderProcessHost can only support a // single StoragePartition. This is relevant for packaged apps. - StoragePartition* dest_partition = BrowserContext::GetStoragePartition( - browser_context, site_info.GetStoragePartitionConfig(browser_context)); + StoragePartition* dest_partition = browser_context->GetStoragePartition( + site_info.GetStoragePartitionConfig(browser_context)); if (!host->InSameStoragePartition(dest_partition)) return false; @@ -4377,8 +4377,8 @@ // Make sure the chosen process is in the correct StoragePartition for the // SiteInstance. CHECK(render_process_host->InSameStoragePartition( - BrowserContext::GetStoragePartition(browser_context, site_instance, - false /* can_create */))); + browser_context->GetStoragePartition(site_instance, + false /* can_create */))); return render_process_host; }
diff --git a/content/browser/security_exploit_browsertest.cc b/content/browser/security_exploit_browsertest.cc index 9cf297b..ddf3679d 100644 --- a/content/browser/security_exploit_browsertest.cc +++ b/content/browser/security_exploit_browsertest.cc
@@ -697,10 +697,10 @@ // Block the renderer on operation that never completes, to shield it from // receiving unexpected browser->renderer IPCs that might CHECK. rfh->ExecuteJavaScriptWithUserGestureForTests( - base::ASCIIToUTF16("var r = new XMLHttpRequest();" - "r.open('GET', '/slow?99999', false);" - "r.send(null);" - "while (1);")); + u"var r = new XMLHttpRequest();" + u"r.open('GET', '/slow?99999', false);" + u"r.send(null);" + u"while (1);"); // Set up a blob ID and populate it with attacker-controlled value. This // is just using the blob APIs directly since creating arbitrary blobs is not
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc index 603684d..0cb3d2c 100644 --- a/content/browser/service_worker/service_worker_browsertest.cc +++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -353,8 +353,10 @@ void SetUpOnMainThread() override { ASSERT_TRUE(embedded_test_server()->InitializeAndListen()); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); wrapper_ = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext()); } @@ -2253,8 +2255,10 @@ static const char kScriptUrl[]; int GetSideDataSize() { - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); return CacheStorageSideDataSizeChecker::GetSize( partition->GetCacheStorageControl(), embedded_test_server()->base_url(), std::string("cache_name"), embedded_test_server()->GetURL(kScriptUrl));
diff --git a/content/browser/service_worker/service_worker_clients_api_browsertest.cc b/content/browser/service_worker/service_worker_clients_api_browsertest.cc index dd22026..809aa38a9 100644 --- a/content/browser/service_worker/service_worker_clients_api_browsertest.cc +++ b/content/browser/service_worker/service_worker_clients_api_browsertest.cc
@@ -52,8 +52,10 @@ void SetUpOnMainThread() override { embedded_test_server()->StartAcceptingConnections(); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); wrapper_ = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext()); }
diff --git a/content/browser/service_worker/service_worker_context_wrapper_unittest.cc b/content/browser/service_worker/service_worker_context_wrapper_unittest.cc index 11142cd..6c24448 100644 --- a/content/browser/service_worker/service_worker_context_wrapper_unittest.cc +++ b/content/browser/service_worker/service_worker_context_wrapper_unittest.cc
@@ -58,8 +58,8 @@ base::Unretained(this))); StoragePartitionImpl* storage_partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetStoragePartitionForUrl( - browser_context_.get(), GURL("https://example.com"))); + browser_context_->GetStoragePartitionForUrl( + GURL("https://example.com"))); wrapper_->set_storage_partition(storage_partition); wrapper_->Init(user_data_directory_.GetPath(), nullptr, nullptr, nullptr, url_loader_factory_getter_.get());
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc b/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc index 40542a49..c116756 100644 --- a/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc +++ b/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc
@@ -108,8 +108,10 @@ void SetUpOnMainThread() override { ASSERT_TRUE(embedded_test_server()->InitializeAndListen()); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); wrapper_ = base::WrapRefCounted(static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext())); }
diff --git a/content/browser/service_worker/service_worker_file_upload_browsertest.cc b/content/browser/service_worker/service_worker_file_upload_browsertest.cc index a9ce492..a15cbf7c 100644 --- a/content/browser/service_worker/service_worker_file_upload_browsertest.cc +++ b/content/browser/service_worker/service_worker_file_upload_browsertest.cc
@@ -85,8 +85,10 @@ // be used for cross-origin URLs. host_resolver()->AddRule("*", "127.0.0.1"); embedded_test_server()->StartAcceptingConnections(); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); wrapper_ = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext()); }
diff --git a/content/browser/service_worker/service_worker_internals_ui.cc b/content/browser/service_worker/service_worker_internals_ui.cc index b46221a3..86b7af6ca 100644 --- a/content/browser/service_worker/service_worker_internals_ui.cc +++ b/content/browser/service_worker/service_worker_internals_ui.cc
@@ -418,11 +418,9 @@ web_ui()->GetWebContents()->GetBrowserContext(); // Safe to use base::Unretained(this) because // ForEachStoragePartition is synchronous. - BrowserContext::ForEachStoragePartition( - browser_context, - base::BindRepeating( - &ServiceWorkerInternalsHandler::RemoveObserverFromStoragePartition, - base::Unretained(this))); + browser_context->ForEachStoragePartition(base::BindRepeating( + &ServiceWorkerInternalsHandler::RemoveObserverFromStoragePartition, + base::Unretained(this))); weak_ptr_factory_.InvalidateWeakPtrs(); } @@ -509,11 +507,9 @@ web_ui()->GetWebContents()->GetBrowserContext(); // Safe to use base::Unretained(this) because // ForEachStoragePartition is synchronous. - BrowserContext::ForEachStoragePartition( - browser_context, - base::BindRepeating( - &ServiceWorkerInternalsHandler::AddContextFromStoragePartition, - base::Unretained(this))); + browser_context->ForEachStoragePartition(base::BindRepeating( + &ServiceWorkerInternalsHandler::AddContextFromStoragePartition, + base::Unretained(this))); } void ServiceWorkerInternalsHandler::AddContextFromStoragePartition( @@ -573,11 +569,9 @@ BrowserContext* browser_context = web_ui()->GetWebContents()->GetBrowserContext(); StoragePartition* result_partition(nullptr); - BrowserContext::ForEachStoragePartition( - browser_context, - base::BindRepeating(&ServiceWorkerInternalsHandler::FindContext, - base::Unretained(this), partition_id, - &result_partition)); + browser_context->ForEachStoragePartition(base::BindRepeating( + &ServiceWorkerInternalsHandler::FindContext, base::Unretained(this), + partition_id, &result_partition)); if (!result_partition) return false; *context = static_cast<ServiceWorkerContextWrapper*>(
diff --git a/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc b/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc index 800f494..103e767 100644 --- a/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc +++ b/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc
@@ -204,8 +204,10 @@ void SetUpOnMainThread() override { ASSERT_TRUE(embedded_test_server()->Start()); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); wrapper_ = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext()); }
diff --git a/content/browser/service_worker/service_worker_process_browsertest.cc b/content/browser/service_worker/service_worker_process_browsertest.cc index af2e3ac..608c66d 100644 --- a/content/browser/service_worker/service_worker_process_browsertest.cc +++ b/content/browser/service_worker/service_worker_process_browsertest.cc
@@ -47,8 +47,10 @@ host_resolver()->AddRule("*", "127.0.0.1"); ASSERT_TRUE(embedded_test_server()->Start()); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); wrapper_ = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext()); }
diff --git a/content/browser/service_worker/service_worker_process_manager_unittest.cc b/content/browser/service_worker/service_worker_process_manager_unittest.cc index 4e34e23..1595c65 100644 --- a/content/browser/service_worker/service_worker_process_manager_unittest.cc +++ b/content/browser/service_worker/service_worker_process_manager_unittest.cc
@@ -251,7 +251,7 @@ // would be no added value to this test since MockRenderProcessHost is not // StoragePartition-aware. StoragePartitionImpl* storage_partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context_.get())); + browser_context_->GetDefaultStoragePartition()); storage_partition->set_site_for_guest_service_worker_or_shared_worker( site_instance->GetSiteURL()); process_manager_->set_storage_partition(storage_partition);
diff --git a/content/browser/service_worker/service_worker_single_script_update_checker_unittest.cc b/content/browser/service_worker/service_worker_single_script_update_checker_unittest.cc index 80d9048b..710181512 100644 --- a/content/browser/service_worker/service_worker_single_script_update_checker_unittest.cc +++ b/content/browser/service_worker/service_worker_single_script_update_checker_unittest.cc
@@ -65,7 +65,7 @@ : task_environment_(BrowserTaskEnvironment::IO_MAINLOOP), browser_context_(std::make_unique<TestBrowserContext>()) { // Ensure the BrowserContext's storage partition is initialized. - BrowserContext::GetDefaultStoragePartition(browser_context_.get()); + browser_context_->GetDefaultStoragePartition(); base::RunLoop().RunUntilIdle(); } ~ServiceWorkerSingleScriptUpdateCheckerTest() override = default;
diff --git a/content/browser/service_worker/service_worker_version_browsertest.cc b/content/browser/service_worker/service_worker_version_browsertest.cc index d21848b..ee70747 100644 --- a/content/browser/service_worker/service_worker_version_browsertest.cc +++ b/content/browser/service_worker/service_worker_version_browsertest.cc
@@ -343,8 +343,10 @@ void SetUpOnMainThread() override { ASSERT_TRUE(embedded_test_server()->InitializeAndListen()); - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); wrapper_ = base::WrapRefCounted(static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext())); }
diff --git a/content/browser/speech/speech_recognition_dispatcher_host.cc b/content/browser/speech/speech_recognition_dispatcher_host.cc index dc06b07..9982c50b 100644 --- a/content/browser/speech/speech_recognition_dispatcher_host.cc +++ b/content/browser/speech/speech_recognition_dispatcher_host.cc
@@ -129,8 +129,8 @@ ->FilterProfanities(embedder_render_process_id); content::BrowserContext* browser_context = web_contents->GetBrowserContext(); - StoragePartition* storage_partition = BrowserContext::GetStoragePartition( - browser_context, web_contents->GetSiteInstance()); + StoragePartition* storage_partition = + browser_context->GetStoragePartition(web_contents->GetSiteInstance()); GetIOThreadTaskRunner({})->PostTask( FROM_HERE,
diff --git a/content/browser/storage_partition_impl_browsertest.cc b/content/browser/storage_partition_impl_browsertest.cc index 1a8bd504e..34ce3d9 100644 --- a/content/browser/storage_partition_impl_browsertest.cc +++ b/content/browser/storage_partition_impl_browsertest.cc
@@ -167,8 +167,10 @@ params->automatically_assign_isolation_info = true; params->is_corb_enabled = false; mojo::Remote<network::mojom::URLLoaderFactory> loader_factory; - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateURLLoaderFactory(loader_factory.BindNewPipeAndPassReceiver(), std::move(params)); @@ -203,8 +205,10 @@ base::ScopedAllowBlockingForTesting allow_blocking; auto pending_shared_url_loader_factory = - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcessIOThread(); auto factory_owner = IOThreadSharedURLLoaderFactoryOwner::Create( @@ -223,8 +227,7 @@ base::ScopedAllowBlockingForTesting allow_blocking; std::unique_ptr<ShellBrowserContext> browser_context = std::make_unique<ShellBrowserContext>(true); - auto* partition = - BrowserContext::GetDefaultStoragePartition(browser_context.get()); + auto* partition = browser_context->GetDefaultStoragePartition(); auto pending_shared_url_loader_factory = partition->GetURLLoaderFactoryForBrowserProcessIOThread(); @@ -247,8 +250,7 @@ base::ScopedAllowBlockingForTesting allow_blocking; std::unique_ptr<ShellBrowserContext> browser_context = std::make_unique<ShellBrowserContext>(true); - auto* partition = - BrowserContext::GetDefaultStoragePartition(browser_context.get()); + auto* partition = browser_context->GetDefaultStoragePartition(); auto factory_owner = IOThreadSharedURLLoaderFactoryOwner::Create( partition->GetURLLoaderFactoryForBrowserProcessIOThread()); @@ -269,8 +271,7 @@ base::ScopedAllowBlockingForTesting allow_blocking; std::unique_ptr<ShellBrowserContext> browser_context = std::make_unique<ShellBrowserContext>(true); - auto* partition = - BrowserContext::GetDefaultStoragePartition(browser_context.get()); + auto* partition = browser_context->GetDefaultStoragePartition(); // Run a request the first time without the interceptor set, as the // StoragePartitionImpl lazily creates the factory and we want to make sure
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc index 1d34716..0fe9dfe 100644 --- a/content/browser/storage_partition_impl_unittest.cc +++ b/content/browser/storage_partition_impl_unittest.cc
@@ -247,8 +247,7 @@ RemoveLocalStorageTester(content::BrowserTaskEnvironment* task_environment, TestBrowserContext* browser_context) : task_environment_(task_environment), - storage_partition_( - BrowserContext::GetDefaultStoragePartition(browser_context)), + storage_partition_(browser_context->GetDefaultStoragePartition()), dom_storage_context_(storage_partition_->GetDOMStorageContext()) {} ~RemoveLocalStorageTester() { @@ -872,8 +871,7 @@ InitShaderCacheFactorySingleton(base::ThreadTaskRunnerHandle::Get()); GetShaderCacheFactorySingleton()->SetCacheInfo( kDefaultClientId, - BrowserContext::GetDefaultStoragePartition(browser_context()) - ->GetPath()); + browser_context()->GetDefaultStoragePartition()->GetPath()); cache_ = GetShaderCacheFactorySingleton()->Get(kDefaultClientId); } @@ -916,8 +914,7 @@ base::RunLoop run_loop; base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&ClearData, - BrowserContext::GetDefaultStoragePartition( - browser_context()), + browser_context()->GetDefaultStoragePartition(), &run_loop)); run_loop.Run(); EXPECT_EQ(0u, Size()); @@ -997,7 +994,7 @@ PopulateTestQuotaManagedData(GetMockManager(), kOrigin1, kOrigin2, kOrigin3); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::RunLoop run_loop; @@ -1026,7 +1023,7 @@ PopulateTestQuotaManagedTemporaryData(GetMockManager(), kOrigin1, kOrigin2); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::RunLoop run_loop; @@ -1051,7 +1048,7 @@ PopulateTestQuotaManagedPersistentData(GetMockManager(), kOrigin1, kOrigin2); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::RunLoop run_loop; @@ -1075,7 +1072,7 @@ const url::Origin kOrigin3 = url::Origin::Create(GURL("http://host3:1/")); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::RunLoop run_loop; @@ -1105,7 +1102,7 @@ PopulateTestQuotaManagedData(GetMockManager(), kOrigin1, kOrigin2, kOrigin3); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::RunLoop run_loop; @@ -1136,7 +1133,7 @@ PopulateTestQuotaManagedData(GetMockManager(), kOrigin1, kOrigin2, kOrigin3); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::RunLoop run_loop; @@ -1170,7 +1167,7 @@ base::RunLoop run_loop; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, @@ -1205,7 +1202,7 @@ PopulateTestQuotaManagedData(GetMockManager(), kOrigin1, kOrigin2, kOrigin3); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); partition->OverrideSpecialStoragePolicyForTesting(mock_policy.get()); @@ -1245,7 +1242,7 @@ // Try to remove kOrigin1. Expect success. base::RunLoop run_loop; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); partition->OverrideSpecialStoragePolicyForTesting(mock_policy.get()); base::ThreadTaskRunnerHandle::Get()->PostTask( @@ -1278,7 +1275,7 @@ base::RunLoop run_loop; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideQuotaManagerForTesting(GetMockManager()); base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, @@ -1297,8 +1294,7 @@ TEST_F(StoragePartitionImplTest, RemoveCookieForever) { const url::Origin kOrigin = url::Origin::Create(GURL("http://host1:1/")); - StoragePartition* partition = - BrowserContext::GetDefaultStoragePartition(browser_context()); + StoragePartition* partition = browser_context()->GetDefaultStoragePartition(); RemoveCookieTester tester(partition); tester.AddCookie(kOrigin); @@ -1316,8 +1312,7 @@ TEST_F(StoragePartitionImplTest, RemoveCookieLastHour) { const url::Origin kOrigin = url::Origin::Create(GURL("http://host1:1/")); - StoragePartition* partition = - BrowserContext::GetDefaultStoragePartition(browser_context()); + StoragePartition* partition = browser_context()->GetDefaultStoragePartition(); RemoveCookieTester tester(partition); tester.AddCookie(kOrigin); @@ -1337,8 +1332,7 @@ TEST_F(StoragePartitionImplTest, RemoveCookieWithDeleteInfo) { const url::Origin kOrigin = url::Origin::Create(GURL("http://host1:1/")); - StoragePartition* partition = - BrowserContext::GetDefaultStoragePartition(browser_context()); + StoragePartition* partition = browser_context()->GetDefaultStoragePartition(); RemoveCookieTester tester(partition); tester.AddCookie(kOrigin); @@ -1356,7 +1350,7 @@ const url::Origin kOrigin = url::Origin::Create(GURL("http://host1:1/")); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); RemoveInterestGroupTester tester(partition); tester.AddInterestGroup(kOrigin); @@ -1385,7 +1379,7 @@ tester.AddDOMStorageTestData(kOrigin1, kOrigin2, kOrigin3); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideSpecialStoragePolicyForTesting(mock_policy.get()); base::RunLoop run_loop; @@ -1420,7 +1414,7 @@ tester.AddDOMStorageTestData(kOrigin1, kOrigin2, kOrigin3); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); partition->OverrideSpecialStoragePolicyForTesting(mock_policy.get()); base::RunLoop run_loop; @@ -1455,7 +1449,7 @@ tester.AddDOMStorageTestData(kOrigin1, kOrigin2, kOrigin3); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); base::Time a_week_ago = base::Time::Now() - base::TimeDelta::FromDays(7); base::RunLoop run_loop; @@ -1483,7 +1477,7 @@ const GURL kResourceURL("http://host4/script.js"); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); // Ensure code cache is initialized. base::RunLoop().RunUntilIdle(); EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); @@ -1517,7 +1511,7 @@ const GURL kFilterResourceURLForCodeCache("http://host5/script.js"); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); // Ensure code cache is initialized. base::RunLoop().RunUntilIdle(); EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); @@ -1559,7 +1553,7 @@ const GURL kFilterResourceURLForCodeCache("http://host5/script.js"); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); // Ensure code cache is initialized. base::RunLoop().RunUntilIdle(); EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); @@ -1611,7 +1605,7 @@ const GURL kResourceURL("http://host4/script.js"); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); // Ensure code cache is initialized. base::RunLoop().RunUntilIdle(); EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); @@ -1645,7 +1639,7 @@ browser_context()->set_is_off_the_record(true); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); base::RunLoop().RunUntilIdle(); // We should not create GeneratedCodeCacheContext for off the record mode. EXPECT_EQ(nullptr, partition->GetGeneratedCodeCacheContext()); @@ -1665,7 +1659,7 @@ const url::Origin kOrigin2 = url::Origin::Create(GURL("http://host2:1/")); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); RemovePluginPrivateDataTester tester(partition->GetFileSystemContext()); tester.AddPluginPrivateTestData(kOrigin1.GetURL(), kOrigin2.GetURL()); @@ -1687,7 +1681,7 @@ const url::Origin kOrigin2 = url::Origin::Create(GURL("http://host2:1/")); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); base::Time a_week_ago = base::Time::Now() - base::TimeDelta::FromDays(7); RemovePluginPrivateDataTester tester(partition->GetFileSystemContext()); @@ -1713,7 +1707,7 @@ const url::Origin kOrigin2 = url::Origin::Create(GURL("http://host2:1/")); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); RemovePluginPrivateDataTester tester(partition->GetFileSystemContext()); tester.AddPluginPrivateTestData(kOrigin1.GetURL(), kOrigin2.GetURL()); @@ -1737,7 +1731,7 @@ const url::Origin kOrigin2 = url::Origin::Create(GURL("http://host2:1/")); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); RemovePluginPrivateDataTester tester(partition->GetFileSystemContext()); tester.AddPluginPrivateTestData(kOrigin1.GetURL(), kOrigin2.GetURL()); @@ -1800,7 +1794,7 @@ TEST_F(StoragePartitionImplTest, ConversionsClearDataForOrigin) { StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ConversionManagerImpl* conversion_manager = partition->GetConversionManager(); @@ -1823,7 +1817,7 @@ TEST_F(StoragePartitionImplTest, ConversionsClearDataWrongMask) { StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ConversionManagerImpl* conversion_manager = partition->GetConversionManager(); @@ -1850,7 +1844,7 @@ TEST_F(StoragePartitionImplTest, ConversionsClearAllData) { StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ConversionManagerImpl* conversion_manager = partition->GetConversionManager(); @@ -1878,7 +1872,7 @@ TEST_F(StoragePartitionImplTest, ConversionsClearDataForFilter) { StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); ConversionManagerImpl* conversion_manager = partition->GetConversionManager(); @@ -1936,7 +1930,7 @@ }; StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); MockDataRemovalObserver observer(partition); // Confirm that each of the StoragePartition interfaces for clearing origin @@ -2029,7 +2023,7 @@ })); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); auto request = network::mojom::FulfillTrustTokenIssuanceRequest::New(); request->request = "Some tokens, please"; @@ -2089,7 +2083,7 @@ base::Unretained(&mock_fulfiller))); StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); auto request = network::mojom::FulfillTrustTokenIssuanceRequest::New(); base::RunLoop run_loop; @@ -2137,7 +2131,7 @@ #endif // defined(OS_ANDROID) StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context())); + browser_context()->GetDefaultStoragePartition()); auto request = network::mojom::FulfillTrustTokenIssuanceRequest::New(); base::RunLoop run_loop;
diff --git a/content/browser/storage_service_restart_browsertest.cc b/content/browser/storage_service_restart_browsertest.cc index 7923d29..100b61b 100644 --- a/content/browser/storage_service_restart_browsertest.cc +++ b/content/browser/storage_service_restart_browsertest.cc
@@ -32,9 +32,11 @@ } DOMStorageContextWrapper* dom_storage() { - auto* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())); + auto* partition = + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()); return partition->GetDOMStorageContext(); }
diff --git a/content/browser/storage_service_sandbox_browsertest.cc b/content/browser/storage_service_sandbox_browsertest.cc index 852c15d6..f3fdcd20 100644 --- a/content/browser/storage_service_sandbox_browsertest.cc +++ b/content/browser/storage_service_sandbox_browsertest.cc
@@ -34,9 +34,11 @@ } DOMStorageContextWrapper* dom_storage() { - auto* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())); + auto* partition = + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()); return partition->GetDOMStorageContext(); }
diff --git a/content/browser/web_contents/file_chooser_impl.cc b/content/browser/web_contents/file_chooser_impl.cc index ed219fd5..ab5d4c54 100644 --- a/content/browser/web_contents/file_chooser_impl.cc +++ b/content/browser/web_contents/file_chooser_impl.cc
@@ -179,10 +179,7 @@ if (file->is_file_system()) { if (!file_system_context) { file_system_context = - BrowserContext::GetStoragePartition( - render_frame_host_->GetProcess()->GetBrowserContext(), - render_frame_host_->GetSiteInstance()) - ->GetFileSystemContext(); + render_frame_host_->GetStoragePartition()->GetFileSystemContext(); } policy->GrantReadFileSystem( pid, file_system_context->CrackURL(file->get_file_system()->url)
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 2cb5a233..7d30030 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -3566,8 +3566,8 @@ GetBrowserContext()); { - StoragePartition* partition = BrowserContext::GetStoragePartition( - GetBrowserContext(), source_site_instance); + StoragePartition* partition = + GetBrowserContext()->GetStoragePartition(source_site_instance); DOMStorageContextWrapper* dom_storage_context = static_cast<DOMStorageContextWrapper*>( partition->GetDOMStorageContext());
diff --git a/content/browser/web_package/signed_exchange_reporter.cc b/content/browser/web_package/signed_exchange_reporter.cc index 8c5b9cde..bfd33b32 100644 --- a/content/browser/web_package/signed_exchange_reporter.cc +++ b/content/browser/web_package/signed_exchange_reporter.cc
@@ -133,8 +133,8 @@ WebContents* web_contents = WebContents::FromRenderFrameHost(frame_host); if (!web_contents) return; - StoragePartition* partition = BrowserContext::GetStoragePartition( - web_contents->GetBrowserContext(), site_instance); + StoragePartition* partition = + web_contents->GetBrowserContext()->GetStoragePartition(site_instance); DCHECK(partition); partition->GetNetworkContext()->QueueSignedExchangeReport( std::move(report), network_isolation_key);
diff --git a/content/browser/web_package/signed_exchange_request_handler_browsertest.cc b/content/browser/web_package/signed_exchange_request_handler_browsertest.cc index f7a0546..a4051327 100644 --- a/content/browser/web_package/signed_exchange_request_handler_browsertest.cc +++ b/content/browser/web_package/signed_exchange_request_handler_browsertest.cc
@@ -261,9 +261,11 @@ void SetAcceptLangs(const std::string langs) { client_.SetAcceptLangs(langs); - StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext())); + StoragePartitionImpl* partition = + static_cast<StoragePartitionImpl*>(shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition()); partition->GetPrefetchURLLoaderService()->SetAcceptLanguages(langs); } @@ -1483,8 +1485,10 @@ const net::NetworkIsolationKey& network_isolation_key) { base::RunLoop run_loop; network::mojom::NetworkContext* network_context = - BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetNetworkContext(); network_context->AddExpectCT( domain, base::Time::Now() + base::TimeDelta::FromDays(1) /* expiry */,
diff --git a/content/browser/webui/web_ui_browsertest.cc b/content/browser/webui/web_ui_browsertest.cc index 481f833..ab89f6b1 100644 --- a/content/browser/webui/web_ui_browsertest.cc +++ b/content/browser/webui/web_ui_browsertest.cc
@@ -167,8 +167,8 @@ protected: void SendMessageAndWaitForFinish() { main_rfh()->ExecuteJavaScriptForTests( - base::ASCIIToUTF16("chrome.send('messageRequiringGesture');" - "chrome.send('notifyFinish');"), + u"chrome.send('messageRequiringGesture');" + u"chrome.send('notifyFinish');", base::NullCallback()); base::RunLoop run_loop; test_handler()->set_finish_closure(run_loop.QuitClosure()); @@ -349,8 +349,8 @@ // to use a test-only helper to instantiate a scoped user gesture in the // renderer. main_rfh()->ExecuteJavaScriptWithUserGestureForTests( - base::ASCIIToUTF16("chrome.send('messageRequiringGesture');" - "chrome.send('notifyFinish');")); + u"chrome.send('messageRequiringGesture');" + u"chrome.send('notifyFinish');"); base::RunLoop run_loop; test_handler()->set_finish_closure(run_loop.QuitClosure()); run_loop.Run();
diff --git a/content/browser/webui/web_ui_message_handler_unittest.cc b/content/browser/webui/web_ui_message_handler_unittest.cc index f7cd63f..9c8c5e9 100644 --- a/content/browser/webui/web_ui_message_handler_unittest.cc +++ b/content/browser/webui/web_ui_message_handler_unittest.cc
@@ -95,11 +95,11 @@ TEST(WebUIMessageHandlerTest, ExtractStringValue) { base::ListValue list; - static const char in_string[] = - "The facts, though interesting, are irrelevant."; - list.AppendString(in_string); + static constexpr char16_t kInString[] = + u"The facts, though interesting, are irrelevant."; + list.AppendString(kInString); std::u16string out_string = WebUIMessageHandler::ExtractStringValue(&list); - EXPECT_EQ(base::ASCIIToUTF16(in_string), out_string); + EXPECT_EQ(kInString, out_string); } class TestWebUIMessageHandler : public WebUIMessageHandler {
diff --git a/content/browser/worker_host/dedicated_worker_host.cc b/content/browser/worker_host/dedicated_worker_host.cc index 82816ff..5b25dfb1 100644 --- a/content/browser/worker_host/dedicated_worker_host.cc +++ b/content/browser/worker_host/dedicated_worker_host.cc
@@ -33,6 +33,7 @@ #include "mojo/public/cpp/system/message_pipe.h" #include "net/base/isolation_info.h" #include "services/metrics/public/cpp/ukm_source_id.h" +#include "services/network/public/cpp/cross_origin_embedder_policy.h" #include "services/network/public/mojom/fetch_api.mojom.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/service_worker/service_worker_scope_match.h" @@ -436,25 +437,26 @@ if (!creator_coep_reporter_) return false; - // > 4. If ownerPolicy's report-only value is "require-corp" and policy's - // value is "unsafe-none", then queue a cross-origin embedder policy - // inheritance violation with response, "worker initialization", owner's - // policy's report only reporting endpoint, "reporting", and owner. - if (creator_cross_origin_embedder_policy.report_only_value == - network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp && - worker_cross_origin_embedder_policy.value == - network::mojom::CrossOriginEmbedderPolicyValue::kNone) { + // > 4. If ownerPolicy's report-only value is "require-corp" or + // "cors-or-credentialless" and policy's value is "unsafe-none", then queue a + // cross-origin embedder policy inheritance violation with response, "worker + // initialization", owner's policy's report only reporting endpoint, + // "reporting", and owner. + if (network::CompatibleWithCrossOriginIsolated( + creator_cross_origin_embedder_policy.report_only_value) && + !network::CompatibleWithCrossOriginIsolated( + worker_cross_origin_embedder_policy)) { creator_coep_reporter_->QueueWorkerInitializationReport( final_response_url_.value(), /*report_only=*/true); } // > 5. If ownerPolicy's value is "unsafe-none" or policy's value is - // "require-corp", then return true. - if (creator_cross_origin_embedder_policy.value == - network::mojom::CrossOriginEmbedderPolicyValue::kNone || - worker_cross_origin_embedder_policy.value == - network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp) { + // "require-corp" or "cors-or-credentialless", then return true. + if (!network::CompatibleWithCrossOriginIsolated( + creator_cross_origin_embedder_policy) || + network::CompatibleWithCrossOriginIsolated( + worker_cross_origin_embedder_policy)) { return true; }
diff --git a/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc b/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc index 8e9d1b6..d44e66d1 100644 --- a/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc +++ b/content/browser/worker_host/dedicated_worker_service_impl_unittest.cc
@@ -136,7 +136,7 @@ } DedicatedWorkerService* GetDedicatedWorkerService() const { - return BrowserContext::GetDefaultStoragePartition(browser_context_.get()) + return browser_context_->GetDefaultStoragePartition() ->GetDedicatedWorkerService(); }
diff --git a/content/browser/worker_host/shared_worker_service_impl_unittest.cc b/content/browser/worker_host/shared_worker_service_impl_unittest.cc index fd32611..a0e1bc22 100644 --- a/content/browser/worker_host/shared_worker_service_impl_unittest.cc +++ b/content/browser/worker_host/shared_worker_service_impl_unittest.cc
@@ -181,7 +181,7 @@ base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( fake_url_loader_factory_.get()); static_cast<SharedWorkerServiceImpl*>( - BrowserContext::GetDefaultStoragePartition(browser_context_.get()) + browser_context_->GetDefaultStoragePartition() ->GetSharedWorkerService()) ->SetURLLoaderFactoryForTesting(url_loader_factory_wrapper_); } @@ -1263,9 +1263,7 @@ base::ScopedObservation<SharedWorkerService, SharedWorkerService::Observer> scoped_observation(&observer); scoped_observation.Observe( - content::BrowserContext::GetDefaultStoragePartition( - browser_context_.get()) - ->GetSharedWorkerService()); + browser_context_->GetDefaultStoragePartition()->GetSharedWorkerService()); std::unique_ptr<TestWebContents> web_contents = CreateWebContents(GURL("http://example.com/")); @@ -1351,7 +1349,7 @@ EXPECT_EQ(0u, observer.GetWorkerCount()); // Retrieve running shared workers. - content::BrowserContext::GetDefaultStoragePartition(browser_context_.get()) + browser_context_->GetDefaultStoragePartition() ->GetSharedWorkerService() ->EnumerateSharedWorkers(&observer); @@ -1368,9 +1366,7 @@ base::ScopedObservation<SharedWorkerService, SharedWorkerService::Observer> scoped_observation(&observer); scoped_observation.Observe( - content::BrowserContext::GetDefaultStoragePartition( - browser_context_.get()) - ->GetSharedWorkerService()); + browser_context_->GetDefaultStoragePartition()->GetSharedWorkerService()); const GURL kUrl("http://example.com/w.js"); const char kName[] = "name"; @@ -1455,9 +1451,7 @@ base::ScopedObservation<SharedWorkerService, SharedWorkerService::Observer> scoped_observation(&observer); scoped_observation.Observe( - content::BrowserContext::GetDefaultStoragePartition( - browser_context_.get()) - ->GetSharedWorkerService()); + browser_context_->GetDefaultStoragePartition()->GetSharedWorkerService()); std::unique_ptr<TestWebContents> web_contents = CreateWebContents(GURL("http://example.com/"));
diff --git a/content/browser/worker_host/worker_browsertest.cc b/content/browser/worker_host/worker_browsertest.cc index e77094f78..c478eca2 100644 --- a/content/browser/worker_host/worker_browsertest.cc +++ b/content/browser/worker_host/worker_browsertest.cc
@@ -151,8 +151,10 @@ } void SetSameSiteCookie(const std::string& host) { - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); mojo::Remote<network::mojom::CookieManager> cookie_manager; partition->GetNetworkContext()->GetCookieManager( cookie_manager.BindNewPipeAndPassReceiver()); @@ -204,8 +206,10 @@ } SharedWorkerHost* GetSharedWorkerHost(const GURL& url) { - StoragePartition* partition = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()); + StoragePartition* partition = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition(); DCHECK(partition); auto* service = static_cast<SharedWorkerServiceImpl*>( partition->GetSharedWorkerService());
diff --git a/content/public/android/java/src/org/chromium/content/browser/JavascriptInjectorImpl.java b/content/public/android/java/src/org/chromium/content/browser/JavascriptInjectorImpl.java index 7ef7b66..794064c 100644 --- a/content/public/android/java/src/org/chromium/content/browser/JavascriptInjectorImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/JavascriptInjectorImpl.java
@@ -7,6 +7,7 @@ import android.util.Pair; import org.chromium.base.UserData; +import org.chromium.base.annotations.AccessedByNative; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.NativeMethods; @@ -32,6 +33,10 @@ JavascriptInjectorImpl::new; } + // The set is passed to native and stored in a weak reference; while the field is never actually + // accessed by native the field needs to be kept in the Java code to ensure we don't garbage + // collect the set too early. + @AccessedByNative private final Set<Object> mRetainedObjects = new HashSet<>(); private final Map<String, Pair<Object, Class>> mInjectedObjects = new HashMap<>(); private long mNativePtr;
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java index f6300f3..bcb2b51 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
@@ -180,6 +180,41 @@ @SmallTest @Feature({"AndroidWebView", "Android-JavaBridge"}) @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class) + public void testReplaceWithoutReloading(boolean useMojo) throws Throwable { + mActivityTestRule.injectObjectAndReload(new Object() { + @JavascriptInterface + public void method() { + mTestController.setStringValue("object 1"); + } + }, "testObject"); + mActivityTestRule.executeJavaScript("testObject.method()"); + Assert.assertEquals("object 1", mTestController.waitForStringValue()); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { + @Override + public void run() { + mActivityTestRule.getJavascriptInjector(useMojo).addPossiblyUnsafeInterface( + new Object() { + @JavascriptInterface + public void method() { + mTestController.setStringValue("object 2"); + } + }, + "testObject", null); + } + }); + mActivityTestRule.executeJavaScript("testObject.method()"); + // should still return object 1 as the page hasn't reloaded + Assert.assertEquals("object 1", mTestController.waitForStringValue()); + mActivityTestRule.synchronousPageReload(); + mActivityTestRule.executeJavaScript("testObject.method()"); + Assert.assertEquals("object 2", mTestController.waitForStringValue()); + } + + @Test + @SmallTest + @Feature({"AndroidWebView", "Android-JavaBridge"}) + @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class) public void testRemovalNotReflectedUntilReload(boolean useMojo) throws Throwable { mActivityTestRule.injectObjectAndReload(new Object() { @JavascriptInterface
diff --git a/content/public/browser/browser_context.h b/content/public/browser/browser_context.h index 503c94d..7eb0e57 100644 --- a/content/public/browser/browser_context.h +++ b/content/public/browser/browser_context.h
@@ -97,13 +97,13 @@ // layer (e.g. there is no need to override these methods in layers above // //content). // - // The current practice is to make the methods in this section static and have - // them take `BrowserContext* self` as the first parameter. (It is known that - // not all the methods below follow this pattern.) + // The currently recommended practice is to make the methods in this section + // non-virtual instance methods. // - // TODO(https://crbug.com/1179776): Consider converting methods in this - // section into non-virtual instance methods (dropping the `BrowserContext*` - // parameter along the way). + // TODO(https://crbug.com/1179776): Finish converting the methods in this + // section into non-virtual instance methods. (The old, abandoned practice + // was to make the methods in this section `static` and have them take + // `BrowserContext* self` as the first parameter.) // // TODO(https://crbug.com/1179776): Consider moving these methods to // BrowserContext::Impl or (in the future) BrowserContextImpl class. @@ -129,15 +129,13 @@ // Returns a StoragePartition for the given SiteInstance. By default this will // create a new StoragePartition if it doesn't exist, unless |can_create| is // false. - static StoragePartition* GetStoragePartition(BrowserContext* self, - SiteInstance* site_instance, - bool can_create = true); + StoragePartition* GetStoragePartition(SiteInstance* site_instance, + bool can_create = true); // Returns a StoragePartition for the given StoragePartitionConfig. By // default this will create a new StoragePartition if it doesn't exist, // unless |can_create| is false. - static StoragePartition* GetStoragePartition( - BrowserContext* self, + StoragePartition* GetStoragePartition( const StoragePartitionConfig& storage_partition_config, bool can_create = true); @@ -146,30 +144,25 @@ // Returns a StoragePartition for the given URL. By default this will // create a new StoragePartition if it doesn't exist, unless |can_create| is // false. - static StoragePartition* GetStoragePartitionForUrl(BrowserContext* self, - const GURL& url, - bool can_create = true); + StoragePartition* GetStoragePartitionForUrl(const GURL& url, + bool can_create = true); using StoragePartitionCallback = base::RepeatingCallback<void(StoragePartition*)>; - static void ForEachStoragePartition(BrowserContext* self, - StoragePartitionCallback callback); - // Returns the number of StoragePartitions that exist for the given - // |browser_context|. - static size_t GetStoragePartitionCount(BrowserContext* self); - static void AsyncObliterateStoragePartition( - BrowserContext* self, - const std::string& partition_domain, - base::OnceClosure on_gc_required); + void ForEachStoragePartition(StoragePartitionCallback callback); + // Returns the number of StoragePartitions that exist for `this` + // BrowserContext. + size_t GetStoragePartitionCount(); + void AsyncObliterateStoragePartition(const std::string& partition_domain, + base::OnceClosure on_gc_required); // This function clears the contents of |active_paths| but does not take // ownership of the pointer. - static void GarbageCollectStoragePartitions( - BrowserContext* self, + void GarbageCollectStoragePartitions( std::unique_ptr<std::unordered_set<base::FilePath>> active_paths, base::OnceClosure done); - static StoragePartition* GetDefaultStoragePartition(BrowserContext* self); + StoragePartition* GetDefaultStoragePartition(); using BlobCallback = base::OnceCallback<void(std::unique_ptr<BlobHandle>)>; using BlobContextGetter =
diff --git a/content/public/browser/cors_origin_pattern_setter.cc b/content/public/browser/cors_origin_pattern_setter.cc index fc6ee92..a1ea156 100644 --- a/content/public/browser/cors_origin_pattern_setter.cc +++ b/content/public/browser/cors_origin_pattern_setter.cc
@@ -53,8 +53,7 @@ base::MakeRefCounted<CorsOriginPatternSetter>( PassKey(), source_origin, mojo::Clone(allow_patterns), mojo::Clone(block_patterns), barrier_closure); - content::BrowserContext::ForEachStoragePartition( - browser_context, + browser_context->ForEachStoragePartition( base::BindRepeating(&CorsOriginPatternSetter::SetForStoragePartition, base::RetainedRef(setter)));
diff --git a/content/public/browser/push_messaging_service.cc b/content/public/browser/push_messaging_service.cc index f39154a..8cb877dd 100644 --- a/content/public/browser/push_messaging_service.cc +++ b/content/public/browser/push_messaging_service.cc
@@ -88,7 +88,7 @@ scoped_refptr<ServiceWorkerContextWrapper> GetServiceWorkerContext( BrowserContext* browser_context, const GURL& origin) { StoragePartition* partition = - BrowserContext::GetStoragePartitionForUrl(browser_context, origin); + browser_context->GetStoragePartitionForUrl(origin); return base::WrapRefCounted(static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext())); }
diff --git a/content/public/test/background_sync_test_util.cc b/content/public/test/background_sync_test_util.cc index 9dd5431..2a261fe 100644 --- a/content/public/test/background_sync_test_util.cc +++ b/content/public/test/background_sync_test_util.cc
@@ -41,8 +41,9 @@ } StoragePartitionImpl* GetStoragePartition(WebContents* web_contents) { - return static_cast<StoragePartitionImpl*>(BrowserContext::GetStoragePartition( - web_contents->GetBrowserContext(), web_contents->GetSiteInstance())); + return static_cast<StoragePartitionImpl*>( + web_contents->GetBrowserContext()->GetStoragePartition( + web_contents->GetSiteInstance())); } } // namespace
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc index 89c4c226..caadac2d 100644 --- a/content/public/test/browser_test_utils.cc +++ b/content/public/test/browser_test_utils.cc
@@ -1869,7 +1869,7 @@ std::string cookies; base::RunLoop run_loop; mojo::Remote<network::mojom::CookieManager> cookie_manager; - BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetNetworkContext() ->GetCookieManager(cookie_manager.BindNewPipeAndPassReceiver()); net::CookieOptions options; @@ -1894,7 +1894,7 @@ std::vector<net::CanonicalCookie> cookies; base::RunLoop run_loop; mojo::Remote<network::mojom::CookieManager> cookie_manager; - BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetNetworkContext() ->GetCookieManager(cookie_manager.BindNewPipeAndPassReceiver()); // Allow access to SameSite cookies in tests. @@ -1924,7 +1924,7 @@ bool result = false; base::RunLoop run_loop; mojo::Remote<network::mojom::CookieManager> cookie_manager; - BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetNetworkContext() ->GetCookieManager(cookie_manager.BindNewPipeAndPassReceiver()); std::unique_ptr<net::CanonicalCookie> cc(net::CanonicalCookie::Create( @@ -1952,7 +1952,7 @@ network::mojom::CookieDeletionFilter filter) { base::RunLoop run_loop; mojo::Remote<network::mojom::CookieManager> cookie_manager; - BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetNetworkContext() ->GetCookieManager(cookie_manager.BindNewPipeAndPassReceiver()); @@ -3379,8 +3379,8 @@ } void EnsureCookiesFlushed(BrowserContext* browser_context) { - BrowserContext::ForEachStoragePartition( - browser_context, base::BindRepeating([](StoragePartition* partition) { + browser_context->ForEachStoragePartition( + base::BindRepeating([](StoragePartition* partition) { base::RunLoop run_loop; partition->GetCookieManagerForBrowserProcess()->FlushCookieStore( run_loop.QuitClosure());
diff --git a/content/public/test/mock_render_process_host.cc b/content/public/test/mock_render_process_host.cc index f5ec1419..1851e2c9 100644 --- a/content/public/test/mock_render_process_host.cc +++ b/content/public/test/mock_render_process_host.cc
@@ -188,7 +188,7 @@ } StoragePartition* MockRenderProcessHost::GetStoragePartition() { - return BrowserContext::GetDefaultStoragePartition(browser_context_); + return browser_context_->GetDefaultStoragePartition(); } void MockRenderProcessHost::AddWord(const std::u16string& word) {}
diff --git a/content/public/test/service_worker_host_interceptor.cc b/content/public/test/service_worker_host_interceptor.cc index eacf173..57abb9a 100644 --- a/content/public/test/service_worker_host_interceptor.cc +++ b/content/public/test/service_worker_host_interceptor.cc
@@ -28,7 +28,7 @@ base::RunLoop run_loop; scoped_refptr<ServiceWorkerContextWrapper> context = static_cast<ServiceWorkerContextWrapper*>( - BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetServiceWorkerContext()); BrowserThread::ID run_done_thread; bool is_known_thread =
diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc index 832f6f5a..3f5a8dd 100644 --- a/content/renderer/render_process_impl.cc +++ b/content/renderer/render_process_impl.cc
@@ -4,7 +4,6 @@ #include "content/renderer/render_process_impl.h" -#include "base/strings/string_piece.h" #include "build/build_config.h" #if defined(OS_WIN) @@ -26,6 +25,7 @@ #include "base/debug/stack_trace.h" #include "base/feature_list.h" #include "base/memory/ptr_util.h" +#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/system/sys_info.h" #include "base/task/thread_pool/initialization_util.h"
diff --git a/content/shell/browser/shell_devtools_bindings.cc b/content/shell/browser/shell_devtools_bindings.cc index ca3c5f6..46574b8 100644 --- a/content/shell/browser/shell_devtools_bindings.cc +++ b/content/shell/browser/shell_devtools_bindings.cc
@@ -327,8 +327,8 @@ resource_request->site_for_cookies = net::SiteForCookies::FromUrl(gurl); resource_request->headers.AddHeadersFromString(headers); - auto* partition = content::BrowserContext::GetStoragePartitionForUrl( - web_contents()->GetBrowserContext(), gurl); + auto* partition = + web_contents()->GetBrowserContext()->GetStoragePartitionForUrl(gurl); auto factory = partition->GetURLLoaderFactoryForBrowserProcess(); auto simple_url_loader = network::SimpleURLLoader::Create(
diff --git a/content/test/data/accessibility/scripts/set-selectedtextrange-contenteditable-expected-mac.txt b/content/test/data/accessibility/scripts/set-selectedtextrange-contenteditable-expected-mac.txt new file mode 100644 index 0000000..898bfc7 --- /dev/null +++ b/content/test/data/accessibility/scripts/set-selectedtextrange-contenteditable-expected-mac.txt
@@ -0,0 +1,12 @@ +AXWebArea +++AXTextArea AXValue='The quick brown foxes jumps over the lazy dog' +++++AXGroup +++++++AXStaticText AXValue='The quick brown foxes ' +++++++AXGroup +++++++++AXStaticText AXValue='jumps' +++++++AXStaticText AXValue=' over the ' +++++++AXStaticText AXValue='lazy' +++++++AXStaticText AXValue=' dog' +The +jump +mps over the la \ No newline at end of file
diff --git a/content/test/data/accessibility/scripts/set-selectedtextrange-contenteditable.html b/content/test/data/accessibility/scripts/set-selectedtextrange-contenteditable.html new file mode 100644 index 0000000..c8ca687 --- /dev/null +++ b/content/test/data/accessibility/scripts/set-selectedtextrange-contenteditable.html
@@ -0,0 +1,8 @@ +<!DOCTYPE html> +<html> +<body> + <div contenteditable="true"> + <p>The quick brown foxes <span aria-invalid="grammar">jumps</span> over the <em>lazy</em> dog</p> + </div> +</body> +</html> \ No newline at end of file
diff --git a/content/test/gpu/gpu_tests/gpu_helper.py b/content/test/gpu/gpu_tests/gpu_helper.py index dd8a62b..ee97659d 100644 --- a/content/test/gpu/gpu_tests/gpu_helper.py +++ b/content/test/gpu/gpu_tests/gpu_helper.py
@@ -25,6 +25,13 @@ DRIVER_TAG_MATCHER = re.compile( r'^([a-z\d]+)_(eq|ne|ge|gt|le|lt)_([a-z\d\.]+)$') +REMOTE_BROWSER_TYPES = [ + 'android-chromium', + 'android-webview-instrumentation', + 'cros-chrome', + 'web-engine-shell', +] + def _ParseANGLEGpuVendorString(device_string): if not device_string: @@ -158,7 +165,12 @@ return retval -def GetDisplayServer(): +def GetDisplayServer(browser_type): + # Browser types run on a remote device aren't Linux, but the host running + # this code uses Linux, so return early to avoid erroneously reporting a + # display server. + if browser_type in REMOTE_BROWSER_TYPES: + return None if sys.platform == 'linux2': if 'WAYLAND_DISPLAY' in os.environ: return 'display-server-wayland'
diff --git a/content/test/gpu/gpu_tests/gpu_integration_test.py b/content/test/gpu/gpu_tests/gpu_integration_test.py index b89c250..f275c2a 100644 --- a/content/test/gpu/gpu_tests/gpu_integration_test.py +++ b/content/test/gpu/gpu_tests/gpu_integration_test.py
@@ -553,7 +553,7 @@ skia_renderer = gpu_helper.GetSkiaRenderer(gpu_info.feature_status, startup_args) tags.append(skia_renderer) - display_server = gpu_helper.GetDisplayServer() + display_server = gpu_helper.GetDisplayServer(browser.browser_type) if display_server: tags.append(display_server) return tags
diff --git a/content/test/gpu/gpu_tests/skia_gold_integration_test_base.py b/content/test/gpu/gpu_tests/skia_gold_integration_test_base.py index 05effa5..ef66cf0 100644 --- a/content/test/gpu/gpu_tests/skia_gold_integration_test_base.py +++ b/content/test/gpu/gpu_tests/skia_gold_integration_test_base.py
@@ -249,7 +249,7 @@ params.model_name = system_info.model_name params.driver_version = device.driver_version params.driver_vendor = device.driver_vendor - params.display_server = gpu_helper.GetDisplayServer() + params.display_server = gpu_helper.GetDisplayServer(browser.browser_type) @classmethod def _UploadBitmapToCloudStorage(cls, bucket, name, bitmap, public=False):
diff --git a/content/test/mock_platform_notification_service.cc b/content/test/mock_platform_notification_service.cc index 686d5b5..d36d0c4 100644 --- a/content/test/mock_platform_notification_service.cc +++ b/content/test/mock_platform_notification_service.cc
@@ -101,8 +101,8 @@ if (timestamp > base::Time::Now()) return; - BrowserContext::ForEachStoragePartition( - context_, base::BindRepeating([](content::StoragePartition* partition) { + context_->ForEachStoragePartition( + base::BindRepeating([](content::StoragePartition* partition) { partition->GetPlatformNotificationContext()->TriggerNotifications(); })); }
diff --git a/content/test/mock_raw_clipboard_host.cc b/content/test/mock_raw_clipboard_host.cc index eb771972..6e0e507 100644 --- a/content/test/mock_raw_clipboard_host.cc +++ b/content/test/mock_raw_clipboard_host.cc
@@ -68,16 +68,16 @@ // automatically convert between certain format names, for use in testing. // Platforms often provide many converted formats, so not all converted-to // formats are provided. - static constexpr char kPlatformTextFormat[] = + static constexpr char16_t kPlatformTextFormat[] = #if defined(OS_WIN) - "CF_TEXT"; + u"CF_TEXT"; #elif defined(USE_X11) - "text/plain"; + u"text/plain"; #else - ""; + u""; #endif - if (format == base::ASCIIToUTF16(kPlatformTextFormat)) { + if (format == kPlatformTextFormat) { EXPECT_TRUE(mock_clipboard_host_); std::u16string text = base::UTF8ToUTF16(base::StringPiece( reinterpret_cast<const char*>(data_copy.data()), data_copy.size()));
diff --git a/content/test/url_loader_interceptor_test.cc b/content/test/url_loader_interceptor_test.cc index 1a73d87..faf9cb0 100644 --- a/content/test/url_loader_interceptor_test.cc +++ b/content/test/url_loader_interceptor_test.cc
@@ -265,8 +265,10 @@ params->client->OnComplete(status); return true; })); - auto* factory = BrowserContext::GetDefaultStoragePartition( - shell()->web_contents()->GetBrowserContext()) + auto* factory = shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() .get(); factory->CreateLoaderAndStart(
diff --git a/content/web_test/browser/web_test_background_fetch_delegate.cc b/content/web_test/browser/web_test_background_fetch_delegate.cc index 921fb22..baef547 100644 --- a/content/web_test/browser/web_test_background_fetch_delegate.cc +++ b/content/web_test/browser/web_test_background_fetch_delegate.cc
@@ -265,10 +265,9 @@ base::test::ScopedFeatureList download_service_configuration; download_service_configuration.InitAndEnableFeatureWithParameters( download::kDownloadServiceFeature, {{"start_up_delay_ms", "0"}}); - auto* url_loader_factory = - BrowserContext::GetDefaultStoragePartition(browser_context_) - ->GetURLLoaderFactoryForBrowserProcess() - .get(); + auto* url_loader_factory = browser_context_->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess() + .get(); SimpleFactoryKey* simple_key = SimpleKeyMap::GetInstance()->GetForBrowserContext(browser_context_); download_service_ = download::BuildInMemoryDownloadService(
diff --git a/content/web_test/browser/web_test_control_host.cc b/content/web_test/browser/web_test_control_host.cc index 500c767..3de88017 100644 --- a/content/web_test/browser/web_test_control_host.cc +++ b/content/web_test/browser/web_test_control_host.cc
@@ -510,8 +510,9 @@ // protocol) until we enter the protocol mode (see TestInfo::protocol_mode). printer_->set_capture_text_only(true); - InjectTestSharedWorkerService(BrowserContext::GetDefaultStoragePartition( - ShellContentBrowserClient::Get()->browser_context())); + InjectTestSharedWorkerService(ShellContentBrowserClient::Get() + ->browser_context() + ->GetDefaultStoragePartition()); GpuDataManager::GetInstance()->AddObserver(this); ResetBrowserAfterWebTest(); @@ -704,7 +705,7 @@ BrowserContext* browser_context = ShellContentBrowserClient::Get()->browser_context(); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); storage_partition->GetCookieManagerForBrowserProcess()->DeleteCookies( network::mojom::CookieDeletionFilter::New(), base::DoNothing()); } @@ -1250,17 +1251,17 @@ weak_factory_.GetWeakPtr())); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); storage_partition->GetServiceWorkerContext()->ClearAllServiceWorkersForTest( barrier_closure); storage_partition->ClearBluetoothAllowedDevicesMapForTesting(); // TODO(nhiroki): Add a comment about the reason why we terminate all shared // workers here. - TerminateAllSharedWorkers( - BrowserContext::GetDefaultStoragePartition( - ShellContentBrowserClient::Get()->browser_context()), - barrier_closure); + TerminateAllSharedWorkers(ShellContentBrowserClient::Get() + ->browser_context() + ->GetDefaultStoragePartition(), + barrier_closure); } void WebTestControlHost::OnDumpFrameLayoutResponse(int frame_tree_node_id, @@ -1567,7 +1568,7 @@ BrowserContext* browser_context = ShellContentBrowserClient::Get()->browser_context(); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); storage_partition->GetNetworkContext()->ClearTrustTokenData( nullptr, // A wildcard filter. std::move(callback)); @@ -1592,7 +1593,7 @@ BrowserContext* browser_context = ShellContentBrowserClient::Get()->browser_context(); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); scoped_refptr<storage::QuotaManager> quota_manager = base::WrapRefCounted(storage_partition->GetQuotaManager()); @@ -1611,7 +1612,7 @@ BrowserContext* browser_context = ShellContentBrowserClient::Get()->browser_context(); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); scoped_refptr<storage::DatabaseTracker> db_tracker = base::WrapRefCounted(storage_partition->GetDatabaseTracker()); @@ -1654,8 +1655,8 @@ content_index_provider->GetRegistrationDataFromId(id); StoragePartition* storage_partition = - BrowserContext::GetStoragePartitionForUrl( - browser_context, registration_data.second.GetURL(), + browser_context->GetStoragePartitionForUrl( + registration_data.second.GetURL(), /*can_create=*/false); storage_partition->GetContentIndexContext()->OnUserDeletedItem( registration_data.first, registration_data.second, id); @@ -1920,7 +1921,7 @@ ShellBrowserContext* browser_context = ShellContentBrowserClient::Get()->browser_context(); StoragePartition* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context); + browser_context->GetDefaultStoragePartition(); storage_partition->GetCookieManagerForBrowserProcess() ->BlockThirdPartyCookies(block); }
diff --git a/content/web_test/browser/web_test_storage_access_manager.cc b/content/web_test/browser/web_test_storage_access_manager.cc index 14a1bce..0c5b9d4d 100644 --- a/content/web_test/browser/web_test_storage_access_manager.cc +++ b/content/web_test/browser/web_test_storage_access_manager.cc
@@ -63,8 +63,7 @@ // Content Shell, then we should update this class to handle those other // types are well. - auto* storage_partition = - BrowserContext::GetDefaultStoragePartition(browser_context_); + auto* storage_partition = browser_context_->GetDefaultStoragePartition(); auto* cookie_manager = storage_partition->GetCookieManagerForBrowserProcess(); // Enable third-party cookies blocking if we have not done so yet. This will
diff --git a/crypto/p224_spake.cc b/crypto/p224_spake.cc index 58b9161..7ed66b6 100644 --- a/crypto/p224_spake.cc +++ b/crypto/p224_spake.cc
@@ -12,6 +12,7 @@ #include <algorithm> #include "base/logging.h" +#include "base/strings/string_piece.h" #include "crypto/random.h" #include "crypto/secure_util.h" #include "third_party/boringssl/src/include/openssl/bn.h" @@ -276,11 +277,11 @@ std::string client_masked_dh, server_masked_dh; if (is_server_) { - client_masked_dh = message.as_string(); + client_masked_dh = std::string(message); server_masked_dh = next_message_; } else { client_masked_dh = next_message_; - server_masked_dh = message.as_string(); + server_masked_dh = std::string(message); } // Now we calculate the hashes that each side will use to prove to the other
diff --git a/device/fido/cable/v2_test_util.cc b/device/fido/cable/v2_test_util.cc index d071d4b..ccf2532 100644 --- a/device/fido/cable/v2_test_util.cc +++ b/device/fido/cable/v2_test_util.cc
@@ -12,6 +12,7 @@ #include "base/check.h" #include "base/memory/weak_ptr.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" #include "components/cbor/reader.h" #include "components/cbor/values.h" #include "components/cbor/writer.h" @@ -62,10 +63,10 @@ static const char kContactPrefix[] = "/cable/contact/"; if (path.find(kNewPrefix) == 0) { path.remove_prefix(sizeof(kNewPrefix) - 1); - CHECK(!base::Contains(connections_, path.as_string())); - connections_.emplace(path.as_string(), std::make_unique<Connection>( - Connection::Type::NEW, - std::move(handshake_client))); + CHECK(!base::Contains(connections_, std::string(path))); + connections_.emplace(std::string(path), std::make_unique<Connection>( + Connection::Type::NEW, + std::move(handshake_client))); } else if (path.find(kConnectPrefix) == 0) { path.remove_prefix(sizeof(kConnectPrefix) - 1); // The first part of |path| will be a hex-encoded routing ID followed by a @@ -74,7 +75,7 @@ CHECK_GE(path.size(), kRoutingIdComponentSize); path.remove_prefix(kRoutingIdComponentSize); - const auto it = connections_.find(path.as_string()); + const auto it = connections_.find(std::string(path)); CHECK(it != connections_.end()) << "Unknown tunnel requested"; it->second->set_peer(std::make_unique<Connection>( Connection::Type::CONNECT, std::move(handshake_client)));
diff --git a/device/udev_linux/udev_watcher.cc b/device/udev_linux/udev_watcher.cc index 967a9261..ea11688 100644 --- a/device/udev_linux/udev_watcher.cc +++ b/device/udev_linux/udev_watcher.cc
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/strings/string_piece.h" #include "base/threading/scoped_blocking_call.h" namespace device { @@ -16,9 +17,9 @@ UdevWatcher::Filter::Filter(base::StringPiece subsystem_in, base::StringPiece devtype_in) { if (!subsystem_in.empty()) - subsystem_ = subsystem_in.as_string(); + subsystem_ = std::string(subsystem_in); if (!devtype_in.empty()) - devtype_ = devtype_in.as_string(); + devtype_ = std::string(devtype_in); } UdevWatcher::Filter::Filter(const Filter&) = default;
diff --git a/docs/chromeos_build_instructions.md b/docs/chromeos_build_instructions.md index ec41f84..fa189693 100644 --- a/docs/chromeos_build_instructions.md +++ b/docs/chromeos_build_instructions.md
@@ -51,6 +51,9 @@ etc.) are stubbed out. The entire system UI runs in a single X11 window on your desktop. +You can test sign-in/sync in this mode by adding the --login-manager flag, see +the [Login notes](#Login-notes) section. + ### Building and running Chromium with Chromium OS UI on your local machine Run the following in your chromium checkout: @@ -114,9 +117,10 @@ * For first run, add the following options to chrome's command line: `--user-data-dir=/tmp/chrome --login-manager` * Go through the out-of-the-box UX and sign in with a real Gmail account. -* For subsequent runs, add: +* For subsequent runs, if you want to skip the login manager page, add: `--user-data-dir=/tmp/chrome --login-user=username@gmail.com - --login-profile=username@gmail.com-hash` + --login-profile=username@gmail.com-hash`. It's also fine to just keep + --login-manager instead. * To run in guest mode instantly, add: `--user-data-dir=/tmp/chrome --bwsi --incognito --login-user='$guest' --login-profile=user`
diff --git a/docs/clion.md b/docs/clion.md index 1d495721..2c238473 100644 --- a/docs/clion.md +++ b/docs/clion.md
@@ -49,6 +49,7 @@ ``` include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/out/Default/gen) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/protobuf/src) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/googletest/src/googletest/include) ``` 1. (Optional) Replace the `add_executable` files to include a single file;
diff --git a/extensions/browser/api/dns/dns_api.cc b/extensions/browser/api/dns/dns_api.cc index f3f5a0d..5b23bb8a 100644 --- a/extensions/browser/api/dns/dns_api.cc +++ b/extensions/browser/api/dns/dns_api.cc
@@ -38,7 +38,8 @@ // determining its answer. net::HostPortPair host_port_pair(params->hostname, 0); url::Origin origin = url::Origin::Create(extension_->url()); - content::BrowserContext::GetDefaultStoragePartition(browser_context()) + browser_context() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->ResolveHost(host_port_pair, net::NetworkIsolationKey(origin, origin), nullptr, receiver_.BindNewPipeAndPassRemote());
diff --git a/extensions/browser/api/dns/dns_apitest.cc b/extensions/browser/api/dns/dns_apitest.cc index bcffd98..e3df1a6f 100644 --- a/extensions/browser/api/dns/dns_apitest.cc +++ b/extensions/browser/api/dns/dns_apitest.cc
@@ -104,8 +104,7 @@ // Make sure the extension's NetworkIsolationKey was used. Do a cache only DNS // lookup using the expected NIK, and make sure the IP address is retrieved. network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser_context()) - ->GetNetworkContext(); + browser_context()->GetDefaultStoragePartition()->GetNetworkContext(); net::HostPortPair host_port_pair(kHostname, 0); network::mojom::ResolveHostParametersPtr params = network::mojom::ResolveHostParameters::New();
diff --git a/extensions/browser/api/socket/socket_api.cc b/extensions/browser/api/socket/socket_api.cc index 4baf5b19..9631437c 100644 --- a/extensions/browser/api/socket/socket_api.cc +++ b/extensions/browser/api/socket/socket_api.cc
@@ -191,7 +191,8 @@ bool SocketExtensionWithDnsLookupFunction::PrePrepare() { if (!SocketAsyncApiFunction::PrePrepare()) return false; - content::BrowserContext::GetDefaultStoragePartition(browser_context()) + browser_context() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateHostResolver( base::nullopt, @@ -255,7 +256,7 @@ mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote; socket_listener_receiver_ = listener_remote.InitWithNewPipeAndPassReceiver(); - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateUDPSocket(socket_.InitWithNewPipeAndPassReceiver(), std::move(listener_remote));
diff --git a/extensions/browser/api/socket/tcp_socket.cc b/extensions/browser/api/socket/tcp_socket.cc index 9aafd37..0e91a9b 100644 --- a/extensions/browser/api/socket/tcp_socket.cc +++ b/extensions/browser/api/socket/tcp_socket.cc
@@ -336,8 +336,7 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (!storage_partition) { - storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser_context); + storage_partition = browser_context->GetDefaultStoragePartition(); } storage_partition->GetNetworkContext()->CreateTCPConnectedSocket( base::nullopt, remote_addr_list, nullptr /* options */, @@ -395,8 +394,7 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (!storage_partition) { - storage_partition = - content::BrowserContext::GetDefaultStoragePartition(browser_context); + storage_partition = browser_context->GetDefaultStoragePartition(); } storage_partition->GetNetworkContext()->CreateTCPServerSocket( local_addr, backlog, @@ -434,10 +432,8 @@ content::StoragePartition* TCPSocket::GetStoragePartitionHelper() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - return storage_partition_ - ? storage_partition_ - : content::BrowserContext::GetDefaultStoragePartition( - browser_context_); + return storage_partition_ ? storage_partition_ + : browser_context_->GetDefaultStoragePartition(); } void TCPSocket::OnAccept(
diff --git a/extensions/browser/api/sockets_tcp/sockets_tcp_apitest.cc b/extensions/browser/api/sockets_tcp/sockets_tcp_apitest.cc index 4c8b9560..0e87723 100644 --- a/extensions/browser/api/sockets_tcp/sockets_tcp_apitest.cc +++ b/extensions/browser/api/sockets_tcp/sockets_tcp_apitest.cc
@@ -105,8 +105,7 @@ // Make sure the extension's NetworkIsolationKey was used. Do a cache only DNS // lookup using the expected NIK, and make sure the IP address is retrieved. network::mojom::NetworkContext* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser_context()) - ->GetNetworkContext(); + browser_context()->GetDefaultStoragePartition()->GetNetworkContext(); network::mojom::ResolveHostParametersPtr params = network::mojom::ResolveHostParameters::New(); // Cache only lookup.
diff --git a/extensions/browser/api/sockets_udp/sockets_udp_api.cc b/extensions/browser/api/sockets_udp/sockets_udp_api.cc index 9faa5fe..5ec1473 100644 --- a/extensions/browser/api/sockets_udp/sockets_udp_api.cc +++ b/extensions/browser/api/sockets_udp/sockets_udp_api.cc
@@ -100,7 +100,8 @@ mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote; socket_listener_receiver_ = listener_remote.InitWithNewPipeAndPassReceiver(); - content::BrowserContext::GetDefaultStoragePartition(browser_context()) + browser_context() + ->GetDefaultStoragePartition() ->GetNetworkContext() ->CreateUDPSocket(socket_.InitWithNewPipeAndPassReceiver(), std::move(listener_remote));
diff --git a/extensions/browser/api/web_request/form_data_parser.cc b/extensions/browser/api/web_request/form_data_parser.cc index c2266ae8..45f1bf4 100644 --- a/extensions/browser/api/web_request/form_data_parser.cc +++ b/extensions/browser/api/web_request/form_data_parser.cc
@@ -12,6 +12,7 @@ #include "base/lazy_instance.h" #include "base/notreached.h" #include "base/stl_util.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/values.h" #include "net/base/escape.h" @@ -552,11 +553,11 @@ result->set_name(net::UnescapeBinaryURLComponent(name)); if (value_assigned) { // Hold filename as value. - result->SetStringValue(value.as_string()); + result->SetStringValue(std::string(value)); } else if (value_is_binary) { result->SetBinaryValue(value); } else { - result->SetStringValue(value.as_string()); + result->SetStringValue(std::string(value)); } return return_value;
diff --git a/extensions/browser/api/web_request/web_request_api.cc b/extensions/browser/api/web_request/web_request_api.cc index e2cb52c..31a3090 100644 --- a/extensions/browser/api/web_request/web_request_api.cc +++ b/extensions/browser/api/web_request/web_request_api.cc
@@ -819,8 +819,7 @@ void WebRequestAPI::UpdateMayHaveProxies() { bool may_have_proxies = MayHaveProxies(); if (!may_have_proxies_ && may_have_proxies) { - content::BrowserContext::GetDefaultStoragePartition(browser_context_) - ->ResetURLLoaderFactories(); + browser_context_->GetDefaultStoragePartition()->ResetURLLoaderFactories(); } may_have_proxies_ = may_have_proxies; }
diff --git a/extensions/browser/content_verifier.cc b/extensions/browser/content_verifier.cc index eb068f0b..b5d38756 100644 --- a/extensions/browser/content_verifier.cc +++ b/extensions/browser/content_verifier.cc
@@ -695,7 +695,7 @@ if (shutdown_on_ui_) return; - content::BrowserContext::GetDefaultStoragePartition(context_) + context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess() ->Clone(std::move(url_loader_factory_receiver)); }
diff --git a/extensions/browser/extension_error_test_util.cc b/extensions/browser/extension_error_test_util.cc index 8e1af667..067b8b4 100644 --- a/extensions/browser/extension_error_test_util.cc +++ b/extensions/browser/extension_error_test_util.cc
@@ -17,7 +17,7 @@ namespace error_test_util { namespace { -const char kDefaultStackTrace[] = "function_name (https://url.com:1:1)"; +const char16_t kDefaultStackTrace[] = u"function_name (https://url.com:1:1)"; } std::unique_ptr<ExtensionError> CreateNewRuntimeError( @@ -26,7 +26,7 @@ bool from_incognito) { StackTrace stack_trace; std::unique_ptr<StackFrame> frame = - StackFrame::CreateFromText(base::ASCIIToUTF16(kDefaultStackTrace)); + StackFrame::CreateFromText(kDefaultStackTrace); CHECK(frame.get()); stack_trace.push_back(*frame);
diff --git a/extensions/browser/extension_util.cc b/extensions/browser/extension_util.cc index 5099111..5e96e76 100644 --- a/extensions/browser/extension_util.cc +++ b/extensions/browser/extension_util.cc
@@ -140,8 +140,8 @@ auto storage_partition_config = GetStoragePartitionConfigForExtensionId(extension_id, browser_context); content::StoragePartition* storage_partition = - content::BrowserContext::GetStoragePartition( - browser_context, storage_partition_config, can_create); + browser_context->GetStoragePartition(storage_partition_config, + can_create); return storage_partition; }
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc index a167ee8..552bc33c 100644 --- a/extensions/browser/guest_view/web_view/web_view_guest.cc +++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -491,8 +491,7 @@ uint32_t removal_mask, base::OnceClosure callback) { content::StoragePartition* partition = - content::BrowserContext::GetStoragePartition( - web_contents()->GetBrowserContext(), + web_contents()->GetBrowserContext()->GetStoragePartition( web_contents()->GetSiteInstance()); DCHECK(partition); base::OnceClosure code_cache_removal_done_callback = base::BindOnce( @@ -538,8 +537,7 @@ bool perform_cleanup = remove_since.is_null(); content::StoragePartition* partition = - content::BrowserContext::GetStoragePartition( - web_contents()->GetBrowserContext(), + web_contents()->GetBrowserContext()->GetStoragePartition( web_contents()->GetSiteInstance()); partition->ClearData( storage_partition_removal_mask, @@ -809,8 +807,7 @@ base::OnceClosure callback) { base::RecordAction(UserMetricsAction("WebView.Guest.ClearData")); content::StoragePartition* partition = - content::BrowserContext::GetStoragePartition( - web_contents()->GetBrowserContext(), + web_contents()->GetBrowserContext()->GetStoragePartition( web_contents()->GetSiteInstance()); if (!partition)
diff --git a/extensions/browser/service_worker/service_worker_test_utils.cc b/extensions/browser/service_worker/service_worker_test_utils.cc index f6da8c4..64f79fc 100644 --- a/extensions/browser/service_worker/service_worker_test_utils.cc +++ b/extensions/browser/service_worker/service_worker_test_utils.cc
@@ -15,9 +15,8 @@ TestRegistrationObserver::TestRegistrationObserver( content::BrowserContext* browser_context) - : context_( - content::BrowserContext::GetDefaultStoragePartition(browser_context) - ->GetServiceWorkerContext()) { + : context_(browser_context->GetDefaultStoragePartition() + ->GetServiceWorkerContext()) { context_->AddObserver(this); }
diff --git a/extensions/browser/url_request_util.cc b/extensions/browser/url_request_util.cc index 8c032be..76fedd4 100644 --- a/extensions/browser/url_request_util.cc +++ b/extensions/browser/url_request_util.cc
@@ -6,6 +6,7 @@ #include <string> +#include "base/strings/string_piece.h" #include "extensions/browser/extension_navigation_ui_data.h" #include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" @@ -102,7 +103,7 @@ // Allow web accessible extension resources to be loaded as // subresources/sub-frames. if (WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension, resource_path.as_string(), request.request_initiator)) { + extension, std::string(resource_path), request.request_initiator)) { *allowed = true; return true; } @@ -137,7 +138,7 @@ } *allowed = WebviewInfo::IsResourceWebviewAccessible( - extension, partition_id, resource_path.as_string()); + extension, partition_id, std::string(resource_path)); return true; }
diff --git a/extensions/common/csp_validator.cc b/extensions/common/csp_validator.cc index de93862..4ccdf7d 100644 --- a/extensions/common/csp_validator.cc +++ b/extensions/common/csp_validator.cc
@@ -255,17 +255,17 @@ if (is_secure_csp_token) { sane_csp_parts.push_back(source_literal); } else if (warnings) { - warnings->push_back(InstallWarning( - ErrorUtils::FormatErrorMessage( - manifest_errors::kInvalidCSPInsecureValueIgnored, manifest_key, - source_literal.as_string(), directive_name), - manifest_key)); + warnings->push_back( + InstallWarning(ErrorUtils::FormatErrorMessage( + manifest_errors::kInvalidCSPInsecureValueIgnored, + manifest_key, source_literal, directive_name), + manifest_key)); } } // End of CSP directive that was started at the beginning of this method. If // none of the values are secure, the policy will be empty and default to // 'none', which is secure. - std::string last_part = sane_csp_parts.back().as_string(); + std::string last_part(sane_csp_parts.back()); last_part.push_back(kDirectiveSeparator); sane_csp_parts.back() = last_part; return base::JoinString(sane_csp_parts, " "); @@ -293,11 +293,11 @@ seen_self_or_none |= source_lower == "'none'" || source_lower == "'self'"; sane_csp_parts.push_back(source_lower); } else if (warnings) { - warnings->push_back(InstallWarning( - ErrorUtils::FormatErrorMessage( - manifest_errors::kInvalidCSPInsecureValueIgnored, manifest_key, - source_literal.as_string(), directive_name), - manifest_key)); + warnings->push_back( + InstallWarning(ErrorUtils::FormatErrorMessage( + manifest_errors::kInvalidCSPInsecureValueIgnored, + manifest_key, source_literal, directive_name), + manifest_key)); } } @@ -351,7 +351,7 @@ if (secure_value_) return secure_value_.value(); // This token didn't require modification. - return directive_.directive_string.as_string() + kDirectiveSeparator; + return std::string(directive_.directive_string) + kDirectiveSeparator; } private:
diff --git a/extensions/common/csp_validator_unittest.cc b/extensions/common/csp_validator_unittest.cc index 5646f5be..7eda0bae 100644 --- a/extensions/common/csp_validator_unittest.cc +++ b/extensions/common/csp_validator_unittest.cc
@@ -4,6 +4,7 @@ #include <stddef.h> +#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -544,7 +545,7 @@ void PrintTo(const CSPParser::Directive& directive, ::std::ostream* os) { *os << base::StringPrintf( - "[[%s] [%s] [%s]]", directive.directive_string.as_string().c_str(), + "[[%s] [%s] [%s]]", std::string(directive.directive_string).c_str(), directive.directive_name.c_str(), base::JoinString(directive.directive_values, ",").c_str()); }
diff --git a/extensions/common/error_utils.cc b/extensions/common/error_utils.cc index 47e08ac..fd5aef4 100644 --- a/extensions/common/error_utils.cc +++ b/extensions/common/error_utils.cc
@@ -7,6 +7,7 @@ #include <initializer_list> #include "base/check_op.h" +#include "base/strings/string_piece.h" #include "base/strings/string_tokenizer.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -18,7 +19,7 @@ std::string FormatErrorMessageInternal( base::StringPiece format, std::initializer_list<base::StringPiece> args) { - std::string format_str = format.as_string(); + std::string format_str(format); base::StringTokenizer tokenizer(format_str, "*"); tokenizer.set_options(base::StringTokenizer::RETURN_DELIMS);
diff --git a/extensions/common/extension_l10n_util.cc b/extensions/common/extension_l10n_util.cc index 1a51563..e600749 100644 --- a/extensions/common/extension_l10n_util.cc +++ b/extensions/common/extension_l10n_util.cc
@@ -17,6 +17,7 @@ #include "base/json/json_string_value_serializer.h" #include "base/logging.h" #include "base/no_destructor.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" @@ -560,13 +561,13 @@ ScopedLocaleForTest::ScopedLocaleForTest(base::StringPiece process_locale, base::StringPiece preferred_locale) : ScopedLocaleForTest() { - SetProcessLocale(process_locale.as_string()); - SetPreferredLocale(preferred_locale.as_string()); + SetProcessLocale(std::string(process_locale)); + SetPreferredLocale(std::string(preferred_locale)); } ScopedLocaleForTest::~ScopedLocaleForTest() { - SetProcessLocale(process_locale_.as_string()); - SetPreferredLocale(preferred_locale_.as_string()); + SetProcessLocale(std::string(process_locale_)); + SetPreferredLocale(std::string(preferred_locale_)); } const std::string& GetPreferredLocaleForTest() {
diff --git a/extensions/common/features/feature.cc b/extensions/common/features/feature.cc index e5a56080..6c3795d4 100644 --- a/extensions/common/features/feature.cc +++ b/extensions/common/features/feature.cc
@@ -8,6 +8,7 @@ #include "base/command_line.h" #include "base/lazy_instance.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -48,15 +49,15 @@ Feature::~Feature() {} void Feature::set_name(base::StringPiece name) { - name_ = name.as_string(); + name_ = std::string(name); } void Feature::set_alias(base::StringPiece alias) { - alias_ = alias.as_string(); + alias_ = std::string(alias); } void Feature::set_source(base::StringPiece source) { - source_ = source.as_string(); + source_ = std::string(source); } } // namespace extensions
diff --git a/extensions/common/features/feature_provider.cc b/extensions/common/features/feature_provider.cc index bc017ec..4b749ba 100644 --- a/extensions/common/features/feature_provider.cc +++ b/extensions/common/features/feature_provider.cc
@@ -11,7 +11,9 @@ #include "base/debug/alias.h" #include "base/lazy_instance.h" #include "base/logging.h" +#include "base/memory/ptr_util.h" #include "base/metrics/histogram_macros.h" +#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/trace_event/trace_event.h" @@ -196,11 +198,11 @@ void FeatureProvider::AddFeature(base::StringPiece name, std::unique_ptr<Feature> feature) { - features_[name.as_string()] = std::move(feature); + features_[std::string(name)] = std::move(feature); } void FeatureProvider::AddFeature(base::StringPiece name, Feature* feature) { - features_[name.as_string()] = std::unique_ptr<Feature>(feature); + features_[std::string(name)] = base::WrapUnique(feature); } } // namespace extensions
diff --git a/extensions/common/features/simple_feature.cc b/extensions/common/features/simple_feature.cc index 5f63558..8e97b8769 100644 --- a/extensions/common/features/simple_feature.cc +++ b/extensions/common/features/simple_feature.cc
@@ -14,6 +14,7 @@ #include "base/containers/contains.h" #include "base/macros.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "components/crx_file/id_util.h" @@ -531,7 +532,7 @@ void SimpleFeature::set_command_line_switch( base::StringPiece command_line_switch) { - command_line_switch_ = command_line_switch.as_string(); + command_line_switch_ = std::string(command_line_switch); } void SimpleFeature::set_contexts(std::initializer_list<Context> contexts) { @@ -549,7 +550,7 @@ } void SimpleFeature::set_feature_flag(base::StringPiece feature_flag) { - feature_flag_ = feature_flag.as_string(); + feature_flag_ = std::string(feature_flag); } void SimpleFeature::set_session_types(
diff --git a/extensions/common/manifest_handlers/csp_info.cc b/extensions/common/manifest_handlers/csp_info.cc index 1b06d06..209c373f 100644 --- a/extensions/common/manifest_handlers/csp_info.cc +++ b/extensions/common/manifest_handlers/csp_info.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/no_destructor.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" @@ -253,7 +254,7 @@ std::vector<InstallWarning> warnings; std::string sanitized_content_security_policy = SanitizeContentSecurityPolicy( - content_security_policy_str, manifest_key.as_string(), + content_security_policy_str, std::string(manifest_key), GetValidatorOptions(extension), &warnings); extension->AddInstallWarnings(std::move(warnings)); @@ -287,7 +288,7 @@ std::vector<InstallWarning> warnings; std::string effective_sandbox_csp = csp_validator::GetEffectiveSandoxedPageCSP( - sandbox_csp_str, manifest_key.as_string(), &warnings); + sandbox_csp_str, std::string(manifest_key), &warnings); SetSandboxCSP(extension, std::move(effective_sandbox_csp)); extension->AddInstallWarnings(std::move(warnings)); return true; @@ -304,7 +305,7 @@ } else { DCHECK_EQ(content_security_policy, SanitizeContentSecurityPolicy( - content_security_policy, manifest_key.as_string(), + content_security_policy, std::string(manifest_key), GetValidatorOptions(extension), nullptr)); }
diff --git a/extensions/common/manifest_test.cc b/extensions/common/manifest_test.cc index 25f89d81..1cbbe09 100644 --- a/extensions/common/manifest_test.cc +++ b/extensions/common/manifest_test.cc
@@ -11,6 +11,7 @@ #include "base/json/json_file_value_serializer.h" #include "base/path_service.h" #include "base/strings/pattern.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/values.h" @@ -67,11 +68,11 @@ // Helper class that simplifies creating methods that take either a filename // to a manifest or the manifest itself. ManifestTest::ManifestData::ManifestData(base::StringPiece name) - : name_(name.as_string()) {} + : name_(name) {} ManifestTest::ManifestData::ManifestData(base::Value manifest, base::StringPiece name) - : name_(name.as_string()), manifest_(std::move(manifest)) { + : name_(name), manifest_(std::move(manifest)) { CHECK(manifest_.is_dict()) << "Manifest must be a dictionary. " << name_; }
diff --git a/extensions/common/url_pattern.cc b/extensions/common/url_pattern.cc index aa9bfb11..00f9495 100644 --- a/extensions/common/url_pattern.cc +++ b/extensions/common/url_pattern.cc
@@ -12,6 +12,7 @@ #include "base/strings/pattern.h" #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -308,7 +309,7 @@ host_piece = host_piece.substr(2); } - host_ = host_piece.as_string(); + host_ = std::string(host_piece); path_start_pos = host_end_pos; }
diff --git a/extensions/renderer/bindings/api_binding_hooks_test_delegate.cc b/extensions/renderer/bindings/api_binding_hooks_test_delegate.cc index a175c70..77a8a2b 100644 --- a/extensions/renderer/bindings/api_binding_hooks_test_delegate.cc +++ b/extensions/renderer/bindings/api_binding_hooks_test_delegate.cc
@@ -4,6 +4,8 @@ #include "extensions/renderer/bindings/api_binding_hooks_test_delegate.h" +#include "base/strings/string_piece.h" + namespace extensions { APIBindingHooksTestDelegate::APIBindingHooksTestDelegate() {} @@ -22,7 +24,7 @@ void APIBindingHooksTestDelegate::AddHandler(base::StringPiece name, RequestHandler handler) { - request_handlers_[name.as_string()] = std::move(handler); + request_handlers_[std::string(name)] = std::move(handler); } void APIBindingHooksTestDelegate::SetCustomEvent(
diff --git a/extensions/renderer/bindings/api_binding_test_util.cc b/extensions/renderer/bindings/api_binding_test_util.cc index 073e572..d3fff7d 100644 --- a/extensions/renderer/bindings/api_binding_test_util.cc +++ b/extensions/renderer/bindings/api_binding_test_util.cc
@@ -6,6 +6,7 @@ #include "base/json/json_reader.h" #include "base/json/json_writer.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/values.h" #include "content/public/renderer/v8_value_converter.h" @@ -49,7 +50,7 @@ std::string ReplaceSingleQuotes(base::StringPiece str) { std::string result; - base::ReplaceChars(str.as_string(), "'", "\"", &result); + base::ReplaceChars(str, "'", "\"", &result); return result; }
diff --git a/extensions/renderer/bindings/argument_spec.h b/extensions/renderer/bindings/argument_spec.h index ababad6..8abc421 100644 --- a/extensions/renderer/bindings/argument_spec.h +++ b/extensions/renderer/bindings/argument_spec.h
@@ -83,9 +83,9 @@ ArgumentType type() const { return type_; } const std::set<std::string>& enum_values() const { return enum_values_; } - void set_name(base::StringPiece name) { name_ = name.as_string(); } + void set_name(base::StringPiece name) { name_ = std::string(name); } void set_optional(bool optional) { optional_ = optional; } - void set_ref(base::StringPiece ref) { ref_ = ref.as_string(); } + void set_ref(base::StringPiece ref) { ref_ = std::string(ref); } void set_minimum(int minimum) { minimum_ = minimum; } void set_properties(PropertiesMap properties) { properties_ = std::move(properties);
diff --git a/extensions/renderer/bindings/argument_spec_builder.cc b/extensions/renderer/bindings/argument_spec_builder.cc index a12cdeb7..6bd0d0e 100644 --- a/extensions/renderer/bindings/argument_spec_builder.cc +++ b/extensions/renderer/bindings/argument_spec_builder.cc
@@ -4,6 +4,7 @@ #include "extensions/renderer/bindings/argument_spec_builder.h" +#include "base/strings/string_piece.h" namespace extensions { @@ -27,7 +28,7 @@ ArgumentSpecBuilder& ArgumentSpecBuilder::AddProperty( base::StringPiece property_name, std::unique_ptr<ArgumentSpec> property_spec) { - properties_[property_name.as_string()] = std::move(property_spec); + properties_[std::string(property_name)] = std::move(property_spec); return *this; }
diff --git a/extensions/renderer/content_watcher.cc b/extensions/renderer/content_watcher.cc index 7e6c3ddd..5596116 100644 --- a/extensions/renderer/content_watcher.cc +++ b/extensions/renderer/content_watcher.cc
@@ -8,6 +8,7 @@ #include <set> +#include "base/strings/string_piece.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame_observer.h" #include "content/public/renderer/render_frame_observer_tracker.h" @@ -129,7 +130,7 @@ std::vector<std::string> selector_strings; for (const base::StringPiece& selector : transitive_selectors) - selector_strings.push_back(selector.as_string()); + selector_strings.push_back(std::string(selector)); ExtensionFrameHelper::Get(render_frame()) ->GetLocalFrameHost()
diff --git a/extensions/renderer/native_extension_bindings_system.cc b/extensions/renderer/native_extension_bindings_system.cc index 6b3f5e4..f7226c5 100644 --- a/extensions/renderer/native_extension_bindings_system.cc +++ b/extensions/renderer/native_extension_bindings_system.cc
@@ -8,6 +8,7 @@ #include "base/callback.h" #include "base/command_line.h" #include "base/metrics/histogram_macros.h" +#include "base/strings/string_piece.h" #include "base/timer/elapsed_timer.h" #include "components/crx_file/id_util.h" #include "content/public/common/content_switches.h" @@ -320,7 +321,7 @@ v8::Local<v8::Object> nested_binding = CreateFullBinding(context, script_context, bindings_system, - api_feature_provider, binding_name.as_string()); + api_feature_provider, std::string(binding_name)); // It's possible that we don't create a binding if no features or // prefixed features are available to the context. if (nested_binding.IsEmpty())
diff --git a/fuchsia/base/frame_test_util.cc b/fuchsia/base/frame_test_util.cc index a3daec6..38e29d9 100644 --- a/fuchsia/base/frame_test_util.cc +++ b/fuchsia/base/frame_test_util.cc
@@ -3,10 +3,10 @@ // found in the LICENSE file. #include "fuchsia/base/frame_test_util.h" -#include "base/strings/string_piece.h" #include "base/json/json_reader.h" #include "base/run_loop.h" +#include "base/strings/string_piece.h" #include "fuchsia/base/fit_adapter.h" #include "fuchsia/base/mem_buffer_util.h" #include "fuchsia/base/result_receiver.h"
diff --git a/fuchsia/base/url_request_rewrite_test_util.cc b/fuchsia/base/url_request_rewrite_test_util.cc index d641805..31b0127 100644 --- a/fuchsia/base/url_request_rewrite_test_util.cc +++ b/fuchsia/base/url_request_rewrite_test_util.cc
@@ -3,8 +3,8 @@ // found in the LICENSE file. #include "fuchsia/base/url_request_rewrite_test_util.h" -#include "base/strings/string_piece.h" +#include "base/strings/string_piece.h" #include "fuchsia/base/string_util.h" namespace cr_fuchsia {
diff --git a/fuchsia/cipd/BUILD.gn b/fuchsia/cipd/BUILD.gn index c0b2256c..4d552618 100644 --- a/fuchsia/cipd/BUILD.gn +++ b/fuchsia/cipd/BUILD.gn
@@ -284,18 +284,16 @@ sources = far_sources + [ _manifest_path ] } -_debug_symbols_archive_name = "debug_symbols" - # Construct a consolidated directory of debugging symbols using the GNU # .build_id structure for CIPD archival. -_build_ids_target_dir = ".build-id" -build_id_dir(_build_ids_target_dir) { +_build_ids_target = "debug_symbol_directory" +build_id_dir(_build_ids_target) { build_id_dirs = [ "${root_gen_dir}/fuchsia/engine/web_engine", "${root_gen_dir}/fuchsia/runners/cast_runner", "${root_gen_dir}/fuchsia/runners/web_runner", ] - output_path = "${target_gen_dir}/${_debug_symbols_archive_name}/${_build_ids_target_dir}" + output_path = "${target_gen_dir}/${target_name}" deps = [ "//fuchsia/engine:web_engine", "//fuchsia/runners:cast_runner_pkg", @@ -303,13 +301,19 @@ ] } +_debug_symbols_archive_name = "debug_symbols" cipd_archive(_debug_symbols_archive_name) { + copy("copy_debug_symbols") { + sources = [ "${target_gen_dir}/${_build_ids_target}" ] + outputs = [ "${target_gen_dir}/${target_name}/{{source_file_part}}" ] + deps = [ ":${_build_ids_target}" ] + } package_basename = "debug-symbols" package_definition_basename = _debug_symbols_archive_name description = "Debugging symbols for prebuilt binaries from Chromium." - deps = [ ":${_build_ids_target_dir}" ] - source_directories = [ _build_ids_target_dir ] + deps = [ ":${_build_ids_target}" ] + source_directories = [ "." ] } cipd_archive("clear_key_cdm") {
diff --git a/fuchsia/engine/browser/context_impl.cc b/fuchsia/engine/browser/context_impl.cc index 92ae7025..12421260 100644 --- a/fuchsia/engine/browser/context_impl.cc +++ b/fuchsia/engine/browser/context_impl.cc
@@ -211,7 +211,5 @@ network::mojom::NetworkContext* ContextImpl::GetNetworkContext() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - return content::BrowserContext::GetDefaultStoragePartition( - browser_context_.get()) - ->GetNetworkContext(); + return browser_context_->GetDefaultStoragePartition()->GetNetworkContext(); }
diff --git a/fuchsia/engine/browser/media_resource_provider_service.cc b/fuchsia/engine/browser/media_resource_provider_service.cc index 03e62e4..f00bc2f 100644 --- a/fuchsia/engine/browser/media_resource_provider_service.cc +++ b/fuchsia/engine/browser/media_resource_provider_service.cc
@@ -71,8 +71,10 @@ fidl::InterfaceRequest<fuchsia::media::drm::ContentDecryptionModule> request) { scoped_refptr<network::SharedURLLoaderFactory> loader_factory = - content::BrowserContext::GetDefaultStoragePartition( - render_frame_host()->GetProcess()->GetBrowserContext()) + render_frame_host() + ->GetProcess() + ->GetBrowserContext() + ->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); media::CreateFetcherCB create_fetcher_cb = base::BindRepeating( &content::CreateProvisionFetcher, std::move(loader_factory));
diff --git a/fuchsia/engine/browser/web_engine_browser_main_parts.cc b/fuchsia/engine/browser/web_engine_browser_main_parts.cc index 08b0096..8ad40ee 100644 --- a/fuchsia/engine/browser/web_engine_browser_main_parts.cc +++ b/fuchsia/engine/browser/web_engine_browser_main_parts.cc
@@ -269,7 +269,7 @@ binding->impl()->browser_context(); std::string accept_language = net::HttpUtil::GenerateAcceptLanguageHeader( browser_client_->GetAcceptLangs(browser_context)); - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetNetworkContext() ->SetAcceptLanguage(accept_language); }
diff --git a/google_apis/drive/base_requests.cc b/google_apis/drive/base_requests.cc index 5a5d328..4af6db26 100644 --- a/google_apis/drive/base_requests.cc +++ b/google_apis/drive/base_requests.cc
@@ -18,6 +18,7 @@ #include "base/macros.h" #include "base/sequenced_task_runner.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "base/task_runner_util.h" #include "base/threading/thread_task_runner_handle.h" @@ -455,7 +456,7 @@ base::PostTaskAndReplyWithResult( blocking_task_runner(), FROM_HERE, base::BindOnce(&UrlFetchRequestBase::WriteFileData, - string_piece.as_string(), download_data_ptr), + std::string(string_piece), download_data_ptr), base::BindOnce(&UrlFetchRequestBase::OnWriteComplete, weak_ptr_factory_.GetWeakPtr(), std::move(download_data_), std::move(resume)));
diff --git a/google_apis/gaia/gaia_urls.cc b/google_apis/gaia/gaia_urls.cc index e0cb98f8..9b989c3 100644 --- a/google_apis/gaia/gaia_urls.cc +++ b/google_apis/gaia/gaia_urls.cc
@@ -92,7 +92,7 @@ if (command_line->HasSwitch(switch_value)) { *output_value = command_line->GetSwitchValueASCII(switch_value); } else { - *output_value = default_value.as_string(); + *output_value = std::string(default_value); } }
diff --git a/gpu/command_buffer/service/command_buffer_service.cc b/gpu/command_buffer/service/command_buffer_service.cc index d399264..03fc196c 100644 --- a/gpu/command_buffer/service/command_buffer_service.cc +++ b/gpu/command_buffer/service/command_buffer_service.cc
@@ -11,6 +11,7 @@ #include <memory> #include "base/logging.h" +#include "base/strings/string_piece.h" #include "base/trace_event/trace_event.h" #include "gpu/command_buffer/common/cmd_buffer_common.h" #include "gpu/command_buffer/common/command_buffer_shared.h" @@ -44,7 +45,7 @@ } TRACE_EVENT1("gpu", "CommandBufferService:PutChanged", "handler", - handler->GetLogPrefix().as_string()); + std::string(handler->GetLogPrefix())); put_offset_ = put_offset;
diff --git a/gpu/config/gpu_info_collector.cc b/gpu/config/gpu_info_collector.cc index cc7b26f..7444d80 100644 --- a/gpu/config/gpu_info_collector.cc +++ b/gpu/config/gpu_info_collector.cc
@@ -255,7 +255,7 @@ // Also declare the driver_vendor to be <software GL> to be able to // specify exceptions based on driver_vendor==<software GL> for some // blocklist rules. - gpu_info->gpu.driver_vendor = software_gl_impl_name.as_string(); + gpu_info->gpu.driver_vendor = std::string(software_gl_impl_name); return true; } else if ((implementation == gl::GetSoftwareGLImplementation()) ||
diff --git a/gpu/ipc/client/gpu_channel_host.cc b/gpu/ipc/client/gpu_channel_host.cc index 68f1af0..0a08b006 100644 --- a/gpu/ipc/client/gpu_channel_host.cc +++ b/gpu/ipc/client/gpu_channel_host.cc
@@ -175,7 +175,7 @@ InternalFlush(deferred_message_id); if (deferred_message_id > verified_deferred_message_id_) { - base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope allow_wait; + mojo::SyncCallRestrictions::ScopedAllowSyncCall allow_sync; GetGpuChannel().Flush(); verified_deferred_message_id_ = flushed_deferred_message_id_; }
diff --git a/headless/lib/browser/headless_content_browser_client.cc b/headless/lib/browser/headless_content_browser_client.cc index 22135967..9c8cf33 100644 --- a/headless/lib/browser/headless_content_browser_client.cc +++ b/headless/lib/browser/headless_content_browser_client.cc
@@ -14,6 +14,7 @@ #include "base/i18n/rtl.h" #include "base/path_service.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "build/build_config.h" #include "components/embedder_support/switches.h" @@ -250,7 +251,7 @@ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (!languages.empty()) { command_line->AppendSwitchASCII(::switches::kLang, - languages[0].as_string()); + std::string(languages[0])); } }
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index 58162e53..bfee4eac 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -896,7 +896,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3194,7 +3194,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3256,7 +3256,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3318,7 +3318,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3380,7 +3380,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3570,7 +3570,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3632,7 +3632,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3694,7 +3694,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -3756,7 +3756,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4004,7 +4004,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4066,7 +4066,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4128,7 +4128,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4190,7 +4190,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4376,7 +4376,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4438,7 +4438,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4500,7 +4500,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -4562,7 +4562,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -6244,7 +6244,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -6306,7 +6306,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8171,7 +8171,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8233,7 +8233,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8295,7 +8295,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8357,7 +8357,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8481,7 +8481,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8543,7 +8543,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8605,7 +8605,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8667,7 +8667,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8791,7 +8791,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8853,7 +8853,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8915,7 +8915,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -8977,7 +8977,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -9349,7 +9349,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -10787,7 +10787,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -10849,7 +10849,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -10911,7 +10911,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -10973,7 +10973,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11035,7 +11035,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11161,7 +11161,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11223,7 +11223,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11285,7 +11285,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11347,7 +11347,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11409,7 +11409,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11471,7 +11471,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11597,7 +11597,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11659,7 +11659,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11721,7 +11721,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -11783,7 +11783,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -16586,7 +16586,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -16648,7 +16648,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -16710,7 +16710,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -16772,7 +16772,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -16834,7 +16834,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -16896,7 +16896,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -16958,7 +16958,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17020,7 +17020,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17082,7 +17082,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17144,7 +17144,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17268,7 +17268,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17452,7 +17452,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17514,7 +17514,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17638,7 +17638,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17700,7 +17700,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -17762,7 +17762,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -18257,7 +18257,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -18381,7 +18381,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -18505,7 +18505,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -18629,7 +18629,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -18753,7 +18753,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -22909,7 +22909,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -24234,7 +24234,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -24296,7 +24296,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -24358,7 +24358,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -24420,7 +24420,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -27150,7 +27150,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -27276,7 +27276,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -27402,7 +27402,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -27464,7 +27464,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -27526,7 +27526,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -30713,7 +30713,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -30775,7 +30775,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -30837,7 +30837,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -30899,7 +30899,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -31639,7 +31639,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -31701,7 +31701,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -31763,7 +31763,7 @@ dimensions: "builderless:1" dimensions: "cores:2" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-18.04" dimensions: "pool:luci.chromium.gpu.ci" dimensions: "ssd:0" exe { @@ -46891,7 +46891,7 @@ dimensions: "builder:linux-rel" dimensions: "cores:8" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-16.04|Ubuntu-18.04" dimensions: "pool:luci.chromium.try" exe { cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
diff --git a/infra/config/lib/ci.star b/infra/config/lib/ci.star index 12428e3..059f01b 100644 --- a/infra/config/lib/ci.star +++ b/infra/config/lib/ci.star
@@ -202,11 +202,12 @@ *, name, goma_backend = builders.goma.backend.RBE_PROD, + os = builders.os.LINUX_DEFAULT, **kwargs): return angle_builder( name = name, goma_backend = goma_backend, - os = builders.os.LINUX_DEFAULT, + os = os, pool = "luci.chromium.gpu.ci", **kwargs ) @@ -233,6 +234,7 @@ # Setting goma_backend for testers is a no-op, but better to be explicit # here and also leave the generated configs unchanged for these testers. goma_backend = None, + os = builders.os.LINUX_BIONIC_SWITCH_TO_DEFAULT, **kwargs ) @@ -327,12 +329,13 @@ *, name, goma_backend = builders.goma.backend.RBE_PROD, + os = builders.os.LINUX_DEFAULT, **kwargs): return dawn_builder( name = name, builderless = True, goma_backend = goma_backend, - os = builders.os.LINUX_DEFAULT, + os = os, pool = "luci.chromium.gpu.ci", **kwargs ) @@ -358,6 +361,7 @@ cores = 2, # Setting goma_backend for testers is a no-op, but better to be explicit goma_backend = None, + os = builders.os.LINUX_BIONIC_SWITCH_TO_DEFAULT, **kwargs ) @@ -491,12 +495,13 @@ name, execution_timeout = 6 * time.hour, goma_backend = builders.goma.backend.RBE_PROD, + os = builders.os.LINUX_DEFAULT, **kwargs): return gpu_fyi_builder( name = name, execution_timeout = execution_timeout, goma_backend = goma_backend, - os = builders.os.LINUX_DEFAULT, + os = os, pool = "luci.chromium.gpu.ci", **kwargs ) @@ -526,6 +531,7 @@ # Setting goma_backend for testers is a no-op, but better to be explicit # here and also leave the generated configs unchanged for these testers. goma_backend = None, + os = builders.os.LINUX_BIONIC_SWITCH_TO_DEFAULT, **kwargs ) @@ -554,12 +560,13 @@ *, name, goma_backend = builders.goma.backend.RBE_PROD, + os = builders.os.LINUX_DEFAULT, **kwargs): return gpu_builder( name = name, builderless = True, goma_backend = goma_backend, - os = builders.os.LINUX_DEFAULT, + os = os, pool = "luci.chromium.gpu.ci", **kwargs ) @@ -583,6 +590,7 @@ tree_closing = tree_closing, # Setting goma_backend for testers is a no-op, but better to be explicit goma_backend = None, + os = builders.os.LINUX_BIONIC_SWITCH_TO_DEFAULT, **kwargs )
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star index 89b42edc..9b622e6 100644 --- a/infra/config/subprojects/chromium/try.star +++ b/infra/config/subprojects/chromium/try.star
@@ -1229,6 +1229,8 @@ main_list_view = "try", tryjob = try_.job(), use_clang_coverage = True, + # TODO(crbug/1199425): Remove this once bionic bot is the default option. + os = os.LINUX_XENIAL_OR_BIONIC, ) # Experimental builder to check dual coverage on linux platform.
diff --git a/ios/chrome/app/strings/resources/ios_strings_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb index 6a1f7876d..8643f8fa 100644 --- a/ios/chrome/app/strings/resources/ios_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Webdienste</translation> <translation id="3178650076442119961">Vandag aktief</translation> +<translation id="3181825792072797598">Skakel Sinkronisering aan</translation> <translation id="3181954750937456830">Veiligblaai (beskerm jou en jou toestel teen gevaarlike werwe)</translation> <translation id="3184767182050912705">Ontsluit met <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Werwe kan webkoekies gebruik om jou blaai-ervaring beter te maak, byvoorbeeld, om jou aangemeld te hou of om items in jou inkopiemandjie te onthou. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Jy kan hiermee relevante webbladsye op grond van jou omgewing ontdek.</translation> <translation id="5758631781033351321">Jy sal jou leeslys hier kry</translation> <translation id="5782227691023083829">Vertaal tans …</translation> +<translation id="5797070761912323120">Google kan jou geskiedenis gebruik om Search, advertensies en ander Google-dienste te personaliseer</translation> <translation id="5803566855766646066">Is jy seker jy wil hierdie nuwe kaart weggooi?</translation> <translation id="5816228676161003208">Dit laat jou vinniger soek met jou stem.</translation> <translation id="581659025233126501">Skakel sinkronisering aan</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK, het dit</translation> <translation id="734758817008927353">Opsies om 'n kaart te stoor</translation> <translation id="7348502496356775519">Boekmerk</translation> +<translation id="7352651011704765696">Iets het verkeerd geloop</translation> <translation id="7353432112255316844">Verifieer dis jy</translation> <translation id="7383797227493018512">Leeslys</translation> <translation id="7398893703713203428">Skep skakel</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb index 45d55c0..dbf2ab7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">የድር አገልግሎቶች</translation> <translation id="3178650076442119961">ገባሪ ዛሬ</translation> +<translation id="3181825792072797598">አስምርን አብራ</translation> <translation id="3181954750937456830">ደኅንነቱ የተጠበቀ አሰሳ (እርስዎን እና የእርስዎን መሣሪያ ከአደገኛ ጣቢያዎች ጥበቃ ያደርግላችኋል)</translation> <translation id="3184767182050912705">በ<ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ይክፈቱ</translation> <translation id="3196681740617426482">ጣቢያዎች የአሰሳዎን ተሞክሮ ለማሻሻል፣ ለምሳሌ እርስዎ በመለያ እንደገቡ ለማቆየት ወይም በግዢ ጋሪዎ ውስጥ ንጥሎችን ለማስታወስ ኩኪዎችን መጠቀም ይችላሉ። @@ -447,6 +448,7 @@ <translation id="5738887413654608789">ይህ በእርስዎ ያሉበት ስፍራ አካባቢ ላይ በመመርኮዝ ተዛማጅነት ያላቸው የድር ገጾችን እንዲያገኙ ያስችልዎታል።</translation> <translation id="5758631781033351321">የእርስዎን ንባብ ዝርዝር እዚህ ያገኛሉ</translation> <translation id="5782227691023083829">በመተረጎም ላይ...</translation> +<translation id="5797070761912323120">Google ፍለጋን፣ ማስታወቂያዎችን እና ሌሎች የGoogle አገልግሎቶችን ግላዊነት ለማላበስ የእርስዎን ታሪክ ሊጠቀም ይችላል</translation> <translation id="5803566855766646066">እርግጠኛ ነዎት ይህን አዲስ ካርድ ማስወገድ ይፈልጋሉ?</translation> <translation id="5816228676161003208">ይህ እርስዎ ድምፅዎን ተጠቅመው በበለጠ ፍጥነት እንዲፈልጉ ያስችልዎታል።</translation> <translation id="581659025233126501">አስምርን ያብሩ</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">እሺ፣ ገባኝ</translation> <translation id="734758817008927353">ካርድን ለማስቀመጥ አማራጮች</translation> <translation id="7348502496356775519">ዕልባት አድርግ</translation> +<translation id="7352651011704765696">የሆነ ችግር ተፈጥሯል</translation> <translation id="7353432112255316844">እርስዎ መሆንዎን ያረጋግጡ</translation> <translation id="7383797227493018512">የንባብ ዝርዝር</translation> <translation id="7398893703713203428">አገናኝ ፍጠር</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb index 57c88dae..049f528 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">خدمات الويب</translation> <translation id="3178650076442119961">نشط اليوم</translation> +<translation id="3181825792072797598">تفعيل المزامنة</translation> <translation id="3181954750937456830">التصفُّح الآمن (يحميك ويحمي جهازك من المواقع الإلكترونية الضارة)</translation> <translation id="3184767182050912705">الفتح باستخدام <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">يسمح هذا الإجراء للمواقع الإلكترونية باستخدام ملفات تعريف الارتباط لتحسين تجربة التصفُّح، مثل إبقائك مُسجِّلاً الدخول أو تذكُّر عناصر في سلة التسوق. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">يتيح لك هذا اكتشاف صفحات الويب ذات الصلة حسب الأشياء المحيطة بك.</translation> <translation id="5758631781033351321">ستظهر لك "قائمة القراءة" هنا</translation> <translation id="5782227691023083829">جارٍ ترجمة...</translation> +<translation id="5797070761912323120">قد تستخدم Google سجلّك لتخصيص البحث والإعلانات وخدمات Google الأخرى.</translation> <translation id="5803566855766646066">هل تريد فعلاً تجاهل هذه البطاقة الجديدة؟</translation> <translation id="5816228676161003208">هذا يتيح لك البحث بشكلٍ أسرع باستخدام صوتك.</translation> <translation id="581659025233126501">تفعيل المزامنة</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">حسنًا</translation> <translation id="734758817008927353">خيارات حفظ البطاقة</translation> <translation id="7348502496356775519">إشارة مرجعية</translation> +<translation id="7352651011704765696">حدث خطأ ما</translation> <translation id="7353432112255316844">إثبات هويّتك</translation> <translation id="7383797227493018512">قائمة القراءة</translation> <translation id="7398893703713203428">إنشاء رابط</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb index c5097563..a5139129 100644 --- a/ios/chrome/app/strings/resources/ios_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">ৱেব সেৱা</translation> <translation id="3178650076442119961">আজি সক্ৰিয় হৈছে</translation> +<translation id="3181825792072797598">ছিংক অন কৰক</translation> <translation id="3181954750937456830">সুৰক্ষিত ব্ৰাউজিং (আপোনাৰ ডিভাইচটোক বিপজ্জনক ছাইটৰ পৰা সুৰক্ষা প্ৰদান কৰে)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" />ৰ জৰিয়তে আনলক কৰক</translation> <translation id="3196681740617426482">ছাইটসমূহে আপোনাৰ ব্ৰাউজিঙৰ অভিজ্ঞতা উন্নত কৰিবলৈ কুকিসমূহ ব্যৱহাৰ কৰিব পাৰে, উদাহৰণস্বৰূপে, আপোনাক ছাইন ইন কৰি ৰাখিবলৈ অথবা আপোনাৰ শ্বপিং কার্টত থকা বস্তুবোৰ মনত ৰাখিবলৈ। @@ -220,6 +221,7 @@ <translation id="3240426699337459095">লিংকটোৰ প্ৰতিলিপি কৰা হ’ল</translation> <translation id="3244271242291266297">মাহ</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" />ৰ <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> +<translation id="3261971309013797455">আপোনাৰ পঢ়াৰ সূচীখন অফলাইন উপলব্ধ। আপোনাৰ পঢ়াৰ সূচীখনত কোনো পৃষ্ঠা যোগ দিবলৈ প্ৰথমে <ph name="SHARE_OPENING_ICON" /> আৰু তাৰ পাছত <ph name="ADD_TO_READING_LIST_TEXT" /> টিপক।</translation> <translation id="3268451620468152448">খুলি ৰখা টেব</translation> <translation id="3272527697863656322">বাতিল কৰক</translation> <translation id="3277021493514034324">ছাইটৰ ঠিকনা প্ৰতিলিপি কৰা হৈছে</translation> @@ -446,6 +448,7 @@ <translation id="5738887413654608789">ই আপোনাক আপোনাৰ চৌপাশৰ ঠাইৰ ওপৰত ভিত্তি কৰি প্ৰাসংগিক ৱেব পৃষ্ঠা সন্ধান কৰিবলৈ দিয়ে।</translation> <translation id="5758631781033351321">ইয়াত আপুনি নিজৰ পঢ়াৰ সূচীখন বিচাৰি পাব</translation> <translation id="5782227691023083829">অনুবাদ কাৰ্য্য চলি আছে...</translation> +<translation id="5797070761912323120">Googleএ Search, বিজ্ঞাপন আৰু অন্য Google সেৱা ব্যক্তিকৃত কৰিবলৈ আপোনাৰ ব্ৰাউজিঙৰ ইতিহাস ব্যৱহাৰ কৰিব পাৰে</translation> <translation id="5803566855766646066">আপুনি এই নতুন কাৰ্ডখন প্ৰত্যাখ্যান কৰিব বিচাৰে বুলি নিশ্চিতনে?</translation> <translation id="5816228676161003208">এই সুবিধাই আপোনাক নিজৰ কণ্ঠস্বৰ ব্যৱহাৰ কৰি ক্ষিপ্ৰভাৱে সন্ধান কৰিবলৈ দিয়ে।</translation> <translation id="581659025233126501">ছিংক অন কৰক</translation> @@ -622,6 +625,7 @@ <translation id="7346909386216857016">ঠিক আছে, বুজি পালোঁ</translation> <translation id="734758817008927353">কার্ড ছেভ কৰাৰ বিকল্পসমূহ</translation> <translation id="7348502496356775519">বুকমাৰ্ক কৰক</translation> +<translation id="7352651011704765696">কিবা সমস্যা হৈছে</translation> <translation id="7353432112255316844">এয়া আপুনিয়েই বুলি সত্যাপন কৰক</translation> <translation id="7383797227493018512">পঢ়াৰ সূচী</translation> <translation id="7398893703713203428">লিংক সৃষ্টি কৰক</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb index 719ceae6..ff461eaf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Veb Xidmətlər</translation> <translation id="3178650076442119961">Bu Gün Aktiv Olub</translation> +<translation id="3181825792072797598">Sinxronizasiyanı aktiv edin</translation> <translation id="3181954750937456830">Təhlükəsiz Axtarış (Sizi və cihazınızı təhlükəli saytlardan qoruyur)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ilə kiliddən çıxarın</translation> <translation id="3196681740617426482">Saytlar baxış təcrübənizi yaxşılaşdırmaq üçün, məsələn, sizi daxil olmuş vəziyyətdə saxlamaq və ya alış-veriş səbətinizdəki elementləri yadda saxlamaq üçün kukilərdən istifadə edə bilər. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Ətrafınızda uyğun veb səhifələri kəşf etməyə imkan verir.</translation> <translation id="5758631781033351321">Oxu siyahısını burada tapa bilərsiniz</translation> <translation id="5782227691023083829">Tərcümə edilir...</translation> +<translation id="5797070761912323120">Axtarış, reklam və digər Google xidmətlərini fərdiləşdirmək üçün Google tarixçədən istifadə edə bilər</translation> <translation id="5803566855766646066">Bu yeni kartı silmək istədiyinizə əminsiniz?</translation> <translation id="5816228676161003208">Səsinizi istifadə edərək daha sürətli axtarış etməyə icazə verir.</translation> <translation id="581659025233126501">Sinxronizasiyanı aktiv edin</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok, anladım</translation> <translation id="734758817008927353">Kartı Yadda Saxlamaq seçimləri</translation> <translation id="7348502496356775519">Əlfəcin</translation> +<translation id="7352651011704765696">Xəta oldu</translation> <translation id="7353432112255316844">Kimliyinizi doğrulayın</translation> <translation id="7383797227493018512">Oxu Siyahısı</translation> <translation id="7398893703713203428">Keçid yaradın</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb index bffe346f..23a48bd5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Вэб-сэрвісы</translation> <translation id="3178650076442119961">Апошнія дзеянні адбываліся сёння</translation> +<translation id="3181825792072797598">Уключыць сінхранізацыю</translation> <translation id="3181954750937456830">Бяспечны прагляд (абараняе вас і прыладу ад небяспечных сайтаў)</translation> <translation id="3184767182050912705">Разблакіраваць, выкарыстаўшы <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Сайты могуць выкарыстоўваць файлы cookie для паляпшэння сваёй функцыянальнасці: напрыклад, для захавання інфармацыі пра тое, што вы ўвайшлі ва ўліковы запіс, або каб запамінаць тавары ў кошыку. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Гэта дазваляе на аснове даных пра наваколле знаходзіць адпаведныя вэб-старонкі.</translation> <translation id="5758631781033351321">Ваш спіс чытання знаходзіцца тут</translation> <translation id="5782227691023083829">Ідзе пераклад...</translation> +<translation id="5797070761912323120">Google можа выкарыстоўваць вашу гісторыю, каб персаналізаваць пошук, паказ рэкламы і іншыя сэрвісы Google</translation> <translation id="5803566855766646066">Сапраўды адхіліць гэту новую картку?</translation> <translation id="5816228676161003208">Гэта дазваляе паскорыць пошук пры выкарыстанні голасу.</translation> <translation id="581659025233126501">Уключыць сінхранізацыю</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">Параметры захавання карткі</translation> <translation id="7348502496356775519">Дадаць у закладкі</translation> +<translation id="7352651011704765696">Нешта пайшло не так</translation> <translation id="7353432112255316844">Пацвердзіць маю асобу</translation> <translation id="7383797227493018512">Спіс для чытання</translation> <translation id="7398893703713203428">Стварыць спасылку</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb index 7b0def7..447df845 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Уеб услуги</translation> <translation id="3178650076442119961">Активно днес</translation> +<translation id="3181825792072797598">Включване на синхронизирането</translation> <translation id="3181954750937456830">„Безопасно сърфиране“ (защитава вас и устройството ви от опасни сайтове)</translation> <translation id="3184767182050912705">Отключване с <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Сайтовете могат да използват „бисквитки“ с цел по-добро сърфиране, например за да оставате в профила си или за да запомнят артикулите в пазарската ви кошница. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Това ви позволява да откривате подходящи уеб страници въз основа на заобикалящата ви среда.</translation> <translation id="5758631781033351321">Тук ще се показва списъкът ви за четене</translation> <translation id="5782227691023083829">Превежда се...</translation> +<translation id="5797070761912323120">Възможно е да използваме историята ви, за да персонализираме търсенето, рекламите и други услуги на Google</translation> <translation id="5803566855766646066">Наистина ли искате да отхвърлите тази нова карта?</translation> <translation id="5816228676161003208">Това ви позволява да търсите по-бързо посредством гласа си.</translation> <translation id="581659025233126501">Включване на синхронизирането</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Добре, разбрах</translation> <translation id="734758817008927353">Опции за запазване на картата</translation> <translation id="7348502496356775519">Отметка</translation> +<translation id="7352651011704765696">Нещо се обърка</translation> <translation id="7353432112255316844">Потвърдете, че сте вие</translation> <translation id="7383797227493018512">Списък за четене</translation> <translation id="7398893703713203428">Създаване на връзка</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb index efe07ee..d0aadaf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">আবিষ্কার করুন</translation> <translation id="3175081911749765310">ওয়েব পরিষেবা</translation> <translation id="3178650076442119961">আজ ব্যবহার করা হয়েছে</translation> +<translation id="3181825792072797598">সিঙ্ক চালু করুন</translation> <translation id="3181954750937456830">নিরাপদ ব্রাউজিং (বিপজ্জনক সাইট থেকে আপনাকে এবং আপনার ডিভাইসকে রক্ষা করে)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> দিয়ে আনলক করুন</translation> <translation id="3196681740617426482">আপনি যাতে সাইন-ইন হয়ে থাকতে পারেন তার ব্যবস্থা করা বা শপিং কার্টে আপনার বেছে নেওয়া আইটেমগুলি মনে রাখার মতো আপনার ব্রাউজিং অভিজ্ঞতা আরও ভাল করার জন্য সাইট কুকি ব্যবহার করতে পারবে। @@ -220,6 +221,7 @@ <translation id="3240426699337459095">লিঙ্ক কপি করা হয়েছে</translation> <translation id="3244271242291266297">মিমি</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> এর <ph name="INDEX" /></translation> +<translation id="3261971309013797455">আপনার পড়ার তালিকাটি অফলাইনে উপলভ্য। পড়ার তালিকায় কোনও পৃষ্ঠা যোগ করতে, <ph name="SHARE_OPENING_ICON" />-এ এবং তারপরে <ph name="ADD_TO_READING_LIST_TEXT" />-এ ট্যাপ করুন।</translation> <translation id="3268451620468152448">ওপেন ট্যাব</translation> <translation id="3272527697863656322">বাতিল করুন</translation> <translation id="3277021493514034324">সাইটের ঠিকানা কপি করা হয়েছে</translation> @@ -447,6 +449,7 @@ <translation id="5738887413654608789">এই আদেশটি আপনার পারিপার্শ্বিক পরিবেশের উপর নির্ভর করে ওয়েব পৃষ্ঠার খোঁজ করতে দেয়।</translation> <translation id="5758631781033351321">আপনি নিজের পড়ার তালিকা এখানে খুঁজে পাবেন</translation> <translation id="5782227691023083829">অনুবাদ হচ্ছে...</translation> +<translation id="5797070761912323120">সার্চ, বিজ্ঞাপন এবং অন্যান্য Google পরিষেবাকে আপনার মতো করে সাজিয়ে নিতে Google আপনার ইতিহাস ব্যবহার করতে পারে</translation> <translation id="5803566855766646066">আপনি কি সত্যিই এই নতুন কার্ড বাতিল করতে চান?</translation> <translation id="5816228676161003208">এটি আপনাকে আপনার ভয়েস ব্যবহার করে আরও দ্রুত সার্চ করতে দেয়।</translation> <translation id="581659025233126501">সিঙ্ক চালু করুন</translation> @@ -624,6 +627,7 @@ <translation id="7346909386216857016">ঠিক আছে, বুঝেছি</translation> <translation id="734758817008927353">কার্ড সেভ করার বিকল্প দেখার বোতাম</translation> <translation id="7348502496356775519">বুকমার্ক</translation> +<translation id="7352651011704765696">কিছু সমস্যা হয়েছে</translation> <translation id="7353432112255316844">নিজের পরিচয় যাচাই করুন</translation> <translation id="7383797227493018512">পড়ার সূচি খুলুন</translation> <translation id="7398893703713203428">লিঙ্ক তৈরি করুন</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb index e68c539..adabf75 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Otkrijte</translation> <translation id="3175081911749765310">Web usluge</translation> <translation id="3178650076442119961">Aktivan danas</translation> +<translation id="3181825792072797598">Uključi Sinkronizaciju</translation> <translation id="3181954750937456830">Sigurno pregledavanje (štiti vas i vaš uređaj od opasnih web-lokacija)</translation> <translation id="3184767182050912705">Koristi <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> za otključavanje</translation> <translation id="3196681740617426482">Web lokacije mogu koristiti kolačiće da poboljšaju vaše iskustvo pregledanja, naprimjer, da ostanete prijavljeni ili da stavke u kolicima za kupovinu ostanu sačuvane. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Ovako možete otkriti relevantne web lokacije na osnovu vašeg okruženja.</translation> <translation id="5758631781033351321">Listu za čitanje ćete pronaći ovdje</translation> <translation id="5782227691023083829">Prevođenje...</translation> +<translation id="5797070761912323120">Google može koristiti vašu historiju za personalizaciju Pretraživanja, oglasa i drugih Googleovih usluga</translation> <translation id="5803566855766646066">Jeste li sigurni da želite odbaciti novu karticu?</translation> <translation id="5816228676161003208">To vam omogućava brže pretraživanje pomoću glasa.</translation> <translation id="581659025233126501">Uključi sinhronizaciju</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Uredu, razumijem</translation> <translation id="734758817008927353">Opcije za čuvanje kartice</translation> <translation id="7348502496356775519">Označi</translation> +<translation id="7352651011704765696">Nešto nije uredu</translation> <translation id="7353432112255316844">Potvrdite identitet</translation> <translation id="7383797227493018512">Lista za čitanje</translation> <translation id="7398893703713203428">Kreiraj link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb index d3d19c9..aaa29df 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Serveis web</translation> <translation id="3178650076442119961">Actiu avui</translation> +<translation id="3181825792072797598">Activa l'opció Sincronització</translation> <translation id="3181954750937456830">Navegació segura (us protegeix a tu i al teu dispositiu de llocs web perillosos)</translation> <translation id="3184767182050912705">Desbloqueja amb <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Els llocs web poden fer servir galetes per millorar la teva experiència de navegació, per exemple, per mantenir la teva sessió iniciada o per recordar els elements que tens al carretó de la compra. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Això et permet detectar pàgines web rellevants del teu entorn.</translation> <translation id="5758631781033351321">Trobaràs la llista de lectura aquí</translation> <translation id="5782227691023083829">S'està traduint...</translation> +<translation id="5797070761912323120">És possible que Google utilitzi el teu historial per personalitzar la Cerca, els anuncis i altres serveis de Google</translation> <translation id="5803566855766646066">Confirmes que vols descartar aquesta targeta nova?</translation> <translation id="5816228676161003208">Això et permet fer cerques més de pressa amb la veu.</translation> <translation id="581659025233126501">Activa la sincronització</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">D'acord</translation> <translation id="734758817008927353">Opcions per desar la targeta</translation> <translation id="7348502496356775519">Adreça d'interès</translation> +<translation id="7352651011704765696">S'ha produït un error</translation> <translation id="7353432112255316844">Verifica la teva identitat</translation> <translation id="7383797227493018512">Llista de lectura</translation> <translation id="7398893703713203428">Crea un enllaç</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb index 5ebad07b..a61aee7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Webové služby</translation> <translation id="3178650076442119961">Aktivní dnes</translation> +<translation id="3181825792072797598">Zapnout synchronizaci</translation> <translation id="3181954750937456830">Bezpečné prohlížení (chrání vás a vaše zařízení před nebezpečnými weby)</translation> <translation id="3184767182050912705">Odemknout pomocí <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Weby mohou používat soubory cookie ke zlepšování prostředí při prohlížení, například si pomocí nich mohou pamatovat vaše přihlášení a položky v nákupním košíku. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Umožňuje vám objevovat relevantní webové stránky na základě vašeho okolí.</translation> <translation id="5758631781033351321">Zde najdete svůj seznam četby</translation> <translation id="5782227691023083829">Překládání...</translation> +<translation id="5797070761912323120">Google vaši historii může používat k personalizaci Vyhledávání, reklam a dalších služeb Google</translation> <translation id="5803566855766646066">Opravdu tuto novou kartu chcete zahodit?</translation> <translation id="5816228676161003208">Toto umožňuje vyhledávat rychleji hlasem.</translation> <translation id="581659025233126501">Zapnout synchronizaci</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Dobře, rozumím</translation> <translation id="734758817008927353">Možnosti uložení karty</translation> <translation id="7348502496356775519">Záložka</translation> +<translation id="7352651011704765696">Něco se pokazilo</translation> <translation id="7353432112255316844">Ověřte svou totožnost</translation> <translation id="7383797227493018512">Seznam četby</translation> <translation id="7398893703713203428">Vytvořit odkaz</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb index 736250e..eb2048c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Webtjenester</translation> <translation id="3178650076442119961">Aktiv i dag</translation> +<translation id="3181825792072797598">Aktivér synkronisering</translation> <translation id="3181954750937456830">Beskyttet browsing (beskytter dig og din enhed mod farlige websites)</translation> <translation id="3184767182050912705">Lås op med <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Websites kan bruge cookies til at forbedre din browseroplevelse ved f.eks. at sørge for, at du forbliver logget ind, eller ved at huske varerne i din kurv. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Dette giver dig mulighed for at opdage relevante websider baseret på dine omgivelser.</translation> <translation id="5758631781033351321">Her finder du din læseliste</translation> <translation id="5782227691023083829">Oversætter ...</translation> +<translation id="5797070761912323120">Google kan bruge din historik til at tilpasse Søgning, annoncer og andre Google-tjenester</translation> <translation id="5803566855766646066">Er du sikker på, at du vil kassere dette nye kort?</translation> <translation id="5816228676161003208">Dette gør søgning ved hjælp af din stemme hurtigere.</translation> <translation id="581659025233126501">Aktivér synkronisering</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">Valgmuligheder for at gemme kort</translation> <translation id="7348502496356775519">Tilføj bogmærke</translation> +<translation id="7352651011704765696">Noget gik galt</translation> <translation id="7353432112255316844">Bekræft din identitet</translation> <translation id="7383797227493018512">Læseliste</translation> <translation id="7398893703713203428">Opret link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index b5d4aa2..835e4150 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Webdienste</translation> <translation id="3178650076442119961">Heute aktiv</translation> +<translation id="3181825792072797598">Synchronisierung aktivieren</translation> <translation id="3181954750937456830">Safe Browsing (mich und mein Gerät vor schädlichen Websites schützen)</translation> <translation id="3184767182050912705">Mit <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> entsperren</translation> <translation id="3196681740617426482">Websites können Cookies verwenden, um Ihnen das Surfen zu erleichtern; zum Beispiel, damit Sie angemeldet oder Artikel in Ihrem Einkaufswagen gespeichert bleiben. @@ -220,7 +221,7 @@ <translation id="3240426699337459095">Link wurde kopiert.</translation> <translation id="3244271242291266297">MM</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> von <ph name="NUM_SUGGESTIONS" /></translation> -<translation id="3261971309013797455">Ihre Leseliste ist offline verfügbar. Sie können eine Seite Ihrer Leseliste hinzufügen, indem Sie auf <ph name="SHARE_OPENING_ICON" /> > <ph name="ADD_TO_READING_LIST_TEXT" /> tippen.</translation> +<translation id="3261971309013797455">Ihre Leseliste ist offline verfügbar. Wenn Sie Ihrer Leseliste eine Seite hinzufügen möchten, tippen Sie auf <ph name="SHARE_OPENING_ICON" /> > <ph name="ADD_TO_READING_LIST_TEXT" />.</translation> <translation id="3268451620468152448">Geöffnete Tabs</translation> <translation id="3272527697863656322">Abbrechen</translation> <translation id="3277021493514034324">Websiteadresse kopiert</translation> @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Dann können Sie relevante Webseiten zu Objekten in Ihrer Umgebung entdecken.</translation> <translation id="5758631781033351321">Hier wird Ihre Leseliste angezeigt</translation> <translation id="5782227691023083829">Wird übersetzt...</translation> +<translation id="5797070761912323120">Anhand Ihres Verlaufs kann Google die Google Suche, Werbung und andere Google-Dienste personalisieren</translation> <translation id="5803566855766646066">Möchten Sie diese neue Karte wirklich verwerfen?</translation> <translation id="5816228676161003208">Per Spracheingabe können Sie noch schneller suchen.</translation> <translation id="581659025233126501">Synchronisierung aktivieren</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok</translation> <translation id="734758817008927353">Optionen zum Speichern von Karten</translation> <translation id="7348502496356775519">Lesezeichen</translation> +<translation id="7352651011704765696">Ein Problem ist aufgetreten.</translation> <translation id="7353432112255316844">Identität bestätigen</translation> <translation id="7383797227493018512">Leseliste</translation> <translation id="7398893703713203428">Link erstellen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb index 1ee8e56..e4160ae 100644 --- a/ios/chrome/app/strings/resources/ios_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Υπηρ.ιστού</translation> <translation id="3178650076442119961">Ενεργή σήμερα</translation> +<translation id="3181825792072797598">Ενεργοποίηση συγχρονισμού</translation> <translation id="3181954750937456830">Ασφαλής περιήγηση (προστατεύει εσάς και τη συσκευή σας από επικίνδυνους ιστοτόπους)</translation> <translation id="3184767182050912705">Ξεκλείδωμα με <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Οι ιστότοποι μπορούν να χρησιμοποιούν cookie για να βελτιώσουν την εμπειρία περιήγησής σας, για παράδειγμα, για να παραμείνετε συνδεδεμένοι ή να διατηρηθούν τα προϊόντα στο καλάθι αγορών σας. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Αυτό σας επιτρέπει να ανακαλύψετε σχετικές ιστοσελίδες βάσει του περιβάλλοντός σας.</translation> <translation id="5758631781033351321">Εδώ θα βρείτε τη λίστα ανάγνωσής σας</translation> <translation id="5782227691023083829">Μετάφραση...</translation> +<translation id="5797070761912323120">Η Google μπορεί να χρησιμοποιήσει το ιστορικό σας για την εξατομίκευση της Αναζήτησης, των διαφημίσεων και άλλων υπηρεσιών Google</translation> <translation id="5803566855766646066">Είστε βέβαιοι ότι θέλετε να απορρίψετε αυτήν τη νέα κάρτα;</translation> <translation id="5816228676161003208">Σας επιτρέπει να πραγματοποιείτε ταχύτερη αναζήτηση με φωνητικές εντολές.</translation> <translation id="581659025233126501">Ενεργοποίηση συγχρονισμού</translation> @@ -625,6 +627,7 @@ <translation id="7346909386216857016">OK, το κατάλαβα</translation> <translation id="734758817008927353">Επιλογές για την Αποθήκευση κάρτας</translation> <translation id="7348502496356775519">Σελιδοδείκτης</translation> +<translation id="7352651011704765696">Παρουσιάστηκε κάποιο πρόβλημα</translation> <translation id="7353432112255316844">Επαλήθευση ταυτότητας</translation> <translation id="7383797227493018512">Λίστα ανάγνωσης</translation> <translation id="7398893703713203428">Δημιουργία συνδέσμου</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb index c5147355..9e39632 100644 --- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -83,6 +83,7 @@ <translation id="1687475363370981210">Mark All Read</translation> <translation id="1689333818294560261">Nickname</translation> <translation id="1690731385917361335">No items</translation> +<translation id="1691390244342876227">Chrome couldn't verify your information</translation> <translation id="1692118695553449118">Sync is on</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> selected</translation> <translation id="1740468249224277719">Double tap to install.</translation> @@ -210,6 +211,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Web Services</translation> <translation id="3178650076442119961">Active today</translation> +<translation id="3181825792072797598">Turn on Sync</translation> <translation id="3181954750937456830">Safe Browsing (protects you and your device from dangerous sites)</translation> <translation id="3184767182050912705">Unlock with <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Sites can use cookies to improve your browsing experience, for example, to keep you signed in or to remember items in your shopping basket. @@ -350,6 +352,8 @@ Your data is encrypted with your sync passphrase. Enter it to start sync.</translation> <translation id="4689564913179979534">Manage Payment Methods...</translation> +<translation id="4704093130121805775">Sync between your devices</translation> +<translation id="470966556546083668">Don't turn on sync</translation> <translation id="473775607612524610">Update</translation> <translation id="4747097190499141774">Passphrase encryption doesn’t include payment methods and addresses from Google Pay. Only someone with your passphrase can read your encrypted data. The passphrase is not sent to or stored by Google. If you forget your passphrase or want to change this setting, you will need to reset sync. <ph name="BEGIN_LINK" />Find out more<ph name="END_LINK" /></translation> <translation id="4751645464639803239">New Incognito tab</translation> @@ -447,6 +451,7 @@ <translation id="5738887413654608789">This lets you discover relevant web pages based on your surroundings.</translation> <translation id="5758631781033351321">You'll find your reading list here</translation> <translation id="5782227691023083829">Translating...</translation> +<translation id="5797070761912323120">Google may use your history to personalise Search, ads and other Google services</translation> <translation id="5803566855766646066">Are you sure that you want to discard this new card?</translation> <translation id="5816228676161003208">This lets you search faster using your voice.</translation> <translation id="581659025233126501">Turn on Sync</translation> @@ -511,6 +516,7 @@ <translation id="6342069812937806050">Just now</translation> <translation id="6344783595350022745">Clear Text</translation> <translation id="6346549652287021269">Start new download?</translation> +<translation id="634878792104344809">Sync your passwords, history and more on all of your devices</translation> <translation id="6362362396625799311">No Incognito Tabs</translation> <translation id="6363526231572697780">No username</translation> <translation id="6374469231428023295">Try Again</translation> @@ -624,6 +630,7 @@ <translation id="7346909386216857016">OK, got it</translation> <translation id="734758817008927353">Options to save card</translation> <translation id="7348502496356775519">Bookmark</translation> +<translation id="7352651011704765696">Something went wrong</translation> <translation id="7353432112255316844">Verify that it's you</translation> <translation id="7383797227493018512">Reading List</translation> <translation id="7398893703713203428">Create link</translation> @@ -752,6 +759,7 @@ <translation id="8680787084697685621">Account sign-in details are out of date.</translation> <translation id="8706588385081740091">Passwords</translation> <translation id="8717864919010420084">Copy link</translation> +<translation id="8721206573513844242">Sorry we couldn't validate your credentials</translation> <translation id="8721297211384281569">Tools Menu</translation> <translation id="8725066075913043281">Try again</translation> <translation id="8730621377337864115">Done</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb index 471f4888..64834d5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Servicios web</translation> <translation id="3178650076442119961">Activo hoy</translation> +<translation id="3181825792072797598">Activar la sincronización</translation> <translation id="3181954750937456830">Navegación segura (te protege a ti y tu dispositivo de sitios peligrosos)</translation> <translation id="3184767182050912705">Desbloquear mediante <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Los sitios pueden usar cookies para mejorar la experiencia de navegación, por ejemplo, para mantener el acceso a ellos o recordar artículos en el carrito de compras. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Esta capacidad te permite descubrir páginas web relevantes en función de tu entorno.</translation> <translation id="5758631781033351321">Aquí encontrarás tu lista de lectura</translation> <translation id="5782227691023083829">Traduciendo...</translation> +<translation id="5797070761912323120">Es posible que Google use tu historial para personalizar la Búsqueda, los anuncios y otros servicios de Google</translation> <translation id="5803566855766646066">¿Confirmas que quieres descartar esta tarjeta nueva?</translation> <translation id="5816228676161003208">Te permite realizar búsquedas más rápidas con tu voz.</translation> <translation id="581659025233126501">Activar la sincronización</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Entendido</translation> <translation id="734758817008927353">Opciones para guardar una tarjeta</translation> <translation id="7348502496356775519">Agregar a favoritos</translation> +<translation id="7352651011704765696">Se produjo un error</translation> <translation id="7353432112255316844">Verificar tu identidad</translation> <translation id="7383797227493018512">Lista de lectura</translation> <translation id="7398893703713203428">Crear vínculo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb index 1c9f9f1c..7a244ea 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Servicios web</translation> <translation id="3178650076442119961">Activo hoy</translation> +<translation id="3181825792072797598">Activar sincronización</translation> <translation id="3181954750937456830">Navegación segura (te protege a ti y a tu dispositivo frente a sitios peligrosos)</translation> <translation id="3184767182050912705">Desbloquear con <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Los sitios pueden usar cookies para mejorar tu experiencia de navegación; por ejemplo, para mantener tu sesión iniciada o recordar los artículos de tu carrito de la compra. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Esto te permite descubrir páginas web relevantes según lo que te rodea.</translation> <translation id="5758631781033351321">Aquí verás tu lista de lectura</translation> <translation id="5782227691023083829">Traduciendo...</translation> +<translation id="5797070761912323120">Es posible que Google utilice tu historial para personalizar la Búsqueda, los anuncios y otros servicios de Google</translation> <translation id="5803566855766646066">¿Seguro que quieres descartar esta nueva tarjeta?</translation> <translation id="5816228676161003208">Esto te permite hacer búsquedas más rápido con tu voz.</translation> <translation id="581659025233126501">Activar sincronización</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Entendido</translation> <translation id="734758817008927353">Opciones para guardar una tarjeta</translation> <translation id="7348502496356775519">Añadir a marcadores</translation> +<translation id="7352651011704765696">Se ha producido un problema</translation> <translation id="7353432112255316844">Verificar mi identidad</translation> <translation id="7383797227493018512">Lista de lectura</translation> <translation id="7398893703713203428">Crear enlace</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb index fd9faa5..4b0f4f2 100644 --- a/ios/chrome/app/strings/resources/ios_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Teenused</translation> <translation id="3178650076442119961">Aktiivne täna</translation> +<translation id="3181825792072797598">Lülita sünkroonimine sisse</translation> <translation id="3181954750937456830">Ohutu sirvimine (kaitseb teid ja teie seadet ohtlike saitide eest)</translation> <translation id="3184767182050912705">Ava meetodiga <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Saidid võivad kasutada küpsisefaile teie sirvimiskogemuse täiustamiseks, näiteks selleks, et hoida teid sisselogituna või jätta meelde teie ostukorvis olevad esemed. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">See võimaldab teil ümbruskonna järgi asjakohaseid veebilehti avastada.</translation> <translation id="5758631781033351321">Oma lugemisloendi leiate siit</translation> <translation id="5782227691023083829">Tõlkimine...</translation> +<translation id="5797070761912323120">Google võib kasutada teie ajalugu otsingu, reklaamide ja muude Google'i teenuste isikupärastamiseks</translation> <translation id="5803566855766646066">Kas soovite kindlasti sellest uuest kaardist loobuda?</translation> <translation id="5816228676161003208">See võimaldab häälkäskluste abil kiiremini otsida.</translation> <translation id="581659025233126501">Lülita sünkroonimine sisse</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Selge, sain aru</translation> <translation id="734758817008927353">Kaardi salvestamise võimalused</translation> <translation id="7348502496356775519">Lisa järjehoidjatesse</translation> +<translation id="7352651011704765696">Midagi läks valesti</translation> <translation id="7353432112255316844">Kinnitage, et see olete teie</translation> <translation id="7383797227493018512">Lugemisloend</translation> <translation id="7398893703713203428">Loo link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb index a6c1cd03..d59446c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Ezagutu</translation> <translation id="3175081911749765310">Web-zerbitzuak</translation> <translation id="3178650076442119961">Aktibo gaur</translation> +<translation id="3181825792072797598">Aktibatu sinkronizazioa</translation> <translation id="3181954750937456830">Arakatze segurua (webgune arriskutsuen aurka babesten zaituzte gailua eta zu)</translation> <translation id="3184767182050912705">Desblokeatu <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> erabilita</translation> <translation id="3196681740617426482">Webguneek cookieak erabil ditzakete arakatze-zerbitzua hobetzeko; adibidez, saioa hasita mantentzeko edo erosketa-saskiko produktuak gogoratzeko. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Honi esker, inguruan duzunaren arabera interesa dakizkizukeen web-orri aipagarriak aurkituko dituzu.</translation> <translation id="5758631781033351321">Irakurketa-zerrenda aurkituko duzu hemen</translation> <translation id="5782227691023083829">Itzultzen…</translation> +<translation id="5797070761912323120">Baliteke Google-k historia erabiltzea Bilaketa, iragarkiak eta Google-ren beste zerbitzu batzuk pertsonalizatzeko</translation> <translation id="5803566855766646066">Ziur txartel berri hau baztertu nahi duzula?</translation> <translation id="5816228676161003208">Honi esker, bizkorrago bilatu ahal izango dituzu gauzak ahotsaren bidez.</translation> <translation id="581659025233126501">Aktibatu sinkronizazioa</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ados, ulertu dut</translation> <translation id="734758817008927353">Txartela gordetzeko aukerak</translation> <translation id="7348502496356775519">Egin laster-marka</translation> +<translation id="7352651011704765696">Arazoren bat izan da</translation> <translation id="7353432112255316844">Egiaztatu zeu zarela</translation> <translation id="7383797227493018512">Irakurketa-zerrenda</translation> <translation id="7398893703713203428">Sortu esteka bat</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb index 31acfa0..f08c9c49 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">کشف کردن</translation> <translation id="3175081911749765310">خدمات وب</translation> <translation id="3178650076442119961">آخرین فعالیت: امروز</translation> +<translation id="3181825792072797598">روشن کردن همگامسازی</translation> <translation id="3181954750937456830">مرور ایمن (از شما و دستگاهتان درمقابل سایتهای خطرناک محافظت میکند)</translation> <translation id="3184767182050912705">باز کردن قفل با <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">سایتها میتوانند از کوکیها برای بهبود تجربه مرورتان استفاده کنند، مثلاً برای اینکه شما را درحالت واردشده به سیستم نگه دارند یا موارد موجود در سبد خریدتان را بهخاطر بسپارند. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">با این کار میتوانید صفحههای وب مرتبط را براساس محیط اطرافتان کاوش کنید.</translation> <translation id="5758631781033351321">فهرست مطالعه را اینجا خواهید دید</translation> <translation id="5782227691023083829">در حال ترجمه...</translation> +<translation id="5797070761912323120">Google ممکن است از سابقه مرور شما برای شخصی کردن جستجو، آگهیها و سایر سرویسهای Google استفاده کند</translation> <translation id="5803566855766646066">مطمئنید میخواهید از این کارت جدید صرفنظر کنید؟</translation> <translation id="5816228676161003208">این کار به شما اجازه میدهد با استفاده از صدایتان سریعتر جستجو کنید.</translation> <translation id="581659025233126501">روشن کردن همگامسازی</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">بله متوجه شدم.</translation> <translation id="734758817008927353">گزینههای ذخیره کارت</translation> <translation id="7348502496356775519">نشانک</translation> +<translation id="7352651011704765696">مشکلی پیش آمد</translation> <translation id="7353432112255316844">تأیید هویت</translation> <translation id="7383797227493018512">فهرست خواندن</translation> <translation id="7398893703713203428">ایجاد پیوند</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb index 4be8da9..ae68e12e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Verkkopalvelut</translation> <translation id="3178650076442119961">Aktiivinen tänään</translation> +<translation id="3181825792072797598">Ota synkronointi käyttöön</translation> <translation id="3181954750937456830">Selaussuoja (suojaa sinua ja laitettasi vaarallisilta sivustoilta)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> avaa lukituksen</translation> <translation id="3196681740617426482">Sivustot voivat käyttää evästeitä selauskokemuksesi parantamiseen, esimerkiksi pitää sinut kirjautuneena tai muistaa ostoskorisi sisällön. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Tämän avulla voit löytää sinua ympäröiviin asioihin liittyviä verkkosivuja.</translation> <translation id="5758631781033351321">Näet lukulistasi täällä</translation> <translation id="5782227691023083829">Käännetään...</translation> +<translation id="5797070761912323120">Google voi muokata Hakua, mainoksia ja muita Googlen palveluita historiasi perusteella</translation> <translation id="5803566855766646066">Haluatko varmasti hylätä tämän uuden kortin?</translation> <translation id="5816228676161003208">Tämän avulla voit hakea tietoja nopeammin puhumalla.</translation> <translation id="581659025233126501">Laita synkronointi päälle</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Selvä</translation> <translation id="734758817008927353">Kortin tallentamisvaihtoehdot</translation> <translation id="7348502496356775519">Lisää kirjanmerkkeihin</translation> +<translation id="7352651011704765696">Tapahtui jokin virhe</translation> <translation id="7353432112255316844">Todenna henkilöllisyytesi</translation> <translation id="7383797227493018512">Lukulista</translation> <translation id="7398893703713203428">Luo linkki</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb index c80a5c3..ac5f18a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Web Services</translation> <translation id="3178650076442119961">Aktibo Ngayong Araw</translation> +<translation id="3181825792072797598">I-on ang I-sync</translation> <translation id="3181954750937456830">Ligtas na Pag-browse (pinoprotektahan ka at ang iyong device mula sa mga mapanganib na site)</translation> <translation id="3184767182050912705">I-unlock Gamit ang <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Puwedeng gumamit ng cookies ang mga site para pahusayin ang iyong karanasan sa pag-browse, halimbawa, para mapanatili kang naka-sign in o para maalala ang mga item sa shopping cart mo. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Nagbibigay-daan ito sa iyo na tumuklas ng mga nauugnay na web page batay sa iyong paligid.</translation> <translation id="5758631781033351321">Makikita mo rito ang iyong listahan ng babasahin</translation> <translation id="5782227691023083829">Tina-translate...</translation> +<translation id="5797070761912323120">Maaaring gamitin ng Google ang iyong history para i-personalize ang Search, mga ad, at iba pang serbisyo ng Google</translation> <translation id="5803566855766646066">Sigurado ka bang gusto mong i-discard ang bagong card na ito?</translation> <translation id="5816228676161003208">Binibigyang-daan ka nito upang mas mabilis na makapaghanap gamit ang iyong boses.</translation> <translation id="581659025233126501">I-on ang Pag-sync</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok, nakuha ko</translation> <translation id="734758817008927353">Mga opsyon para Mag-save ng Card</translation> <translation id="7348502496356775519">Bookmark</translation> +<translation id="7352651011704765696">Nagkaroon ng problema</translation> <translation id="7353432112255316844">I-verify na Ikaw Ito</translation> <translation id="7383797227493018512">Listahan ng Babasahin</translation> <translation id="7398893703713203428">Gumawa ng Link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb index 99e7e5c..42e40d6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Découvrir</translation> <translation id="3175081911749765310">Servic Web</translation> <translation id="3178650076442119961">Actif aujourd'hui</translation> +<translation id="3181825792072797598">Activer la synchronisation</translation> <translation id="3181954750937456830">Navigation sécurisée (vous protège, vous et votre appareil, des sites dangereux)</translation> <translation id="3184767182050912705">Déverrouiller avec <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Les sites peuvent utiliser des témoins afin d'améliorer votre expérience de navigation, par exemple en vous permettant de rester connecté ou en mémorisant des articles de votre panier d'achats. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Cela vous permet de découvrir des pages Web pertinentes en fonction de votre environnement.</translation> <translation id="5758631781033351321">Vous trouverez votre liste de lecture ici</translation> <translation id="5782227691023083829">Traduction en cours…</translation> +<translation id="5797070761912323120">Google peut utiliser votre historique pour personnaliser la recherche, les annonces et d'autres services Google</translation> <translation id="5803566855766646066">Voulez-vous vraiment supprimer cette nouvelle carte?</translation> <translation id="5816228676161003208">Ceci vous permet d'effectuer des recherches plus rapides en utilisant votre voix.</translation> <translation id="581659025233126501">Activer la synchronisation</translation> @@ -623,6 +625,7 @@ <translation id="7346909386216857016">OK, j'ai compris</translation> <translation id="734758817008927353">Options pour enregistrer la carte</translation> <translation id="7348502496356775519">Ajouter aux favoris</translation> +<translation id="7352651011704765696">Une erreur s’est produite</translation> <translation id="7353432112255316844">Confirmer que c'est bien vous</translation> <translation id="7383797227493018512">Liste de lecture</translation> <translation id="7398893703713203428">Créer un lien</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb index 797e48c8..3a8ebcb85 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Services Web</translation> <translation id="3178650076442119961">Actif aujourd'hui</translation> +<translation id="3181825792072797598">Activer la synchronisation</translation> <translation id="3181954750937456830">Navigation sécurisée (assure votre protection et celle de votre appareil contre les sites dangereux)</translation> <translation id="3184767182050912705">Déverrouiller avec <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Les sites peuvent utiliser des cookies pour améliorer votre expérience de navigation (par exemple, pour maintenir votre connexion ou mémoriser les articles de votre panier). @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Vous permet de découvrir les pages Web pertinentes en fonction de votre environnement.</translation> <translation id="5758631781033351321">Votre liste de lecture s'affichera ici</translation> <translation id="5782227691023083829">Traduction en cours...</translation> +<translation id="5797070761912323120">Google peut utiliser votre historique pour personnaliser la recherche, les annonces et d'autres services Google</translation> <translation id="5803566855766646066">Voulez-vous vraiment supprimer cette nouvelle carte ?</translation> <translation id="5816228676161003208">Cela vous permet d'effectuer des recherches plus rapidement en utilisant la recherche vocale.</translation> <translation id="581659025233126501">Activer la synchronisation</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">Options d'enregistrement de la carte</translation> <translation id="7348502496356775519">Ajouter aux favoris</translation> +<translation id="7352651011704765696">Un problème est survenu</translation> <translation id="7353432112255316844">Confirmer votre identité</translation> <translation id="7383797227493018512">Liste de lecture</translation> <translation id="7398893703713203428">Créer un lien</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb index 4f2a506..46a5b191 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Servizos web</translation> <translation id="3178650076442119961">Dispositivo activo hoxe</translation> +<translation id="3181825792072797598">Activar sincronización</translation> <translation id="3181954750937456830">Navegación segura (protección para ti e o teu dispositivo contra os sitios perigosos)</translation> <translation id="3184767182050912705">Desbloquear con <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Os sitios poden utilizar cookies para mellorar a túa experiencia de navegación a través de funcións como manter a sesión iniciada ou lembrar artigos da túa cesta da compra. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Así poderás descubrir páxinas web relevantes en función do que te rodea.</translation> <translation id="5758631781033351321">Aquí atoparás a túa lista de lecturas</translation> <translation id="5782227691023083829">Traducindo…</translation> +<translation id="5797070761912323120">Google pode utilizar o teu historial para personalizar a Busca, os anuncios e outros servizos seus.</translation> <translation id="5803566855766646066">Seguro que queres descartar esta tarxeta nova?</translation> <translation id="5816228676161003208">Permite que busques de forma máis rápida usando a voz.</translation> <translation id="581659025233126501">Activar sincronización</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Entendido</translation> <translation id="734758817008927353">Opcións para gardar unha tarxeta</translation> <translation id="7348502496356775519">Marcador</translation> +<translation id="7352651011704765696">Produciuse un erro</translation> <translation id="7353432112255316844">Verificar a túa identidade</translation> <translation id="7383797227493018512">Lista de lectura</translation> <translation id="7398893703713203428">Crear ligazón</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index 75e30754..74705701 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">વેબ સેવાઓ</translation> <translation id="3178650076442119961">આજે સક્રિય છે</translation> +<translation id="3181825792072797598">સિંક ચાલુ કરો</translation> <translation id="3181954750937456830">Safe Browsing (તમારું અને તમારા ડિવાઇસનું જોખમી સાઇટથી રક્ષણ કરે છે)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> વડે અનલૉક કરો</translation> <translation id="3196681740617426482">સાઇટ તમને વધુ સારો બ્રાઉઝિંગ અનુભવ આપવા, ઉદાહરણ તરીકે, તમને સાઇન ઇન કરીને રાખવા અથવા તમારા શૉપિંગ કાર્ટની આઇટમ યાદ રાખવા માટે, કુકીનો ઉપયોગ કરી શકે છે. @@ -220,6 +221,7 @@ <translation id="3240426699337459095">લિંક કૉપિ કરી</translation> <translation id="3244271242291266297">MM</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> માનું <ph name="INDEX" /></translation> +<translation id="3261971309013797455">તમારી વાંચન સૂચિ ઑફલાઇન ઉપલબ્ધ છે. તમારી વાંચન સૂચિમાં પેજ ઉમેરવા માટે, <ph name="SHARE_OPENING_ICON" /> પર અને પછી <ph name="ADD_TO_READING_LIST_TEXT" /> પર ટૅપ કરો.</translation> <translation id="3268451620468152448">ઓપન ટેબ્સ</translation> <translation id="3272527697863656322">રદ કરો</translation> <translation id="3277021493514034324">સાઇટનું ઍડ્રેસ કૉપિ કર્યું</translation> @@ -446,6 +448,7 @@ <translation id="5738887413654608789">આ તમને તમારી આસપાસના વાતાવરણના આધારે સંગત વેબ પૃષ્ઠોની શોધ કરવા દે છે.</translation> <translation id="5758631781033351321">તમને તમારી વાંચન સૂચિ અહીં મળશે</translation> <translation id="5782227691023083829">ભાષાંતર કરી રહ્યું છે...</translation> +<translation id="5797070761912323120">Google, શોધ, જાહેરાતો અને અન્ય Google સેવાઓને વ્યક્તિગત કરવા માટે તમારા ઇતિહાસનો ઉપયોગ કરી શકે છે</translation> <translation id="5803566855766646066">શું તમે ખરેખર આ નવું કાર્ડ કાઢી નાખવા માગો છો?</translation> <translation id="5816228676161003208">આ તમને તમારા અવાજનો ઉપયોગ કરીને વધુ ઝડપથી શોધવા દે છે.</translation> <translation id="581659025233126501">સિંક કરવાનું ચાલુ કરો</translation> @@ -623,6 +626,7 @@ <translation id="7346909386216857016">બરાબર, સમજાઇ ગયું</translation> <translation id="734758817008927353">કાર્ડ સાચવવા માટેના વિકલ્પો</translation> <translation id="7348502496356775519">બુકમાર્ક કરો</translation> +<translation id="7352651011704765696">કંઈક ખોટું થયું હતું</translation> <translation id="7353432112255316844">આ તમે જ છો તેની ચકાસણી કરો</translation> <translation id="7383797227493018512">વાંચન સૂચિ</translation> <translation id="7398893703713203428">લિંક બનાવો</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index 47d054d..af93ded 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">तलाश करें</translation> <translation id="3175081911749765310">वेब सेवाएं</translation> <translation id="3178650076442119961">आज चालू था</translation> +<translation id="3181825792072797598">सिंक सुविधा चालू करें</translation> <translation id="3181954750937456830">सुरक्षित ब्राउज़िंग (आपकी और आपके डिवाइस की खतरनाक साइट से सुरक्षा करती है)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> से अनलॉक करें</translation> <translation id="3196681740617426482">साइटें आपके ब्राउज़ करने के अनुभव को बेहतर बनाने के लिए कुकी का इस्तेमाल कर सकती हैं. जैसे कि आपको साइन इन बनाए रखने के लिए या आपने शॉपिंग कार्ट में जो आइटम सेव किए हैं उन्हें याद रखने के लिए. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">इससे आप अपने आस-पास की चीज़ों पर आधारित वेब पृष्ठों की खोज कर सकते हैं.</translation> <translation id="5758631781033351321">आपको अपनी, पढ़ने की चीज़ों की सूची यहां मिलेगी</translation> <translation id="5782227691023083829">अनुवाद हो रहा है...</translation> +<translation id="5797070761912323120">खोज, विज्ञापन, और दूसरी Google सेवाओं को मनमुताबिक बनाने के लिए, Google आपके इतिहास का इस्तेमाल कर सकता है</translation> <translation id="5803566855766646066">क्या आप वाकई इस नए कार्ड को खारिज करना चाहते हैं?</translation> <translation id="5816228676161003208">इससे आप अपनी आवाज़ का उपयोग करके तेज़ी से खोज सकते हैं.</translation> <translation id="581659025233126501">सिंक करने की सुविधा चालू करें</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">ठीक है, समझ लिया</translation> <translation id="734758817008927353">कार्ड सेव करने के विकल्प</translation> <translation id="7348502496356775519">बुकमार्क करें</translation> +<translation id="7352651011704765696">कुछ गलत हुआ</translation> <translation id="7353432112255316844">अपनी पहचान की पुष्टि करें</translation> <translation id="7383797227493018512">पढ़ने की चीज़ों की सूची</translation> <translation id="7398893703713203428">लिंक बनाएं</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb index a1074d8..866ca798 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Web-usluge</translation> <translation id="3178650076442119961">Aktivan danas</translation> +<translation id="3181825792072797598">Uključi Sinkronizaciju</translation> <translation id="3181954750937456830">Sigurno pregledavanje (štiti vas i vaš uređaj od opasnih web-lokacija)</translation> <translation id="3184767182050912705">Otključaj pomoću opcije <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Web-lokacije mogu upotrebljavati kolačiće za poboljšanje vašeg doživljaja pregledavanja, primjerice da biste ostali prijavljeni ili da bi stavke u vašoj košarici ostale zapamćene. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">To vam omogućuje da otkrijete relevantne web-stranice na temelju svojeg okruženja.</translation> <translation id="5758631781033351321">Ovdje ćete pronaći svoj popis za čitanje</translation> <translation id="5782227691023083829">Prijevod u tijeku...</translation> +<translation id="5797070761912323120">Google može upotrebljavati vašu povijest za prilagodbu Pretraživanja, oglasa i drugih Googleovih usluga</translation> <translation id="5803566855766646066">Jeste li sigurni da želite odbaciti ovu novu karticu?</translation> <translation id="5816228676161003208">To vam omogućuje brže pretraživanje uz upotrebu glasa.</translation> <translation id="581659025233126501">Uključi sinkronizaciju</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Dobro, shvaćam</translation> <translation id="734758817008927353">Opcije spremanja kartice</translation> <translation id="7348502496356775519">Označi</translation> +<translation id="7352651011704765696">Nešto nije u redu</translation> <translation id="7353432112255316844">Potvrđivanje identiteta</translation> <translation id="7383797227493018512">Popis za čitanje</translation> <translation id="7398893703713203428">Izradi vezu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb index deb3910..e0d71a14 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Webszolgáltató</translation> <translation id="3178650076442119961">Ma volt aktív</translation> +<translation id="3181825792072797598">Szinkronizálás bekapcsolása</translation> <translation id="3181954750937456830">Biztonságos Böngészés (megvédi Önt és eszközét a veszélyes webhelyekkel szemben)</translation> <translation id="3184767182050912705">Feloldás a következővel: <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">A webhelyek használhatnak cookie-kat a böngészés megkönnyítésére; például arra, hogy bejelentkezve tartsák Önt, vagy megjegyezzék a kosarában lévő termékeket. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Lehetővé teszi a felhasználó számára, hogy közvetlen környezete alapján fedezzen fel releváns weboldalakat.</translation> <translation id="5758631781033351321">Itt láthatja majd az olvasólistáját</translation> <translation id="5782227691023083829">A fordítás folyamatban...</translation> +<translation id="5797070761912323120">A Google felhasználhatja az Ön előzményeit a Kereső, a hirdetések és más Google-szolgáltatások személyre szabására</translation> <translation id="5803566855766646066">Biztosan elveti ezt az új kártyát?</translation> <translation id="5816228676161003208">Lehetővé teszi a gyorsabb keresést a hangalapú keresés használatával.</translation> <translation id="581659025233126501">Szinkronizálás bekapcsolása</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Rendben, értem</translation> <translation id="734758817008927353">A kártya mentésével kapcsolatos beállítások</translation> <translation id="7348502496356775519">Felvétel a könyvjelzők közé</translation> +<translation id="7352651011704765696">Valami nem működik</translation> <translation id="7353432112255316844">Igazolja személyazonosságát</translation> <translation id="7383797227493018512">Olvasási lista</translation> <translation id="7398893703713203428">Link létrehozása</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb index 075b776..cdf980b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Համացանցի ծառայություններ</translation> <translation id="3178650076442119961">Այսօր ակտիվ է եղել</translation> +<translation id="3181825792072797598">Միացնել համաժամացումը</translation> <translation id="3181954750937456830">Անվտանգ դիտարկում (պաշտպանում է ձեզ և ձեր սարքը վտանգավոր կայքերից)</translation> <translation id="3184767182050912705">Ապակողպել՝ օգտագործելով <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Կայքերը կարող են օգտագործել քուքիներ՝ ձեր աշխատանքն ավելի հարմարավետ դարձնելու, օրինակ, ձեր մուտքը հաշիվ հիշելու կամ ձեր ընտրած ապրանքները զամբյուղում պահելու համար։ @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Թույլ է տալիս գտնել ձեր տեղադրությանը համապատասխանող վեբ էջեր:</translation> <translation id="5758631781033351321">Ձեր ընթերցանության ցանկը կգտնեք այստեղ</translation> <translation id="5782227691023083829">Թարգմանվում է...</translation> +<translation id="5797070761912323120">Google-ը կարող է ձեր այցելությունների պատմությունն օգտագործել` Որոնումը, գովազդն ու Google-ի մյուս ծառայություններն անհատականացնելու համար</translation> <translation id="5803566855766646066">Հեռացնե՞լ նոր քարտը</translation> <translation id="5816228676161003208">Թույլ է տալիս արագ որոնել ձայնի միջոցով:</translation> <translation id="581659025233126501">Միացնել համաժամացումը</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Եղավ</translation> <translation id="734758817008927353">Քարտը պահելու կարգավորումներ</translation> <translation id="7348502496356775519">Էջանիշ</translation> +<translation id="7352651011704765696">Ինչ-որ սխալ տեղի ունեցավ</translation> <translation id="7353432112255316844">Հաստատեք ձեր ինքնությունը</translation> <translation id="7383797227493018512">Ընթերցանության ցանկ</translation> <translation id="7398893703713203428">Ստեղծել հղում</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb index 3c7f4b1..ea33bd6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Layanan Web</translation> <translation id="3178650076442119961">Aktif Hari Ini</translation> +<translation id="3181825792072797598">Aktifkan Sinkronisasi</translation> <translation id="3181954750937456830">Safe Browsing (melindungi Anda dan perangkat dari situs berbahaya)</translation> <translation id="3184767182050912705">Buka Kunci dengan <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Situs dapat menggunakan cookie untuk menyempurnakan pengalaman penjelajahan Anda, misalnya untuk membuat Anda tetap login atau untuk mengingat item di keranjang belanja Anda. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Hal ini memungkinkan Anda menemukan halaman web yang relevan berdasarkan berbagai hal di sekitar.</translation> <translation id="5758631781033351321">Daftar bacaan Anda akan ditampilkan di sini</translation> <translation id="5782227691023083829">Menerjemahkan...</translation> +<translation id="5797070761912323120">Google dapat menggunakan histori Anda untuk mempersonalisasi Penelusuran, iklan, dan layanan Google lainnya</translation> <translation id="5803566855766646066">Yakin ingin menghapus kartu baru ini?</translation> <translation id="5816228676161003208">Hal ini memungkinkan Anda menelusuri lebih cepat menggunakan suara.</translation> <translation id="581659025233126501">Aktifkan Sinkronisasi</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Oke, mengerti</translation> <translation id="734758817008927353">Opsi untuk Menyimpan Kartu</translation> <translation id="7348502496356775519">Bookmark</translation> +<translation id="7352651011704765696">Ada yang tidak beres</translation> <translation id="7353432112255316844">Verifikasi Diri Anda</translation> <translation id="7383797227493018512">Daftar Bacaan</translation> <translation id="7398893703713203428">Buat Link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb index ce9f569..18a8c64 100644 --- a/ios/chrome/app/strings/resources/ios_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Vefþjónusta</translation> <translation id="3178650076442119961">Virkt í dag</translation> +<translation id="3181825792072797598">Kveikja á samstillingu</translation> <translation id="3181954750937456830">Örugg vefnotkun (verndar þig og tækið þitt fyrir hættulegum vefsvæðum)</translation> <translation id="3184767182050912705">Taka úr lás með „<ph name="BIOMETRIC_AUTHENITCATION_TYPE" />“</translation> <translation id="3196681740617426482">Vefsvæði geta notað fótspor til að bjóða þér upp á betri vefnotkun, til dæmis að vera áfram skráð(ur) inn eða muna hvað þú setur í innkaupakörfuna. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Þetta gerir þér kleift að finna viðeigandi vefsíður út frá nánasta umhverfi þínu.</translation> <translation id="5758631781033351321">Þú finnur leslistann þinn hér</translation> <translation id="5782227691023083829">Þýðir...</translation> +<translation id="5797070761912323120">Google notar hugsanlega ferilinn þinn til að sérsníða leitina, auglýsingar og aðra þjónustu Google</translation> <translation id="5803566855766646066">Ertu viss um að þú viljir fleygja þessu nýja korti?</translation> <translation id="5816228676161003208">Með þessu móti geturðu notað röddina til að leita hraðar.</translation> <translation id="581659025233126501">Kveikja á samstillingu</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ég skil</translation> <translation id="734758817008927353">Valkostir fyrir vistun korts</translation> <translation id="7348502496356775519">Bókamerki</translation> +<translation id="7352651011704765696">Eitthvað fór úrskeiðis</translation> <translation id="7353432112255316844">Staðfestu hver þú ert</translation> <translation id="7383797227493018512">Leslisti</translation> <translation id="7398893703713203428">Búa til tengil</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb index ad0e126..c6f936a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Servizi web</translation> <translation id="3178650076442119961">Attivo oggi</translation> +<translation id="3181825792072797598">Attiva la funzione Sincronizzazione</translation> <translation id="3181954750937456830">Navigazione sicura (protegge te e il tuo dispositivo da siti pericolosi)</translation> <translation id="3184767182050912705">Sblocca con <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">I siti possono utilizzare i cookie per migliorare la tua esperienza di navigazione, ad esempio per mantenere l'accesso o memorizzare gli articoli aggiunti al carrello. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Puoi trovare pagine web pertinenti basate sui dintorni.</translation> <translation id="5758631781033351321">Qui troverai il tuo elenco di lettura</translation> <translation id="5782227691023083829">Traduzione in corso...</translation> +<translation id="5797070761912323120">Google può utilizzare la tua cronologia per personalizzare la Ricerca, gli annunci e altri servizi Google</translation> <translation id="5803566855766646066">Vuoi eliminare questa nuova carta?</translation> <translation id="5816228676161003208">In questo modo puoi eseguire ricerche più veloci con la voce.</translation> <translation id="581659025233126501">Attiva la sincronizzazione</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">Opzioni per salvare la carta</translation> <translation id="7348502496356775519">Aggiungi ai preferiti</translation> +<translation id="7352651011704765696">Si è verificato un problema</translation> <translation id="7353432112255316844">Verifica la tua identità</translation> <translation id="7383797227493018512">Elenco di lettura</translation> <translation id="7398893703713203428">Crea link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb index a21c3f4..30be579 100644 --- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">שירותי אינטרנט</translation> <translation id="3178650076442119961">פעילות אחרונה: היום</translation> +<translation id="3181825792072797598">הפעלת סנכרון</translation> <translation id="3181954750937456830">גלישה בטוחה (מגנה עליך ועל המכשיר מפני אתרים מסוכנים)</translation> <translation id="3184767182050912705">ביטול נעילה עם <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">אתרים יכולים להשתמש בקובצי cookie כדי לשפר את חוויית הגלישה – למשל כדי למנוע את ניתוקך מהחשבון או כדי לזכור את הפריטים שהוספת לעגלת הקניות. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">תקשורת Bluetooth מאפשרת לך למצוא אתרי אינטרנט רלוונטיים לפי המיקום שלך.</translation> <translation id="5758631781033351321">רשימת הקריאה זמינה כאן</translation> <translation id="5782227691023083829">מתבצע תרגום...</translation> +<translation id="5797070761912323120">Google עשויה להשתמש בהיסטוריית הגלישה שלך לצורך התאמה אישית של החיפוש, מודעות ושירותי Google אחרים</translation> <translation id="5803566855766646066">הכרטיס החדש יימחק. להמשיך?</translation> <translation id="5816228676161003208">אישור זה מאפשר לך לחפש מהר יותר בעזרת דיבור.</translation> <translation id="581659025233126501">הפעלת הסנכרון</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">בסדר, הבנתי</translation> <translation id="734758817008927353">אפשרויות לשמירת כרטיס</translation> <translation id="7348502496356775519">הוספה לסימניות</translation> +<translation id="7352651011704765696">משהו השתבש</translation> <translation id="7353432112255316844">אימות הזהות שלך</translation> <translation id="7383797227493018512">רשימת קריאה</translation> <translation id="7398893703713203428">יצירת קישור</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb index 6aaadd63..c18d77c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">ウェブサービス</translation> <translation id="3178650076442119961">最終同期: 今日</translation> +<translation id="3181825792072797598">同期を有効にする</translation> <translation id="3181954750937456830">セーフ ブラウジング(危険なサイトからユーザーとデバイスを保護します)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> でロックを解除</translation> <translation id="3196681740617426482">サイトは、Cookie を使用してブラウジングの利便性を改善することができます。たとえばログイン状態の維持や、ショッピング カートの中身の保存が可能になります。 @@ -447,6 +448,7 @@ <translation id="5738887413654608789">この機能を使用すると、周囲で発信されているデータを受信して関連のあるウェブページを表示することができます。</translation> <translation id="5758631781033351321">リーディング リストはここに表示されます</translation> <translation id="5782227691023083829">翻訳しています...</translation> +<translation id="5797070761912323120">検索、広告、その他の Google サービスをカスタマイズするために、Google で履歴が使用されることがあります</translation> <translation id="5803566855766646066">この新しいカードを破棄してもよろしいですか?</translation> <translation id="5816228676161003208">音声を使ってより速く検索できます。</translation> <translation id="581659025233126501">同期をオンにする</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">カードの保存オプション</translation> <translation id="7348502496356775519">ブックマーク</translation> +<translation id="7352651011704765696">問題が発生しました</translation> <translation id="7353432112255316844">本人確認</translation> <translation id="7383797227493018512">リーディング リスト</translation> <translation id="7398893703713203428">リンクを作成</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb index 0268cd5..352370e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">ვებ-სერვისები</translation> <translation id="3178650076442119961">აქტიური იყო დღეს</translation> +<translation id="3181825792072797598">სინქრონიზაციის ჩართვა</translation> <translation id="3181954750937456830">Safe Browsing (თქვენ და თქვენს მოწყობილობებს გიცავთ სახიფათო საიტებისგან)</translation> <translation id="3184767182050912705">განსაბლოკად გამოყენებული იყოს <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">საიტებს შეუძლია ქუქი-ჩანაწერების გამოყენება ვების დათვალიერების პროცესის გასაუმჯობესებლად, მაგალითად, სისტემაში შესული მდგომარეობის შესანარჩუნებლად ან საყიდლების კალათაში დამატებული ერთეულების დასამახსოვრებლად. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">საშუალებას გაძლევთ, აღმოაჩინოთ თქვენს გარშემო არსებულ ობიექტებთან დაკავშირებული ვებგვერდები.</translation> <translation id="5758631781033351321">აქ თქვენს საკითხავ სიას იპოვით</translation> <translation id="5782227691023083829">მიმდინარეობს თარგმნა...</translation> +<translation id="5797070761912323120">Google-მა შეიძლება გამოიყენოს თქვენი ისტორია Search-ის, რეკლამისა და Google-ის სხვა სერვისების თქვენზე მოსარგებად</translation> <translation id="5803566855766646066">ნამდვილად გსურთ ამ ახალი ბარათის გაუქმება?</translation> <translation id="5816228676161003208">საშუალებას გაძლევთ, უფრო სწრაფად განახორციელოთ ძიება ხმის მეშვეობით.</translation> <translation id="581659025233126501">სინქრონიზაციის ჩართვა</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">კარგი, გასაგებია</translation> <translation id="734758817008927353">ბარათის შენახვის ვარიანტები</translation> <translation id="7348502496356775519">სანიშნე</translation> +<translation id="7352651011704765696">რაღაც არასწორად წარიმართა</translation> <translation id="7353432112255316844">დაადასტურეთ, რომ ეს თქვენ ხართ</translation> <translation id="7383797227493018512">საკითხავი სია</translation> <translation id="7398893703713203428">ბმულის შექმნა</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb index 49b4c23..03a17d6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Веб қызметтер</translation> <translation id="3178650076442119961">Бүгін белсенді болды</translation> +<translation id="3181825792072797598">"Синхрондау" функциясын қосу</translation> <translation id="3181954750937456830">Safe Browsing қызметі (сізді және құрылғыңызды қауіпті сайттардан қорғайды)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> арқылы құлыпты ашу</translation> <translation id="3196681740617426482">Сайттар шолуды жақсарту (мысалы, есептік жазбадан шығармау не сатып алу себетіңіздегі нәрселерді есте сақтау) үшін cookie файлдарын пайдалана алады. @@ -220,7 +221,7 @@ <translation id="3240426699337459095">Сілтеме көшірілді</translation> <translation id="3244271242291266297">АА</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> ішінен <ph name="INDEX" /></translation> -<translation id="3261971309013797455">Оқу тізіміңіз офлайн режимде қолжетімді. Оқу тізіміне бет енгізу үшін <ph name="SHARE_OPENING_ICON" /> белгішесін, одан кейін <ph name="ADD_TO_READING_LIST_TEXT" /> мәтінін түртіңіз.</translation> +<translation id="3261971309013797455">Оқу тізіміңіз офлайн режимде қолжетімді. Оқу тізіміне бет енгізу үшін <ph name="SHARE_OPENING_ICON" /> белгішесін түртіп, "<ph name="ADD_TO_READING_LIST_TEXT" />" опциясын таңдаңыз.</translation> <translation id="3268451620468152448">Ашық қойындылар</translation> <translation id="3272527697863656322">Жабу</translation> <translation id="3277021493514034324">Сайт мекенжайы көшірілді</translation> @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Бұл – айналаңыздың негізінде сәйкес веббеттерді анықтауға мүмкіндік береді.</translation> <translation id="5758631781033351321">Оқу тізімі осы жерге шығады</translation> <translation id="5782227691023083829">Аударылуда...</translation> +<translation id="5797070761912323120">Search, жарнамалар және басқа да Google қызметтерін жеке қажеттеліктерге бейімдеу үшін Google интернеттегі әрекеттеріңізді пайдалануы мүмкін.</translation> <translation id="5803566855766646066">Осы жаңа картаны шынымен де жабу керек пе?</translation> <translation id="5816228676161003208">Дауыспен жылдамырақ іздеуге мүмкіндік береді.</translation> <translation id="581659025233126501">Синхрондауды қосу</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Жарайды, түсінікті</translation> <translation id="734758817008927353">Картаны сақтау опциялары</translation> <translation id="7348502496356775519">Бетбелгі</translation> +<translation id="7352651011704765696">Бірнәрсе дұрыс емес</translation> <translation id="7353432112255316844">Жеке басыңызды растаңыз</translation> <translation id="7383797227493018512">Оқу тізімі</translation> <translation id="7398893703713203428">Сілтеме жасау</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb index 6dde1e1..1ed82ba 100644 --- a/ios/chrome/app/strings/resources/ios_strings_km.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -83,6 +83,7 @@ <translation id="1687475363370981210">សម្គាល់ថាបានអានទាំងអស់</translation> <translation id="1689333818294560261">ឈ្មោះហៅក្រៅ</translation> <translation id="1690731385917361335">គ្មានធាតុ</translation> +<translation id="1691390244342876227">Chrome មិនអាចផ្ទៀងផ្ទាត់ព័ត៌មានរបស់អ្នកបានទេ</translation> <translation id="1692118695553449118">សមកម្មបានបើក</translation> <translation id="1700629756560807968">បានជ្រើសរើស <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> <translation id="1740468249224277719">ប៉ះពីរដងដើម្បីដំឡើង</translation> @@ -210,6 +211,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">សេវាកម្មបណ្តាញ</translation> <translation id="3178650076442119961">ដំណើរការថ្ងៃនេះ</translation> +<translation id="3181825792072797598">បើកសមកាលកម្ម</translation> <translation id="3181954750937456830">មុខងាររុករកដោយសុវត្ថិភាព (ការពារអ្នក និងឧបករណ៍របស់អ្នកពីគេហទំព័រគ្រោះថ្នាក់)</translation> <translation id="3184767182050912705">ដោះសោដោយប្រើ <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">គេហទំព័រអាចប្រើខូគី ដើម្បីកែលម្អបទពិសោធន៍រុករករបស់អ្នក ឧទាហរណ៍ ដើម្បីឱ្យអ្នកបន្តចូលគណនី ឬចងចាំទំនិញនៅក្នុងរទេះទិញទំនិញរបស់អ្នក។ @@ -350,6 +352,8 @@ ទិន្នន័យរបស់អ្នកត្រូវបានអ៊ិនគ្រីបដោយប្រើឃ្លាសម្ងាត់សមកាលកម្មរបស់អ្នក។ សូមបញ្ចូលវាដើម្បីចាប់ផ្តើមធ្វើសមកាលកម្ម។</translation> <translation id="4689564913179979534">គ្រប់គ្រងវិធីបង់ប្រាក់...</translation> +<translation id="4704093130121805775">ធ្វើសមកាលកម្មរវាងឧបករណ៍របស់អ្នក</translation> +<translation id="470966556546083668">កុំបើកសមកាលកម្ម</translation> <translation id="473775607612524610">ធ្វើបច្ចុប្បន្នភាព</translation> <translation id="4747097190499141774">ការអ៊ីនគ្រីបឃ្លាសម្ងាត់មិនរួមបញ្ចូលអាសយដ្ឋាន និងវិធីបង់ប្រាក់ពី Google Pay ទេ។ មានតែអ្នកដែលមានឃ្លាសម្ងាត់របស់អ្នកប៉ុណ្ណោះ ទើបអាចអានទិន្នន័យដែលបានអ៊ីនគ្រីបរបស់អ្នក។ ឃ្លាសម្ងាត់នេះមិនត្រូវបានផ្ញើ ឬផ្ទុកដោយ Google ទេ។ ប្រសិនបើអ្នកភ្លេចឃ្លាសម្ងាត់របស់អ្នក ឬចង់ផ្លាស់ប្ដូរការកំណត់នេះ អ្នកនឹងត្រូវកំណត់សមកាលកម្មឡើងវិញ។ <ph name="BEGIN_LINK" />ស្វែងយល់បន្ថែម<ph name="END_LINK" /></translation> <translation id="4751645464639803239">ផ្ទាំងឯកជនថ្មី</translation> @@ -447,6 +451,7 @@ <translation id="5738887413654608789">វាអនុញ្ញាតឲ្យអ្នករកមើលគេហទំព័រដែលពាក់ព័ន្ធដោយផ្អែកលើរបស់ជុំវិញខ្លួនអ្នក។</translation> <translation id="5758631781033351321">អ្នកនឹងឃើញបញ្ជីអានរបស់អ្នកនៅទីនេះ</translation> <translation id="5782227691023083829">កំពុងបកប្រែ...</translation> +<translation id="5797070761912323120">Google អាចនឹងប្រើប្រវត្តិរបស់អ្នក ដើម្បីធ្វើឱ្យការស្វែងរក ការផ្សាយពាណិជ្ជកម្ម និងសេវាកម្ម Google ផ្សេងទៀតស្របនឹងអ្នក</translation> <translation id="5803566855766646066">តើអ្នកពិតជាចង់លុបកាតថ្មីនេះមែនឬ?</translation> <translation id="5816228676161003208">វាអនុញ្ញាតឲ្យអ្នកធ្វើការស្វែងរកលឿនជាងមុនដោយប្រើសំឡេងរបស់អ្នក។</translation> <translation id="581659025233126501">បើកសមកាលកម្ម</translation> @@ -511,6 +516,7 @@ <translation id="6342069812937806050">អំបាញ់មិញនេះ</translation> <translation id="6344783595350022745">ជម្រះអត្ថបទ</translation> <translation id="6346549652287021269">ចាប់ផ្ដើមការទាញយកថ្មី?</translation> +<translation id="634878792104344809">ធ្វើសមកាលកម្មពាក្យសម្ងាត់ ប្រវត្តិរបស់អ្នក និងអ្វីៗជាច្រើនទៀតនៅលើឧបករណ៍ទាំងអស់របស់អ្នក</translation> <translation id="6362362396625799311">គ្មានផ្ទាំងអនាមិកទេ</translation> <translation id="6363526231572697780">គ្មានឈ្មោះអ្នកប្រើប្រាស់ទេ</translation> <translation id="6374469231428023295">ព្យាយាមម្តងទៀត</translation> @@ -624,6 +630,7 @@ <translation id="7346909386216857016">យល់ព្រម ខ្ញុំយល់ហើយ</translation> <translation id="734758817008927353">ជម្រើសសម្រាប់រក្សាទុកកាត</translation> <translation id="7348502496356775519">ចំណាំ</translation> +<translation id="7352651011704765696">មានបញ្ហាអ្វីមួយកើតឡើង</translation> <translation id="7353432112255316844">ផ្ទៀងផ្ទាត់ថាជាអ្នក</translation> <translation id="7383797227493018512">បញ្ជីអាន</translation> <translation id="7398893703713203428">បង្កើតតំណ</translation> @@ -752,6 +759,7 @@ <translation id="8680787084697685621">ព័ត៌មានលំអិតក្នុងគណនីចូលហួសសម័យ។</translation> <translation id="8706588385081740091">ពាក្យសម្ងាត់</translation> <translation id="8717864919010420084">ចម្លងតំណ</translation> +<translation id="8721206573513844242">សូមអភ័យទោស យើងមិនអាចបញ្ជាក់ភាពត្រឹមត្រូវនៃព័ត៌មានផ្ទៀងផ្ទាត់របស់អ្នកបានទេ</translation> <translation id="8721297211384281569">ម៉ឺនុយឧបករណ៍</translation> <translation id="8725066075913043281">ព្យាយាមម្តងទៀត</translation> <translation id="8730621377337864115">រួចរាល់</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb index dea6639..dd512067 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">ವೆಬ್ ಸೇವೆಗಳು</translation> <translation id="3178650076442119961">ಇಂದು ಸಕ್ರಿಯ</translation> +<translation id="3181825792072797598">ಸಿಂಕ್ ಆನ್ ಮಾಡಿ</translation> <translation id="3181954750937456830">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ (ಅಪಾಯಕಾರಿ ಸೈಟ್ಗಳಿಂದ ನಿಮ್ಮನ್ನು ಮತ್ತು ನಿಮ್ಮ ಸಾಧನವನ್ನು ರಕ್ಷಿಸುತ್ತದೆ)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ಬಳಸಿಕೊಂಡು ಅನ್ಲಾಕ್ ಮಾಡಿ</translation> <translation id="3196681740617426482">ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಅನುಭವವನ್ನು ಸುಧಾರಿಸಲು, ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮನ್ನು ಸೈನ್ ಇನ್ ಆಗಿರಿಸಲು ಅಥವಾ ನಿಮ್ಮ ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ನಲ್ಲಿರುವ ಐಟಂಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಸೈಟ್ಗಳು ಕುಕೀಗಳನ್ನು ಬಳಸಬಹುದು. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">ನಿಮ್ಮ ಸುತ್ತಲಿನಲ್ಲಿರುವುದನ್ನು ಆಧರಿಸಿ, ಸಂಬಂಧಿಸಿದ ವೆಬ್ ಪುಟಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಇದು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.</translation> <translation id="5758631781033351321">ನಿಮ್ಮ ಓದುವ ಪಟ್ಟಿಯನ್ನು ಇಲ್ಲಿ ಕಾಣಬಹುದು</translation> <translation id="5782227691023083829">ಅನುವಾದ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation> +<translation id="5797070761912323120">ಹುಡುಕಾಟ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಇತರ Google ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ನಿಮ್ಮ ಇತಿಹಾಸವನ್ನು Google ಬಳಸಬಹುದು</translation> <translation id="5803566855766646066">ಈ ಹೊಸ ಕಾರ್ಡ್ ಅನ್ನು ತ್ಯಜಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?</translation> <translation id="5816228676161003208">ಇದು ನಿಮ್ಮ ಧ್ವನಿ ಬಳಸಿಕೊಂಡು ವೇಗವಾಗಿ ಹುಡುಕಲು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.</translation> <translation id="581659025233126501">ಸಿಂಕ್ ಆನ್ ಮಾಡಿ</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">ಸರಿ, ಅರ್ಥವಾಯಿತು</translation> <translation id="734758817008927353">ಕಾರ್ಡ್ ಅನ್ನು ಉಳಿಸಲು ಆಯ್ಕೆಗಳು</translation> <translation id="7348502496356775519">ಬುಕ್ಮಾರ್ಕ್ ಮಾಡಿ</translation> +<translation id="7352651011704765696">ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ</translation> <translation id="7353432112255316844">ಇದು ನೀವೇ ಎಂಬುದನ್ನು ದೃಢೀಕರಿಸಿ</translation> <translation id="7383797227493018512">ಓದುವ ಪಟ್ಟಿ</translation> <translation id="7398893703713203428">ಲಿಂಕ್ ರಚಿಸಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb index a690217..8491ead 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">웹 서비스</translation> <translation id="3178650076442119961">오늘 사용됨</translation> +<translation id="3181825792072797598">동기화 사용 설정</translation> <translation id="3181954750937456830">세이프 브라우징(사용자와 사용자의 기기를 위험한 사이트로부터 보호)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> 인증으로 잠금 해제</translation> <translation id="3196681740617426482">사이트에서 사용자의 로그인 상태를 유지하거나 장바구니에 담긴 상품을 기억하는 등 탐색 환경을 개선하는 데 쿠키를 사용할 수 있습니다. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">이를 통해 사용자의 주변 환경을 토대로 관련 웹 페이지를 발견할 수 있습니다.</translation> <translation id="5758631781033351321">여기에서 읽기 목록을 확인할 수 있습니다</translation> <translation id="5782227691023083829">번역 중...</translation> +<translation id="5797070761912323120">Google에서 내 방문 기록을 사용하여 Google 검색, 광고 및 다른 Google 서비스를 맞춤설정할 수 있습니다.</translation> <translation id="5803566855766646066">새 카드를 삭제하시겠습니까?</translation> <translation id="5816228676161003208">액세스를 허용하면 음성으로 더 빨리 검색할 수 있습니다.</translation> <translation id="581659025233126501">동기화 사용 설정</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">확인</translation> <translation id="734758817008927353">카드 저장 옵션</translation> <translation id="7348502496356775519">북마크</translation> +<translation id="7352651011704765696">문제가 발생한 경우</translation> <translation id="7353432112255316844">본인 인증</translation> <translation id="7383797227493018512">읽기 목록</translation> <translation id="7398893703713203428">링크 만들기</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb index 5966a71..04c903c9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Аныктоо</translation> <translation id="3175081911749765310">Желе кызмт</translation> <translation id="3178650076442119961">Акыркы аракеттер: бүгүн</translation> +<translation id="3181825792072797598">Шайкештирүүнү күйгүзүү</translation> <translation id="3181954750937456830">Коопсуз серептөө (сизди жана түзмөгүңүздү кооптуу сайттардан коргойт)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> менен кулпуну ачуу</translation> <translation id="3196681740617426482">Серептөөнү ыңгайлаштыруу, мисалы, аккаунттан чыгарбоо же арабадагы сатып алган нерселериңизди эстеп калуу үчүн сайттар cookie файлдарын колдоно алышат. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Бул айланаңыздагы колдонмолордун негизинде ылайыктуу веб беттерди таап берет.</translation> <translation id="5758631781033351321">Окула тургандардын тизмесин ушул жерден табасыз</translation> <translation id="5782227691023083829">Которулууда...</translation> +<translation id="5797070761912323120">Издөө, жарнама жана башка Google кызматтарын жекечелештирүү үчүн, Google таржымалыңызды колдонушу мүмкүн</translation> <translation id="5803566855766646066">Бул жаңы картаны чын эле өчүрөсүзбү?</translation> <translation id="5816228676161003208">Бул үнүңүз менен издөөнү тездетүүгө жол ачат.</translation> <translation id="581659025233126501">Шайкештирүүнү күйгүзүү</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Жарайт, түшүндүм</translation> <translation id="734758817008927353">Картаны сактоо параметрлери</translation> <translation id="7348502496356775519">Кыстарма</translation> +<translation id="7352651011704765696">Бир жерден ката кетти</translation> <translation id="7353432112255316844">Өзүңүз экениңизди ырастаңыз</translation> <translation id="7383797227493018512">Окуу тизмеси</translation> <translation id="7398893703713203428">Шилтеме түзүү</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb index b403998..b1a4597d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">ຄົ້ນຫາ</translation> <translation id="3175081911749765310">ການບໍລິການເວັບ</translation> <translation id="3178650076442119961">ນຳໃຊ້ມື້ນີ້</translation> +<translation id="3181825792072797598">ເປີດ Sync</translation> <translation id="3181954750937456830">Safe Browsing (ປົກປ້ອງທ່ານ ແລະ ອຸປະກອນຂອງທ່ານຈາກເວັບໄຊອັນຕະລາຍ)</translation> <translation id="3184767182050912705">ປົດລັອກດ້ວຍ <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">ເວັບໄຊສາມາດໃຊ້ຄຸກກີ້ເພື່ອປັບປຸງປະສົບການທ່ອງເວັບຂອງທ່ານ, ຕົວຢ່າງ: ເພື່ອໃຫ້ທ່ານສືບຕໍ່ຢູ່ໃນລະບົບ ຫຼື ຈື່ລາຍການຕ່າງໆໃນກະຕ່າຊື້ເຄື່ອງຂອງທ່ານ. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">ນີ້ໃຫ້ທ່ານຄົ້ນພົບໜ້າເວັບທີ່ກ່ຽວຂ້ອງອີງຕາມສິ່ງທີ່ຢູ່ອ້ອມຮອບຕົວທ່ານ.</translation> <translation id="5758631781033351321">ທ່ານຈະເຫັນລາຍການອື່ນຂອງທ່ານຢູ່ບ່ອນນີ້</translation> <translation id="5782227691023083829">ກໍາລັງແປ...</translation> +<translation id="5797070761912323120">Google ອາດຈະໃຊ້ປະຫວັດຂອງທ່ານເພື່ອປັບແຕ່ງຊອກຫາ, ໂຄສະນາ ແລະ ການບໍລິການອື່ນຂອງ Google</translation> <translation id="5803566855766646066">ທ່ານແນ່ໃຈບໍ່ວ່າທ່ານຕ້ອງການປະຖິ້ມບັດໃໝ່ນີ້?</translation> <translation id="5816228676161003208">ນີ້ອະນຸຍາດໃຫ້ທ່ານຊອກຫາໄດ້ໄວຂຶ້ນໂດຍໃຊ້ສຽງຂອງທ່ານ.</translation> <translation id="581659025233126501">ເປີດໃຊ້ການຊິ້ງຂໍ້ມູນ</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">ຕົກລົງ, ເຂົ້າໃຈແລ້ວ</translation> <translation id="734758817008927353">ຕົວເລືອກໃນການບັນທຶກບັດ</translation> <translation id="7348502496356775519">ບຸກມາກ</translation> +<translation id="7352651011704765696">ມີບາງອັນຜິດພາດ</translation> <translation id="7353432112255316844">ຢັ້ງຢືນວ່າແມ່ນທ່ານແທ້</translation> <translation id="7383797227493018512">ລາຍການທີ່ຈະອ່ານ</translation> <translation id="7398893703713203428">ສ້າງລິ້ງ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb index 6a87393..34f18d80 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Žin. pasl.</translation> <translation id="3178650076442119961">Aktyvus šiandien</translation> +<translation id="3181825792072797598">Įjungti sinchronizavimą</translation> <translation id="3181954750937456830">Saugus naršymas (apsaugo jus ir jūsų įrenginį nuo pavojingų svetainių)</translation> <translation id="3184767182050912705">Atrakinti naudojant <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Svetainės gali naudoti slapukus, kad pagerintų naršymo kokybę, pvz., kad liktumėte prisijungę ar būtų įsimintos pirkinių krepšelyje esančios prekės. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Tai naudodami galite atrasti aktualių tinklalapių, kurie teikiami atsižvelgiant į aplinką.</translation> <translation id="5758631781033351321">Čia rasite skaitymo sąrašą</translation> <translation id="5782227691023083829">Verčiama...</translation> +<translation id="5797070761912323120">„Google“ gali naudoti jūsų istoriją, kad suasmenintų Paiešką, skelbimus ir kitas „Google“ paslaugas</translation> <translation id="5803566855766646066">Ar tikrai norite atmesti šią naują kortelę?</translation> <translation id="5816228676161003208">Galite ieškoti greičiau balsu.</translation> <translation id="581659025233126501">Įjungti sinchronizavimą</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Gerai, supratau</translation> <translation id="734758817008927353">Kortelės išsaugojimo parinktys</translation> <translation id="7348502496356775519">Žymėti</translation> +<translation id="7352651011704765696">Kažkas negerai</translation> <translation id="7353432112255316844">Tapatybės patvirtinimas</translation> <translation id="7383797227493018512">Skaitymo sąrašas</translation> <translation id="7398893703713203428">Kurti nuorodą</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb index 01182fcb..1f794f9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Tīm. pak.</translation> <translation id="3178650076442119961">Aktīva šodien</translation> +<translation id="3181825792072797598">Ieslēgt sinhronizāciju</translation> <translation id="3181954750937456830">Droša pārlūkošana (aizsargā jūs un ierīci pret bīstamām vietnēm)</translation> <translation id="3184767182050912705">Atbloķēt, izmantojot šo autentifikācijas veidu: <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Vietnes drīkst izmantot sīkfailus, lai uzlabotu pārlūkošanas pieredzi, piemēram, lai nodrošinātu ilgstošu pierakstīšanos vai saglabātu pirkumu grozā ievietotās preces. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Tādējādi varat atklāt atbilstošas tīmekļa lapas, pamatojoties uz datiem par jūsu apkārtni.</translation> <translation id="5758631781033351321">Šeit varēsiet skatīt savu lasīšanas sarakstu</translation> <translation id="5782227691023083829">Notiek tulkošana...</translation> +<translation id="5797070761912323120">Google var izmantot jūsu vēsturi, lai personalizētu Meklēšanu, reklāmas un citus Google pakalpojumus.</translation> <translation id="5803566855766646066">Vai tiešām vēlaties atmest jauno kartīti?</translation> <translation id="5816228676161003208">Varat meklēt ātrāk, izmantojot balsi.</translation> <translation id="581659025233126501">Ieslēgt sinhronizāciju</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Labi, sapratu</translation> <translation id="734758817008927353">Kartītes saglabāšanas opcijas</translation> <translation id="7348502496356775519">Grāmatzīme</translation> +<translation id="7352651011704765696">Radās problēma</translation> <translation id="7353432112255316844">Apstiprināt identitāti</translation> <translation id="7383797227493018512">Lasīšanas saraksts</translation> <translation id="7398893703713203428">Izveidot saiti</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb index c24f0bdd..98a9b30 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Откриј</translation> <translation id="3175081911749765310">Веб-услуги</translation> <translation id="3178650076442119961">Активен денес</translation> +<translation id="3181825792072797598">Вклучи синхронизација</translation> <translation id="3181954750937456830">Безбедно прелистување (ве заштитува вас и вашиот уред од опасни сајтови)</translation> <translation id="3184767182050912705">Отклучете со <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Сајтовите може да користат колачиња за да го подобрат вашето доживување со прелистувањето, на пример, да останете најавени или да запомнат ставки во кошничката за купување. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Ова ви овозможува да откриете релевантни веб-страници врз основа на вашата околина.</translation> <translation id="5758631781033351321">Списокот за читање ќе го најдете тука</translation> <translation id="5782227691023083829">Се преведува…</translation> +<translation id="5797070761912323120">Google може да ја користи вашата историја за да го персонализира „Пребарувањето“, рекламите и другите услуги на Google</translation> <translation id="5803566855766646066">Дали сигурно сакате да ја отфрлите новава картичка?</translation> <translation id="5816228676161003208">Ова ви овозможува да пребарувате побрзо со глас.</translation> <translation id="581659025233126501">Вклучи синхронизација</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Добро, сфатив</translation> <translation id="734758817008927353">Опции за „Зачувај ја картичката“</translation> <translation id="7348502496356775519">Обележи</translation> +<translation id="7352651011704765696">Нешто не е во ред</translation> <translation id="7353432112255316844">Потврдете дека сте вие</translation> <translation id="7383797227493018512">Список за читање</translation> <translation id="7398893703713203428">Создај линк</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb index 5458abe8..e5e1bd7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">വെബ് സേവനങ്ങൾ</translation> <translation id="3178650076442119961">ഇന്ന് സജീവമായിരുന്നു</translation> +<translation id="3181825792072797598">സമന്വയിപ്പിക്കൽ ഓണാക്കുക</translation> <translation id="3181954750937456830">സുരക്ഷിത ബ്രൗസിംഗ് (അപകടകരമായ സൈറ്റുകളിൽ നിന്ന് നിങ്ങളെയും ഉപകരണത്തെയും പരിരക്ഷിക്കുന്നു)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ഉപയോഗിച്ച് അൺലോക്ക് ചെയ്യുക</translation> <translation id="3196681740617426482">നിങ്ങളുടെ ബ്രൗസിംഗ് അനുഭവം മെച്ചപ്പെടുത്താൻ സൈറ്റുകൾക്ക് കുക്കികൾ ഉപയോഗിക്കാവുന്നതാണ്, ഉദാഹരണത്തിന്, സൈൻ ഇൻ ചെയ്ത നിലയിൽ തുടരാനോ ഷോപ്പിംഗ് കാർട്ടിലെ ഇനങ്ങൾ ഓർമ്മിക്കാനോ. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">നിങ്ങളുടെ ചുറ്റുമുള്ള കാര്യങ്ങളെ അടിസ്ഥാനമാക്കി ആനുകാലികമായ വെബ് പേജുകൾ കണ്ടെത്താൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.</translation> <translation id="5758631781033351321">നിങ്ങളുടെ വായനാ ലിസ്റ്റ് ഇവിടെ കാണാം</translation> <translation id="5782227691023083829">വിവര്ത്തനം ചെയ്യുന്നു...</translation> +<translation id="5797070761912323120">തിരയലും പരസ്യവും മറ്റ് Google സേവനങ്ങളും വ്യക്തിപരമാക്കാൻ Google നിങ്ങളുടെ ചരിത്രം ഉപയോഗിച്ചേക്കാം</translation> <translation id="5803566855766646066">ഈ പുതിയ കാർഡ് റദ്ദാക്കണമെന്ന് തീർച്ചയാണോ?</translation> <translation id="5816228676161003208">നിങ്ങളുടെ ശബ്ദം ഉപയോഗിച്ച് കൂടുതൽ വേഗത്തിൽ തിരയാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.</translation> <translation id="581659025233126501">സമന്വയിപ്പിക്കൽ ഓണാക്കുക</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">മനസ്സിലായി</translation> <translation id="734758817008927353">കാർഡ് സംരക്ഷിക്കാനുള്ള ഓപ്ഷനുകൾ</translation> <translation id="7348502496356775519">ബുക്ക്മാർക്ക് ചെയ്യുക</translation> +<translation id="7352651011704765696">എന്തോ കുഴപ്പം സംഭവിച്ചു</translation> <translation id="7353432112255316844">ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുക</translation> <translation id="7383797227493018512">വായനാ ലിസ്റ്റ്</translation> <translation id="7398893703713203428">ലിങ്ക് സൃഷ്ടിക്കുക</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb index 7e29d3d8..ba8c475 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -83,6 +83,7 @@ <translation id="1687475363370981210">Бүгдийг уншсан гэж тэмдэглэх</translation> <translation id="1689333818294560261">Хоч</translation> <translation id="1690731385917361335">Ямар ч зүйл алга</translation> +<translation id="1691390244342876227">Chrome таны мэдээллийг баталгаажуулж чадсангүй</translation> <translation id="1692118695553449118">Тохиргоо асаалттай байна.</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> сонгогдсон</translation> <translation id="1740468249224277719">Суулгахын тулд хоёр удаа товшино уу.</translation> @@ -210,6 +211,7 @@ <translation id="3169472444629675720">Олох</translation> <translation id="3175081911749765310">Веб үйлчилгээнүүд</translation> <translation id="3178650076442119961">Өнөөдөр идэвхтэй</translation> +<translation id="3181825792072797598">Синкийг асаах</translation> <translation id="3181954750937456830">Аюулгүй хөтөч (таныг болон таны төхөөрөмжийг аюултай сайтаас хамгаалдаг)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" />-р түгжээ тайлах</translation> <translation id="3196681740617426482">Сайтууд нь, жишээлбэл таныг нэвтэрсэн хэвээр байлгах эсвэл таны худалдан авалтын сагсан дахь зүйлсийг санах зэргээр таны хөтчийн туршлагыг сайжруулахын тулд күүки ашиглах боломжтой. @@ -350,6 +352,8 @@ Таны өгөгдлийг таны синк хийх нэвтрэх үгтэй шифрлэсэн байна. Синкийг эхлүүлэхийн тулд үүнийг оруулна уу.</translation> <translation id="4689564913179979534">Төлбөрийн хэрэгслийг удирдах...</translation> +<translation id="4704093130121805775">Өөрийн төхөөрөмжүүд хооронд синк хийх</translation> +<translation id="470966556546083668">Синк хийхийг бүү асаа</translation> <translation id="473775607612524610">Шинэчлэх</translation> <translation id="4747097190499141774">Нэвтрэх үгийн шифрлэлтэд Google Pay-н төлбөрийн хэрэгслүүд болон хаягуудыг агуулдаггүй. Зөвхөн таны нэвтрэх үгийг мэддэг хүн л таны шифрлэсэн өгөгдлийг унших боломжтой. Нэвтрэх үгийг Google-д илгээхгүй бөгөөд Google-с хадгалахгүй. Хэрэв та нэвтрэх үгээ мартсан эсвэл энэ тохиргоог өөрчлөхийг хүсвэл синкийг шинэчлэх шаардлагатай. <ph name="BEGIN_LINK" />Нэмэлт мэдээлэл авах<ph name="END_LINK" /></translation> <translation id="4751645464639803239">Нууцлалын шинэ таб</translation> @@ -446,6 +450,7 @@ <translation id="5738887413654608789">Та үүгээр ойролцоох хамааралтай веб хуудсыг олох боломжтой.</translation> <translation id="5758631781033351321">Та унших жагсаалтаа эндээс олох болно</translation> <translation id="5782227691023083829">Орчуулж байна...</translation> +<translation id="5797070761912323120">Google таны түүхийг Хайлт, зар болон Google-н бусад үйлчилгээг хувийн болгох зорилгоор ашиглаж болзошгүй</translation> <translation id="5803566855766646066">Та энэ шинэ картыг устгахдаа итгэлтэй байна уу?</translation> <translation id="5816228676161003208">Энэ нь танд дуу хоолойгоороо хурдан хайх боломжийг олгодог.</translation> <translation id="581659025233126501">Синк хийхийг асаах</translation> @@ -510,6 +515,7 @@ <translation id="6342069812937806050">Яг одоо</translation> <translation id="6344783595350022745">Текстийг арилга</translation> <translation id="6346549652287021269">Шинэ таталтыг эхлүүлэх үү?</translation> +<translation id="634878792104344809">Бүх төхөөрөмж дээрээ нууц үгнүүд, түүх болон бусад зүйлээ синк хийгээрэй</translation> <translation id="6362362396625799311">Нууцлалын таб байхгүй байна</translation> <translation id="6363526231572697780">Хэрэглэгчийн нэр алга</translation> <translation id="6374469231428023295">Дахин оролдоно уу</translation> @@ -623,6 +629,7 @@ <translation id="7346909386216857016">OK, ойлголоо</translation> <translation id="734758817008927353">Картыг хадгалах сонголтууд</translation> <translation id="7348502496356775519">Хавчуурга</translation> +<translation id="7352651011704765696">Алдаа гарсан байна</translation> <translation id="7353432112255316844">Өөрийгөө мөн болохыг бататгах</translation> <translation id="7383797227493018512">Унших жагсаалт</translation> <translation id="7398893703713203428">Холбоос үүсгэх</translation> @@ -751,6 +758,7 @@ <translation id="8680787084697685621">Дансны нэвтрэх мэдээлэл хуучирсан байна.</translation> <translation id="8706588385081740091">Нууц үгнүүд</translation> <translation id="8717864919010420084">Холбоосыг хуулах</translation> +<translation id="8721206573513844242">Уучлаарай, бид таны мандат үнэмлэхийг баталгаажуулж чадсангүй</translation> <translation id="8721297211384281569">Хэрэгслүүд цэс</translation> <translation id="8725066075913043281">Дахин оролдож үзнэ үү.</translation> <translation id="8730621377337864115">хийсэн</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb index b7306428..f9c6969 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">वेब सेवा</translation> <translation id="3178650076442119961">आज ॲक्टिव्ह होते</translation> +<translation id="3181825792072797598">सिंक सुरू करा</translation> <translation id="3181954750937456830">सुरक्षित ब्राउझिंग (तुम्हाला आणि तुमच्या डिव्हाइसना धोकादायक साइटपासून सुरक्षित ठेवते)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> वापरून अनलॉक करा</translation> <translation id="3196681740617426482">तुमच्या ब्राउझिंग अनुभवात सुधारणा करण्यासाठी, उदाहरणार्थ, तुम्हाला साइन इन केलेले ठेवण्यासाठी किंवा तुमच्या शॉपिंग कार्टमधील आयटम लक्षात ठेवण्यासाठी साइट कुकी वापरू शकतात. @@ -220,6 +221,7 @@ <translation id="3240426699337459095">लिंक कॉपी केला</translation> <translation id="3244271242291266297">MM</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> पैकी <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> +<translation id="3261971309013797455">तुमची वाचन सूची ऑफलाइन उपलब्ध आहे. तुमच्या वाचन सूचीमध्ये पेज जोडण्यासाठी, <ph name="SHARE_OPENING_ICON" /> त्यानंतर <ph name="ADD_TO_READING_LIST_TEXT" /> वर टॅप करा.</translation> <translation id="3268451620468152448">उघडे Tabs</translation> <translation id="3272527697863656322">रद्द करा</translation> <translation id="3277021493514034324">साइट पत्ता कॉपी केला</translation> @@ -447,6 +449,7 @@ <translation id="5738887413654608789">हे तुम्हाला आपल्या सभोवतालच्या गोष्टींवर आधारित संबंधित वेब पेज शोधू देते.</translation> <translation id="5758631781033351321">तुमची वाचन सूची तुम्हाला येथे सापडेल</translation> <translation id="5782227691023083829">भाषांतर करीत आहे...</translation> +<translation id="5797070761912323120">शोध, जाहिरात आणि इतर Google सेवा पर्सनलाइझ करण्यासाठी Google कदाचित तुमच्या इतिहासाचा वापर करू शकते</translation> <translation id="5803566855766646066">तुम्हाला हे नवीन कार्ड नक्की काढून टाकायचे आहे का?</translation> <translation id="5816228676161003208">हे तुम्हाला तुमचा व्हॉइस वापरून अधिक जलद शोधू देते.</translation> <translation id="581659025233126501">सिंक सुरू करा</translation> @@ -625,6 +628,7 @@ <translation id="7346909386216857016">ठीक आहे, समजले</translation> <translation id="734758817008927353">कार्ड सेव्ह करण्यासाठी पर्याय</translation> <translation id="7348502496356775519">बुकमार्क करा</translation> +<translation id="7352651011704765696">काहीतरी चूक झाली</translation> <translation id="7353432112255316844">हे तुम्हीच असल्याची पडताळणी करा</translation> <translation id="7383797227493018512">वाचन सूची</translation> <translation id="7398893703713203428">लिंक तयार करा</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb index e0a40da..654da8ae 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Temui</translation> <translation id="3175081911749765310">Prkhdmtn Web</translation> <translation id="3178650076442119961">Aktif Hari Ini</translation> +<translation id="3181825792072797598">Hidupkan Penyegerakan</translation> <translation id="3181954750937456830">Penyemakan Imbas Selamat (melindungi anda dan peranti anda daripada tapak yang berbahaya)</translation> <translation id="3184767182050912705">Buka Kunci dengan <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Tapak boleh menggunakan kuki untuk memperbaik pengalaman penyemakan imbas anda, contohnya, untuk mengekalkan log masuk anda atau untuk mengingati item dalam troli beli-belah anda. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Langkah ini membolehkan anda menemui halaman web yang berkaitan berdasarkan persekitaran anda.</translation> <translation id="5758631781033351321">Anda dapat menemukan senarai bacaan anda di sini</translation> <translation id="5782227691023083829">Menterjemahkan…</translation> +<translation id="5797070761912323120">Google boleh menggunakan sejarah anda untuk memperibadikan Carian, iklan dan perkhidmatan Google yang lain</translation> <translation id="5803566855766646066">Adakah anda pasti anda mahu membuang kad baharu ini?</translation> <translation id="5816228676161003208">Langkah ini membolehkan anda mencari dengan lebih cepat menggunakan suara anda.</translation> <translation id="581659025233126501">Hidupkan Penyegerakan</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok, faham</translation> <translation id="734758817008927353">Pilihan untuk Simpan Kad</translation> <translation id="7348502496356775519">Bookmark</translation> +<translation id="7352651011704765696">Kesilapan telah berlaku</translation> <translation id="7353432112255316844">Sahkan Orang Itu Ialah Anda</translation> <translation id="7383797227493018512">Senarai Bacaan</translation> <translation id="7398893703713203428">Buat Pautan</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb index b3a93f7..1c54e6a2 100644 --- a/ios/chrome/app/strings/resources/ios_strings_my.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">ဝဘ် ဝန်ဆောင်မှုများ</translation> <translation id="3178650076442119961">ယနေ့ အသုံးပြုထားသည်</translation> +<translation id="3181825792072797598">စင့်ခ်လုပ်ခြင်းကို ဖွင့်ပါ</translation> <translation id="3181954750937456830">အင်တာနက်ကို လုံခြုံစွာအသုံးပြုရေးစနစ် (သင်နှင့် သင့်စက်ကို အန္တရာယ်ရှိသည့် ဝဘ်ဆိုက်များမှ ကာကွယ်သည်)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ဖြင့် လော့ခ်ဖွင့်ရန်</translation> <translation id="3196681740617426482">သင်၏ဝဘ်ကြည့်ရှုမှု ပိုကောင်းမွန်စေရန် ဥပမာအားဖြင့် အမြဲလက်မှတ်ထိုးဝင်ထားရန် သို့မဟုတ် ဈေးခြင်းတောင်းထဲရှိ အရာများ မှတ်ထားရန်တို့အတွက် ဝဘ်ဆိုက်များက ကွတ်ကီးများကို အသုံးပြုနိုင်သည်။ @@ -446,6 +447,7 @@ <translation id="5738887413654608789">ဤနည်းဖြင့် သင့်ပတ်ဝန်းကျင်ကိုလိုက်၍ သက်ဆိုင်ရာအင်တာနက်စာမျက်နှာများကို ရှာဖွေနိုင်ပါသည်။</translation> <translation id="5758631781033351321">သင့်ဖတ်ရန်စာရင်းကို ဤနေရာတွင် ပြပါမည်</translation> <translation id="5782227691023083829">ဘာသာပြန်နေသည်...</translation> +<translation id="5797070761912323120">Search၊ ကြော်ငြာနှင့် အခြား Google ဝန်ဆောင်မှုများအား ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ရန် Google က သင့်မှတ်တမ်းကို သုံးနိုင်သည်</translation> <translation id="5803566855766646066">ဤကတ်အသစ်ကို ဖယ်ပစ်လိုသည်မှာ သေချာသလား။</translation> <translation id="5816228676161003208">၎င်းသည် သင့်အသံကို အသုံးပြု၍ ရှာဖွေရာတွင် ပိုမိုမြန်ဆန်စေပါသည်။</translation> <translation id="581659025233126501">စင့်ခ်လုပ်ခြင်းကို ဖွင့်ရန်</translation> @@ -623,6 +625,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">'ကတ်သိမ်းရန်' ရွေးချယ်မှုများ</translation> <translation id="7348502496356775519">လိပ်စာ</translation> +<translation id="7352651011704765696">တစ်ခုခု မှားနေပြီ</translation> <translation id="7353432112255316844">သင်ဖြစ်ကြောင်း အတည်ပြုရန်</translation> <translation id="7383797227493018512">ဖတ်ရန် စာရင်း</translation> <translation id="7398893703713203428">လင့်ခ် ပြုလုပ်ရန်</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb index 39fe82a..8babaed1 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">पत्ता लगाउनुहोस्</translation> <translation id="3175081911749765310">वेब सेवाहरू</translation> <translation id="3178650076442119961">आज सक्रिय</translation> +<translation id="3181825792072797598">सिंकलाई सक्रिय गर्नुहोस्</translation> <translation id="3181954750937456830">सुरक्षित ब्राउजिङ (तपाईं र तपाईंको यन्त्रलाई खतरनाक साइटहरूबाट सुरक्षित राख्छ)</translation> <translation id="3184767182050912705">"<ph name="BIOMETRIC_AUTHENITCATION_TYPE" />" प्रयोग गरेर अनलक गर्नुहोस्</translation> <translation id="3196681740617426482">साइटहरूले तपाईंलाई राम्रो ब्राउजिङको अनुभव प्रदान गर्न कुकीहरूको प्रयोग गर्न सक्छन्। उदाहरणको लागि साइटहरूले कुकीहरूको प्रयोग गरी तपाईंलाई साइन इन अवस्थामै राख्न वा तपाईंको किनमेलको कार्टमा भएका वस्तुहरू सम्झन सक्छन्। @@ -220,6 +221,7 @@ <translation id="3240426699337459095">लिंक प्रतिलिपि गरियो</translation> <translation id="3244271242291266297">MM</translation> <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> को <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation> +<translation id="3261971309013797455">तपाईं पछि पढ्न सेभ गरिएका वेबपेजको आफ्नो सूची इन्टरनेट नभएका बेलामा पनि प्रयोग गर्न सक्नुहुन्छ। उक्त सूचीमा कुनै पेज हाल्न <ph name="SHARE_OPENING_ICON" /> मा अनि त्यसपछि <ph name="ADD_TO_READING_LIST_TEXT" /> मा ट्याप गर्नुहोस्।</translation> <translation id="3268451620468152448">ट्याबहरू खोल्नुहोस्</translation> <translation id="3272527697863656322">रद्द गर्नुहोस्</translation> <translation id="3277021493514034324">साइटको ठेगाना प्रतिलिपि गरियो</translation> @@ -446,6 +448,7 @@ <translation id="5738887413654608789">यसले तपाईं वरिपरिको परिवेशमा आधारित सान्दर्भिक वेब पृष्ठहरू पत्ता लगाउन अनुमति दिन्छ।</translation> <translation id="5758631781033351321">तपाईंको अध्ययन सूची यहाँ देखिने छ</translation> <translation id="5782227691023083829">अनुवाद गर्दै...</translation> +<translation id="5797070761912323120">Google ले खोज, विज्ञापन र Google का अन्य सेवाहरूलाई वैयक्तीकृत गर्न तपाईंको इतिहाससम्बन्धी जानकारी प्रयोग गर्न सक्छ</translation> <translation id="5803566855766646066">तपाईंले यो नयाँ कार्ड हटाउन खोज्नुभएकै हो?</translation> <translation id="5816228676161003208">यसले तपाईँलाई आफ्नो आवाजको प्रयोग गरी अझ छिटो खोज्न दिन्छ।</translation> <translation id="581659025233126501">सिंक गर्ने सुविधा अन गर्नुहोस्</translation> @@ -623,6 +626,7 @@ <translation id="7346909386216857016">ठिक छ, बुझेँ</translation> <translation id="734758817008927353">कार्ड सुरक्षित गर्ने विकल्पहरू</translation> <translation id="7348502496356775519">पुस्तक चिन्ह लगाउनुहोस्</translation> +<translation id="7352651011704765696">केही गल्ती भयो</translation> <translation id="7353432112255316844">यो व्यक्ति तपाईं नै हो भन्ने कुरा पुष्टि गर्नुहोस्</translation> <translation id="7383797227493018512">अध्ययन सूची</translation> <translation id="7398893703713203428">लिंक सिर्जना गर्नुहोस्</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb index d11c6df..e90ddae 100644 --- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Webservices</translation> <translation id="3178650076442119961">Vandaag actief</translation> +<translation id="3181825792072797598">Synchronisatie inschakelen</translation> <translation id="3181954750937456830">Safe Browsing (hiermee worden jij en je apparaat beschermd tegen gevaarlijke sites)</translation> <translation id="3184767182050912705">Ontgrendelen met <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Sites mogen cookies gebruiken om de browsefunctionaliteit te verbeteren, bijvoorbeeld door je ingelogd te houden of door artikelen in je winkelwagen te onthouden. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Hiermee kun je relevante webpagina's vinden op basis van je omgeving.</translation> <translation id="5758631781033351321">Hier vind je je leeslijst</translation> <translation id="5782227691023083829">Vertalen...</translation> +<translation id="5797070761912323120">Google kan je geschiedenis gebruiken om Google Zoeken, advertenties en andere Google-services te personaliseren</translation> <translation id="5803566855766646066">Weet je zeker dat je deze nieuwe kaart wilt sluiten?</translation> <translation id="5816228676161003208">Hiermee kun je sneller zoeken met je stem.</translation> <translation id="581659025233126501">Synchronisatie aanzetten</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK, begrepen</translation> <translation id="734758817008927353">Opties om een kaart op te slaan</translation> <translation id="7348502496356775519">Bookmark maken</translation> +<translation id="7352651011704765696">Er is iets misgegaan</translation> <translation id="7353432112255316844">Bevestigen dat jij het bent</translation> <translation id="7383797227493018512">Leeslijst</translation> <translation id="7398893703713203428">Link maken</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb index be19f68..f128ff0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Nettjenester</translation> <translation id="3178650076442119961">Aktiv i dag</translation> +<translation id="3181825792072797598">Slå på synkronisering</translation> <translation id="3181954750937456830">Safe Browsing (beskytter deg og enheten din mot farlige nettsteder)</translation> <translation id="3184767182050912705">Lås opp med <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Nettsteder kan bruke informasjonskapsler for å gi deg en bedre surfeopplevelse, for eksempel for å holde deg pålogget eller huske varene i handlekurven din. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Med denne kan du oppdage relevante nettsider basert på omgivelsene dine.</translation> <translation id="5758631781033351321">Her finner du leselisten din</translation> <translation id="5782227691023083829">Oversetter</translation> +<translation id="5797070761912323120">Google kan bruke loggen din for å gi Søk, annonser og andre Google-tjenester et personlig preg</translation> <translation id="5803566855766646066">Er du sikker på at du vil forkaste dette nye kortet?</translation> <translation id="5816228676161003208">Dette gjør at du kan søke raskere ved å bruke stemmen.</translation> <translation id="581659025233126501">Slå på synkronisering</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Greit</translation> <translation id="734758817008927353">Alternativer for lagring av kort</translation> <translation id="7348502496356775519">Sett som bokmerke</translation> +<translation id="7352651011704765696">Noe gikk galt</translation> <translation id="7353432112255316844">Bekreft at det er deg</translation> <translation id="7383797227493018512">Leseliste</translation> <translation id="7398893703713203428">Opprett link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb index b8ecd7d..13468c5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_or.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">ଖୋଜି ପାଆନ୍ତୁ</translation> <translation id="3175081911749765310">ୱେବ୍ ସେବାଗୁଡ଼ିକ</translation> <translation id="3178650076442119961">ଆଜି ସକ୍ରିୟ ଅଛି</translation> +<translation id="3181825792072797598">ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="3181954750937456830">ସେଫ୍ ବ୍ରାଉଜିଂ (ଆପଣଙ୍କୁ ଏବଂ ଆପଣଙ୍କର ଡିଭାଇସ୍କୁ ବିପଜ୍ଜନକ ସାଇଟ୍ଗୁଡ଼ିକରୁ ରକ୍ଷା କରେ)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ସାହାଯ୍ୟରେ ଅନଲକ୍ କରନ୍ତୁ</translation> <translation id="3196681740617426482">ଆପଣଙ୍କୁ ସାଇନ୍ ଇନ୍ ରଖିବା କିମ୍ବା ଆପଣଙ୍କ ସପିଂ କାର୍ଟରେ ଥିବା ଆଇଟମଗୁଡ଼ିକୁ ମନେରଖିବା ପରି, ଆପଣଙ୍କ ବ୍ରାଉଜିଂ ଅନୁଭୂତିକୁ ଉନ୍ନତ କରିବା ନିମନ୍ତେ ସାଇଟଗୁଡ଼ିକ କୁକୀଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରିବ। @@ -220,6 +221,7 @@ <translation id="3240426699337459095">ଲିଙ୍କ୍ କପି ହୋଇଛି</translation> <translation id="3244271242291266297">ମାସ</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" />ର <ph name="INDEX" /></translation> +<translation id="3261971309013797455">ଆପଣଙ୍କ ପଢ଼ିବା ତାଲିକା ଅଫଲାଇନରେ ଉପଲବ୍ଧ ଅଛି। ଆପଣଙ୍କ ପଢ଼ିବା ତାଲିକାରେ ଗୋଟିଏ ପୃଷ୍ଠା ଯୋଗ କରିବା ପାଇଁ, <ph name="SHARE_OPENING_ICON" />ରେ ତା'ପରେ <ph name="ADD_TO_READING_LIST_TEXT" />ରେ ଟାପ୍ କରନ୍ତୁ।</translation> <translation id="3268451620468152448">ଖୋଲାଥିବା ଟାବ୍ଗୁଡ଼ିକ</translation> <translation id="3272527697863656322">ବାତିଲ୍ କରନ୍ତୁ</translation> <translation id="3277021493514034324">ସାଇଟ୍ ଠିକଣା କପି କରାଯାଇଛି</translation> @@ -444,6 +446,7 @@ <translation id="5738887413654608789">ଏହା ଆପଣଙ୍କ ପରିବେଶ ଉପରେ ଆଧାର କରି ପ୍ରାସଙ୍ଗିକ ୱେବ୍ପୃଷ୍ଠା ଆବିଷ୍କାର କରିବାକୁ ଦିଏ।</translation> <translation id="5758631781033351321">ଆପଣ ଏଠାରେ ଆପଣଙ୍କ ପଢ଼ିବା ତାଲିକା ପାଇବେ</translation> <translation id="5782227691023083829">ଅନୁବାଦ ହେଉଛି...</translation> +<translation id="5797070761912323120">ଆପଣ କରୁଥିବା ସର୍ଚ୍ଚ, ଦେଖୁଥିବା ବିଜ୍ଞାପନ, ଏବଂ ଅନ୍ୟାନ୍ୟ Google ସେବାକୁ ବ୍ୟକ୍ତିଗତକରଣ କରିବା ପାଇଁ Google ଆପଣଙ୍କର ଇତିବୃତ୍ତିକୁ ବ୍ୟବହାର କରିପାରେ</translation> <translation id="5803566855766646066">ଆପଣ ଏହି ନୂଆ କାର୍ଡକୁ ଖାରଜ କରିବାକୁ ଚାହୁଁଥିବା ନିଶ୍ଚିତ କି?</translation> <translation id="5816228676161003208">ଏହା ଆପଣଙ୍କର ଭଏସ୍କୁ ବ୍ୟବହାର କରି ଆପଣଙ୍କୁ ଦ୍ରୁତ ସନ୍ଧାନ କରିବାକୁ ଦେଇଥାଏ।</translation> <translation id="581659025233126501">ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation> @@ -621,6 +624,7 @@ <translation id="7346909386216857016">ଠିକ ଅଛି, ଏହା ବୁଝିଗଲି</translation> <translation id="734758817008927353">କାର୍ଡ ସେଭ୍ କରିବାକୁ ବିକଳ୍ପଗୁଡ଼ିକ</translation> <translation id="7348502496356775519">ବୁକମାର୍କ</translation> +<translation id="7352651011704765696">କିଛି ଭୁଲ୍ ହୋଇଛି</translation> <translation id="7353432112255316844">ଏହା ଆପଣ ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ</translation> <translation id="7383797227493018512">ପଢ଼ିବା ତାଲିକା</translation> <translation id="7398893703713203428">ଲିଙ୍କ ତିଆରି କରନ୍ତୁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb index b2b3b34..6a1caad 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">ਖੋਜੋ</translation> <translation id="3175081911749765310">ਵੈਬ ਸੇਵਾਵਾਂ</translation> <translation id="3178650076442119961">ਅੱਜ ਕਿਰਿਆਸ਼ੀਲ</translation> +<translation id="3181825792072797598">ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation> <translation id="3181954750937456830">ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ (ਖਤਰਨਾਕ ਸਾਈਟਾਂ ਤੋਂ ਤੁਹਾਡੀ ਅਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀ ਸੁਰੱਖਿਆ ਕਰਦੀ ਹੈ)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ਨਾਲ ਅਣਲਾਕ ਕਰੋ</translation> <translation id="3196681740617426482">ਸਾਈਟਾਂ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਕੁਕੀਜ਼ ਨੂੰ ਵਰਤ ਸਕਦੀਆਂ ਹਨ, ਉਦਾਹਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਸਾਈਨ-ਇਨ ਜਾਂ ਤੁਹਾਡੇ ਖਰੀਦਦਾਰੀ ਕਾਰਟ ਵਿਚਲੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਯਾਦ ਰੱਖਣ ਲਈ। @@ -445,6 +446,7 @@ <translation id="5738887413654608789">ਇਹ ਤੁਹਾਨੂੰ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਆਧਾਰ 'ਤੇ ਢੁਕਵੇਂ ਵੈੱਬ ਪੰਨੇ ਲੱਭਣ ਦਿੰਦਾ ਹੈ।</translation> <translation id="5758631781033351321">ਤੁਹਾਨੂੰ ਆਪਣੀ ਪੜ੍ਹਨ-ਸੂਚੀ ਇੱਥੇ ਮਿਲੇਗੀ</translation> <translation id="5782227691023083829">ਅਨੁਵਾਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation> +<translation id="5797070761912323120">Google ਖੋਜ, ਵਿਗਿਆਪਨਾਂ ਅਤੇ ਹੋਰਾਂ Google ਸੇਵਾਵਾਂ ਨੂੰ ਵਿਅਕਤੀਗਤ ਬਣਾਉਣ ਲਈ ਤੁਹਾਡੇ ਇਤਿਹਾਸ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ</translation> <translation id="5803566855766646066">ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇਸ ਨਵੇਂ ਕਾਰਡ ਨੂੰ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="5816228676161003208">ਇਹ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਅਵਾਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਧੇਰੇ ਤੇਜ਼ੀ ਨਾਲ ਖੋਜ ਕਰਨ ਦਿੰਦਾ ਹੈ।</translation> <translation id="581659025233126501">ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation> @@ -622,6 +624,7 @@ <translation id="7346909386216857016">ਠੀਕ, ਸਮਝ ਲਿਆ</translation> <translation id="734758817008927353">ਕਾਰਡ ਰੱਖਿਅਤ ਕਰਨ ਦੇ ਵਿਕਲਪ</translation> <translation id="7348502496356775519">ਬੁੱਕਮਾਰਕ</translation> +<translation id="7352651011704765696">ਕੁਝ ਗ਼ਲਤ ਹੋਇਆ ਸੀ</translation> <translation id="7353432112255316844">ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> <translation id="7383797227493018512">ਪੜ੍ਹਨ-ਸੂਚੀ</translation> <translation id="7398893703713203428">ਲਿੰਕ ਬਣਾਓ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb index d089a081..625cea4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Usługi internetowe</translation> <translation id="3178650076442119961">Aktywność dzisiaj</translation> +<translation id="3181825792072797598">Włącz synchronizację</translation> <translation id="3181954750937456830">Bezpieczne przeglądanie (chroni Ciebie i Twoje urządzenie przed niebezpiecznymi witrynami)</translation> <translation id="3184767182050912705">Odblokuj za pomocą <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Witryny mogą używać plików cookie dla Twojej wygody – na przykład, by zapamiętać Twoje logowanie lub zawartość koszyka. @@ -445,6 +446,7 @@ <translation id="5738887413654608789">Pozwoli Ci to odkrywać strony internetowe dotyczące rzeczy z Twojego otoczenia.</translation> <translation id="5758631781033351321">Znajdziesz tu swoją listę Do przeczytania</translation> <translation id="5782227691023083829">Trwa tłumaczenie...</translation> +<translation id="5797070761912323120">Google może korzystać z Twojej historii, by personalizować wyniki wyszukiwania, reklamy i działanie innych usług</translation> <translation id="5803566855766646066">Czy na pewno chcesz zamknąć tę nową kartę?</translation> <translation id="5816228676161003208">Umożliwia szybsze wyszukiwanie głosowe.</translation> <translation id="581659025233126501">Włącz synchronizację</translation> @@ -622,6 +624,7 @@ <translation id="7346909386216857016">Rozumiem</translation> <translation id="734758817008927353">Opcje zapisania karty</translation> <translation id="7348502496356775519">Dodaj do zakładek</translation> +<translation id="7352651011704765696">Coś poszło nie tak</translation> <translation id="7353432112255316844">Potwierdź, że to Ty</translation> <translation id="7383797227493018512">Do przeczytania</translation> <translation id="7398893703713203428">Utwórz link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb index 3a1d04d3e..9c9bc06 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Serviços da Web</translation> <translation id="3178650076442119961">Ativado hoje</translation> +<translation id="3181825792072797598">Ativar a Sincronização</translation> <translation id="3181954750937456830">Navegação segura: protege você e seu dispositivo de sites perigosos</translation> <translation id="3184767182050912705">Desbloquear com o <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Os sites podem usar cookies para melhorar sua experiência de navegação, como manter sua conta conectada ou se lembrar dos itens em um carrinho de compras. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Isso permite que você descubra páginas da Web relevantes com base nos seus arredores.</translation> <translation id="5758631781033351321">Você encontrará sua lista de leituras aqui</translation> <translation id="5782227691023083829">Traduzindo...</translation> +<translation id="5797070761912323120">O histórico será usado para personalizar a Pesquisa, anúncios e outros serviços Google.</translation> <translation id="5803566855766646066">Tem certeza de que você quer descartar este novo card?</translation> <translation id="5816228676161003208">Isso permite que você pesquise mais rapidamente usando sua voz.</translation> <translation id="581659025233126501">Ativar a sincronização</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok, entendi.</translation> <translation id="734758817008927353">Opções para salvar card</translation> <translation id="7348502496356775519">Adicionar aos favoritos</translation> +<translation id="7352651011704765696">Algo deu errado</translation> <translation id="7353432112255316844">Confirmar sua identidade</translation> <translation id="7383797227493018512">Lista de leitura</translation> <translation id="7398893703713203428">Criar link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb index cf42784c..8fc2b4f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Serviços Web</translation> <translation id="3178650076442119961">Ativo hoje</translation> +<translation id="3181825792072797598">Ativar Sincronização</translation> <translation id="3181954750937456830">Navegação segura (protege o utilizador e o seu dispositivo contra sites perigosos)</translation> <translation id="3184767182050912705">Desbloquear com <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Os sites podem utilizar cookies para melhorar a experiência de navegação, por exemplo, para manter a sua sessão iniciada ou memorizar os artigos no seu carrinho de compras. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Isto permite descobrir páginas Web relevantes com base no ambiente à sua volta.</translation> <translation id="5758631781033351321">A sua lista de leitura será apresentada aqui</translation> <translation id="5782227691023083829">A traduzir...</translation> +<translation id="5797070761912323120">A Google pode utilizar o seu histórico para personalizar a Pesquisa, os anúncios e outros serviços Google.</translation> <translation id="5803566855766646066">Tem a certeza de que pretende rejeitar o novo cartão?</translation> <translation id="5816228676161003208">Isto permite-lhe pesquisar mais rapidamente com a sua voz.</translation> <translation id="581659025233126501">Ativar sincronização</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK, compreendi</translation> <translation id="734758817008927353">Opções para guardar o cartão</translation> <translation id="7348502496356775519">Adicionar aos marcadores</translation> +<translation id="7352651011704765696">Algo correu mal</translation> <translation id="7353432112255316844">Validar identidade</translation> <translation id="7383797227493018512">Lista de leitura</translation> <translation id="7398893703713203428">Criar link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb index bdeb5ca..ab16bd15 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -83,6 +83,7 @@ <translation id="1687475363370981210">Marchează-le pe toate ca citite</translation> <translation id="1689333818294560261">Pseudonim</translation> <translation id="1690731385917361335">Niciun element</translation> +<translation id="1691390244342876227">Chrome nu a putut verifica informațiile</translation> <translation id="1692118695553449118">Sincronizarea este activată</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> selectate</translation> <translation id="1740468249224277719">Atinge de două ori pentru a instala.</translation> @@ -210,6 +211,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Servicii web</translation> <translation id="3178650076442119961">Activ astăzi</translation> +<translation id="3181825792072797598">Activează sincronizarea</translation> <translation id="3181954750937456830">Navigare sigură (protecție împotriva site-urilor periculoase)</translation> <translation id="3184767182050912705">Deblochează cu <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Site-urile pot folosi cookie-uri pentru a-ți îmbunătăți experiența de navigare, de exemplu, pentru a te menține conectat(ă) sau pentru a reține articolele din coșul de cumpărături. @@ -350,6 +352,8 @@ Datele sunt criptate cu expresia de acces pentru sincronizare. Introdu-o pentru a începe sincronizarea.</translation> <translation id="4689564913179979534">Gestionează metodele de plată…</translation> +<translation id="4704093130121805775">Sincronizează între dispozitive</translation> +<translation id="470966556546083668">Nu activa sincronizarea</translation> <translation id="473775607612524610">Actualizează</translation> <translation id="4747097190499141774">Criptarea expresiei de acces nu include metodele de plată și adresele din Google Pay. Numai un utilizator care are expresia de acces poate citi datele tale criptate. Google nu primește și nu stochează expresia ta de acces. Dacă uiți expresia de acces sau vrei să modifici această setare, va trebui să resetezi sincronizarea. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation> <translation id="4751645464639803239">Filă incognito nouă</translation> @@ -447,6 +451,7 @@ <translation id="5738887413654608789">Astfel, poți descoperi pagini web relevante în funcție de lucrurile din jurul tău.</translation> <translation id="5758631781033351321">Aici vei vedea lista de lectură</translation> <translation id="5782227691023083829">Se traduce...</translation> +<translation id="5797070761912323120">Google poate folosi istoricul pentru a personaliza Căutarea, anunțurile și alte servicii Google</translation> <translation id="5803566855766646066">Sigur dorești să elimini acest card nou?</translation> <translation id="5816228676161003208">Astfel, cauți mai rapid folosindu-ți vocea.</translation> <translation id="581659025233126501">Activează sincronizarea</translation> @@ -511,6 +516,7 @@ <translation id="6342069812937806050">Adineauri</translation> <translation id="6344783595350022745">Ștergeți textul</translation> <translation id="6346549652287021269">Începi o nouă descărcare?</translation> +<translation id="634878792104344809">Sincronizează parolele, istoricul și alte date, pe toate dispozitivele</translation> <translation id="6362362396625799311">Nu există file incognito</translation> <translation id="6363526231572697780">Niciun nume de utilizator</translation> <translation id="6374469231428023295">Încearcă din nou</translation> @@ -624,6 +630,7 @@ <translation id="7346909386216857016">OK, am înțeles</translation> <translation id="734758817008927353">Opțiuni pentru a salva cardul</translation> <translation id="7348502496356775519">Marchează</translation> +<translation id="7352651011704765696">A apărut o eroare</translation> <translation id="7353432112255316844">Confirmă-ți identitatea</translation> <translation id="7383797227493018512">Listă de lectură</translation> <translation id="7398893703713203428">Creează un link</translation> @@ -752,6 +759,7 @@ <translation id="8680787084697685621">Datele de conectare la cont au expirat.</translation> <translation id="8706588385081740091">Parole</translation> <translation id="8717864919010420084">Copiază linkul</translation> +<translation id="8721206573513844242">Nu ți-am putut valida datele de conectare</translation> <translation id="8721297211384281569">Meniul Instrumente</translation> <translation id="8725066075913043281">Încearcă din nou</translation> <translation id="8730621377337864115">Terminat</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb index afe21fd5..1e822eec 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Рекомендации</translation> <translation id="3175081911749765310">Веб-сервисы</translation> <translation id="3178650076442119961">Последние действия: сегодня</translation> +<translation id="3181825792072797598">Включить</translation> <translation id="3181954750937456830">Безопасный просмотр (защищает вас и ваше устройство от опасных сайтов)</translation> <translation id="3184767182050912705">Разблокировать с помощью: <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Сайты могут использовать файлы cookie для вашего удобства, например сохранять информацию о товарах в корзине или о том, что вы вошли в аккаунт. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Вы сможете узнавать о сайтах, связанных с объектами вокруг вас.</translation> <translation id="5758631781033351321">Здесь вы найдете свой список для чтения</translation> <translation id="5782227691023083829">Перевод...</translation> +<translation id="5797070761912323120">Google может использовать вашу историю, чтобы персонализировать рекламу, а также Поиск и другие сервисы.</translation> <translation id="5803566855766646066">Удалить новую карту?</translation> <translation id="5816228676161003208">Это нужно, чтобы использовать голосовой поиск</translation> <translation id="581659025233126501">Включить синхронизацию</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">ОК</translation> <translation id="734758817008927353">Параметры сохранения карты</translation> <translation id="7348502496356775519">Закладка</translation> +<translation id="7352651011704765696">Ошибка</translation> <translation id="7353432112255316844">Подтвердить личность</translation> <translation id="7383797227493018512">Список для чтения</translation> <translation id="7398893703713203428">Создать ссылку</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb index 237b3c7..d1d0a31 100644 --- a/ios/chrome/app/strings/resources/ios_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">අනාවරණය</translation> <translation id="3175081911749765310">වෙබ් සේවා</translation> <translation id="3178650076442119961">අද ක්රියාත්මකයි</translation> +<translation id="3181825792072797598">සමමුහුර්තය ක්රියාත්මක කරන්න</translation> <translation id="3181954750937456830">සුරක්ෂිත බ්රවුස් කිරීම (අනතුරුදායක අඩවිවලින් ඔබව සහ ඔබේ උපාංගය ආරක්ෂා කරයි)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> සමගින් අගුලු හරින්න</translation> <translation id="3196681740617426482">ඔබේ බ්රවුස් කිරීමේ අත්දැකීම වැඩිදියුණු කිරීමට, උදාහරණයක් වශයෙන්, ඔබව පුරා තබා ගැනීමට හෝ ඔබේ සාප්පු සවාරි කරත්තයේ අයිතම මතක තබා ගැනීමට වෙබ් අඩවිවලට කුකි භාවිත කළ හැකිය. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">මෙය ඔබට ඔබේ වටපිටාව මත පදනම්ව අදාළ වෙබ් පිටු සොයා ගැනීමට ඉඩ දෙයි.</translation> <translation id="5758631781033351321">ඔබට ඔබේ කියවීමේ ලැයිස්තුව මෙහි හමුවනු ඇත</translation> <translation id="5782227691023083829">පරිවර්තනය කරමින්...</translation> +<translation id="5797070761912323120">සෙවීම, දැන්වීම් සහ අනෙකුත් Google සේවා පුද්ගලායන කිරීමට Google ඔබේ ඉතිහාසය භාවිත කළ හැක</translation> <translation id="5803566855766646066">ඔබට මෙම අලුත් කාඩ්පත ඉවත ලෑ යුතු බව ඔබට තහවුරුද?</translation> <translation id="5816228676161003208">මෙය ඔබට ඔබේ හඬ භාවිතයෙන් වේගයෙන් සෙවීමට ඉඩ දෙයි.</translation> <translation id="581659025233126501">සමමුහුර්ත කිරීම ක්රියාත්මක කරන්න</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">හරි, තේරුම් ගත්තා!</translation> <translation id="734758817008927353">කාඩ්පත සුරැකීමට විකල්ප</translation> <translation id="7348502496356775519">පිටුසන</translation> +<translation id="7352651011704765696">යමක් වැරදිනි</translation> <translation id="7353432112255316844">ඒ ඔබ බව සත්යාපනය කරන්න</translation> <translation id="7383797227493018512">කියවීම් ලැයිස්තුව</translation> <translation id="7398893703713203428">සබැඳියක් තනන්න</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb index fd39a3d..679eea2 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Web. služ.</translation> <translation id="3178650076442119961">Aktívne dnes</translation> +<translation id="3181825792072797598">Zapnúť synchronizáciu</translation> <translation id="3181954750937456830">Bezpečné prehliadanie (chráni vás aj zariadenie pred nebezpečnými webmi)</translation> <translation id="3184767182050912705">Odomknúť funkciou <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Weby môžu pomocou súborov cookie zlepšovať vaše prostredie prehliadania, napríklad zabrániť odhláseniu alebo zapamätať si položky vo vašom nákupnom košíku. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Umožní vám to objavovať relevantné webové stránky na základe objektov vo vašom okolí.</translation> <translation id="5758631781033351321">Tu nájdete svoj zoznam na čítanie</translation> <translation id="5782227691023083829">Prebieha preklad...</translation> +<translation id="5797070761912323120">Google môže pomocou vašej histórie prispôsobiť Vyhľadávanie, reklamy a ďalšie služby Googlu</translation> <translation id="5803566855766646066">Naozaj chcete zahodiť túto novú kartu?</translation> <translation id="5816228676161003208">Umožňuje rýchlejšie vyhľadávania pomocou hlasu.</translation> <translation id="581659025233126501">Zapnúť synchronizáciu</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Dobre</translation> <translation id="734758817008927353">Možnosti uloženia karty</translation> <translation id="7348502496356775519">Uložiť ako záložku</translation> +<translation id="7352651011704765696">Vyskytla sa chyba</translation> <translation id="7353432112255316844">Overte, že ste to vy</translation> <translation id="7383797227493018512">Čitateľský zoznam</translation> <translation id="7398893703713203428">Vytvoriť odkaz</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 5ce7e93..82650bf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Spletne storitve</translation> <translation id="3178650076442119961">Aktivna danes</translation> +<translation id="3181825792072797598">Vklopi sinhronizacijo</translation> <translation id="3181954750937456830">Varno brskanje (ščiti vas in napravo pred nevarnimi spletnimi mesti)</translation> <translation id="3184767182050912705">Odklepanje s tem: <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Spletna mesta lahko uporabljajo piškotke za izboljšanje izkušnje brskanja, na primer tako, da poskrbijo, da ostanete prijavljeni, ali si zapomnijo izdelke v nakupovalnem vozičku. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">To vam omogoča odkrivanje pomembnih spletnih strani glede na vašo okolico.</translation> <translation id="5758631781033351321">Tukaj bo prikazan seznam za branje</translation> <translation id="5782227691023083829">Prevajanje ...</translation> +<translation id="5797070761912323120">Google lahko vašo zgodovino uporabi za prilagajanje Iskanja Google, oglasov in drugih Googlovih storitev</translation> <translation id="5803566855766646066">Ali ste prepričani, da želite zavreči to novo kartico?</translation> <translation id="5816228676161003208">S tem je mogoče hitreje iskati z glasom.</translation> <translation id="581659025233126501">Vklopi sinhronizacijo</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">V redu, razumem</translation> <translation id="734758817008927353">Možnosti za shranjevanje kartic</translation> <translation id="7348502496356775519">Zaznamuj</translation> +<translation id="7352651011704765696">Prišlo je do neznane težave</translation> <translation id="7353432112255316844">Potrditev identitete</translation> <translation id="7383797227493018512">Seznam za branje</translation> <translation id="7398893703713203428">Ustvari povezavo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb index f2a4400..3ac114e2 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Shërbimet e uebit</translation> <translation id="3178650076442119961">Aktiv sot</translation> +<translation id="3181825792072797598">Aktivizo "Sinkronizimin"</translation> <translation id="3181954750937456830">"Shfletimi i sigurt" (të mbron ty dhe pajisjen tënde nga sajtet e rrezikshme)</translation> <translation id="3184767182050912705">Shkyçe me <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Sajtet mund t'i përdorin kukit për të përmirësuar përvojën e shfletimit, për shembull për të të mbajtur të identifikuar ose për të kujtuar artikujt në karrocën e blerjeve. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Kjo të lejon të zbulosh faqe uebi që kanë lidhje bazuar në ambientin rrethues.</translation> <translation id="5758631781033351321">Këtu do të gjesh listën tënde të leximit</translation> <translation id="5782227691023083829">Po përkthen...</translation> +<translation id="5797070761912323120">Google mund ta përdorë historikun tënd për të personalizuar "Kërko me Google", reklamat dhe shërbime të tjera të Google</translation> <translation id="5803566855766646066">Je i sigurt që dëshiron ta heqësh këtë kartë të re?</translation> <translation id="5816228676161003208">Kjo të lejon të kërkosh më shpejt me anë të zërit.</translation> <translation id="581659025233126501">Aktivizo sinkronizimin</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Në rregull, kuptova</translation> <translation id="734758817008927353">Opsionet për ruajtjen e kartës</translation> <translation id="7348502496356775519">Shëno si faqeshënues</translation> +<translation id="7352651011704765696">Diçka shkoi keq</translation> <translation id="7353432112255316844">Verifiko që je ti</translation> <translation id="7383797227493018512">Lista e leximit</translation> <translation id="7398893703713203428">Krijo një lidhje</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index e76b6eb0..8bfb431 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Veb-usluge</translation> <translation id="3178650076442119961">Poslednja aktivnost: danas</translation> +<translation id="3181825792072797598">Uključi sinhronizaciju</translation> <translation id="3181954750937456830">Bezbedno pregledanje (štiti vas i uređaj od opasnih sajtova)</translation> <translation id="3184767182050912705">Otključaj pomoću opcije <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Sajtovi mogu da koriste kolačiće za poboljšanje doživljaja pregledanja, na primer, da biste ostali prijavljeni ili da bi stavke u vašoj korpi za kupovinu ostale sačuvane. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Ovo vam omogućava da otkrijete relevantne veb-stranice na osnovu okruženja.</translation> <translation id="5758631781033351321">Ovde ćete pronaći listu za čitanje</translation> <translation id="5782227691023083829">Prevođenje je u toku...</translation> +<translation id="5797070761912323120">Google može da koristi istoriju za personalizaciju Pretrage, oglasa i drugih Google usluga</translation> <translation id="5803566855766646066">Želite li stvarno da odbacite ovu novu karticu?</translation> <translation id="5816228676161003208">Ovo vam omogućava da brže pretražujte pomoću glasa.</translation> <translation id="581659025233126501">Uključi sinhronizaciju</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Važi</translation> <translation id="734758817008927353">Opcije za čuvanje kartice</translation> <translation id="7348502496356775519">Označi</translation> +<translation id="7352651011704765696">Nešto nije u redu</translation> <translation id="7353432112255316844">Potvrdite svoj identitet</translation> <translation id="7383797227493018512">Lista za čitanje</translation> <translation id="7398893703713203428">Create Link (Napravi link)</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index 3e718dcb6..a4d5378 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Веб-услуге</translation> <translation id="3178650076442119961">Последња активност: данас</translation> +<translation id="3181825792072797598">Укључи синхронизацију</translation> <translation id="3181954750937456830">Безбедно прегледање (штити вас и уређај од опасних сајтова)</translation> <translation id="3184767182050912705">Откључај помоћу опције <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Сајтови могу да користе колачиће за побољшање доживљаја прегледања, на пример, да бисте остали пријављени или да би ставке у вашој корпи за куповину остале сачуване. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Ово вам омогућава да откријете релевантне веб-странице на основу окружења.</translation> <translation id="5758631781033351321">Овде ћете пронаћи листу за читање</translation> <translation id="5782227691023083829">Превођење је у току...</translation> +<translation id="5797070761912323120">Google може да користи историју за персонализацију Претраге, огласа и других Google услуга</translation> <translation id="5803566855766646066">Желите ли стварно да одбаците ову нову картицу?</translation> <translation id="5816228676161003208">Ово вам омогућава да брже претражујте помоћу гласа.</translation> <translation id="581659025233126501">Укључи синхронизацију</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Важи</translation> <translation id="734758817008927353">Опције за чување картице</translation> <translation id="7348502496356775519">Означи</translation> +<translation id="7352651011704765696">Нешто није у реду</translation> <translation id="7353432112255316844">Потврдите свој идентитет</translation> <translation id="7383797227493018512">Листа за читање</translation> <translation id="7398893703713203428">Create Link (Направи линк)</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb index ea414962..f79edfc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Webbtjänster</translation> <translation id="3178650076442119961">Aktiv i dag</translation> +<translation id="3181825792072797598">Aktivera synkronisering</translation> <translation id="3181954750937456830">Säker webbsökning (skyddar dig och enheten från skadliga webbplatser)</translation> <translation id="3184767182050912705">Lås upp med <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Webbplatser får förbättra surfupplevelsen med hjälp av cookies, till exempel genom att låta dig förbli inloggad eller spara vad du har lagt till i kundvagnen. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Detta gör det möjligt att upptäcka relevanta webbsidor utifrån din omgivning.</translation> <translation id="5758631781033351321">Du hittar läslistan här</translation> <translation id="5782227691023083829">Översätter...</translation> +<translation id="5797070761912323120">Google kan anpassa Sök, annonser och andra Google-tjänster utifrån historiken</translation> <translation id="5803566855766646066">Vill du slänga det här nya kortet?</translation> <translation id="5816228676161003208">Det här gör att du kan söka snabbare med hjälp av rösten.</translation> <translation id="581659025233126501">Aktivera synkronisering</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok, jag förstår</translation> <translation id="734758817008927353">Alternativ för att spara kort</translation> <translation id="7348502496356775519">Bokmärke</translation> +<translation id="7352651011704765696">Något gick fel</translation> <translation id="7353432112255316844">Verifiera din identitet</translation> <translation id="7383797227493018512">Läslista</translation> <translation id="7398893703713203428">Skapa länk</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb index 028c1f2..e74dd1f4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Gundua</translation> <translation id="3175081911749765310">Huduma za Wavuti</translation> <translation id="3178650076442119961">Kimetumika Leo</translation> +<translation id="3181825792072797598">Washa kipengele cha Kusawazisha</translation> <translation id="3181954750937456830">Kuvinjari Salama (hukulinda wewe na kifaa chako dhidi ya tovuti hatari)</translation> <translation id="3184767182050912705">Fungua Ukitumia <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Tovuti zinaweza kutumia vidakuzi ili kuboresha hali yako ya kuvinjari, kwa mfano, ili kufanya ubaki ukiwa umeingia katika akaunti au kukumbuka bidhaa zilizo kwenye kikapu chako cha ununuzi. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Hii inakuwezesha kugundua kurasa za wavuti zinazokufaa kulingana na mazingira yako.</translation> <translation id="5758631781033351321">Utapata orodha yako ya kusoma hapa</translation> <translation id="5782227691023083829">Inatafsiri...</translation> +<translation id="5797070761912323120">Google inaweza kutumia historia yako ili kuweka mapendeleo kwenye huduma ya Tafuta na Google, matangazo na huduma nyingine za Google</translation> <translation id="5803566855766646066">Je, una uhakika ungependa kufuta kadi hii mpya?</translation> <translation id="5816228676161003208">Hii hukuwezesha kutafuta haraka kwa kutamka.</translation> <translation id="581659025233126501">Washa Kipengele cha Kusawazisha</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Sawa, nimeelewa</translation> <translation id="734758817008927353">Chaguo za Kuhifadhi Kadi</translation> <translation id="7348502496356775519">Alamisha</translation> +<translation id="7352651011704765696">Hitilafu fulani imetokea</translation> <translation id="7353432112255316844">Thibitisha Kwamba Ni Wewe</translation> <translation id="7383797227493018512">Orodha ya Kusoma</translation> <translation id="7398893703713203428">Weka Kiungo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb index 3c8e4b8..d6c9542 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">இணைய சேவைகள்</translation> <translation id="3178650076442119961">இன்று பயன்படுத்தியுள்ளார்</translation> +<translation id="3181825792072797598">ஒத்திசைவை இயக்கு</translation> <translation id="3181954750937456830">பாதுகாப்பு உலாவல் (ஆபத்தான தளங்களிலிருந்து உங்களையும் சாதனத்தையும் பாதுகாக்கும்)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> மூலம் திற</translation> <translation id="3196681740617426482">உங்கள் உலாவல் அனுபவத்தை மேம்படுத்துவதற்காக (எ.கா., உங்களை உள்நுழைந்தபடியே வைத்திருப்பது, உங்கள் ஷாப்பிங் கார்ட்டில் உள்ளவற்றை நினைவில் கொள்வது போன்றவை) குக்கீகளைத் தளங்கள் பயன்படுத்த முடியும். @@ -447,6 +448,7 @@ <translation id="5738887413654608789">இதன் மூலம், உங்களைச் சுற்றியுள்ளவற்றின் அடிப்படையில் தொடர்புடைய இணையப் பக்கங்களைக் கண்டறியலாம்.</translation> <translation id="5758631781033351321">உங்கள் வாசிப்புப் பட்டியலை இங்கே பார்ப்பீர்கள்</translation> <translation id="5782227691023083829">மொழிபெயர்க்கிறது...</translation> +<translation id="5797070761912323120">தேடல், விளம்பரங்கள் மற்றும் பிற Google சேவைகளைத் தனிப்பயனாக்க, உங்கள் வரலாற்றை Google பயன்படுத்தக்கூடும்</translation> <translation id="5803566855766646066">இந்தப் புதிய கார்டை நிராகரிக்க வேண்டுமா?</translation> <translation id="5816228676161003208">இதன் மூலம் உங்கள் குரலைப் பயன்படுத்தி வேகமாகத் தேடலாம்.</translation> <translation id="581659025233126501">ஒத்திசைவை இயக்கு</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">சரி, புரிந்தது</translation> <translation id="734758817008927353">கார்டை சேமிப்பதற்கான விருப்பத்தேர்வுகள்</translation> <translation id="7348502496356775519">புத்தகக்குறி</translation> +<translation id="7352651011704765696">ஏதோ தவறு ஏற்பட்டது</translation> <translation id="7353432112255316844">இது நீங்கள்தான் என உறுதிசெய்யுங்கள்</translation> <translation id="7383797227493018512">வாசிப்புப் பட்டியல்</translation> <translation id="7398893703713203428">இணைப்பை உருவாக்கு</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index ca47a31..a37cfa7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">కనుగొను</translation> <translation id="3175081911749765310">వెబ్ సేవలు</translation> <translation id="3178650076442119961">ఈ రోజు యాక్టివ్గా ఉంది</translation> +<translation id="3181825792072797598">సమకాలీకరణను ఆన్ చేయి</translation> <translation id="3181954750937456830">సురక్షిత బ్రౌజింగ్ (ప్రమాదకరమైన సైట్ల నుండి మిమ్మల్ని, మీ పరికరాన్ని రక్షిస్తుంది)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" />తో అన్లాక్ చేయండి</translation> <translation id="3196681740617426482">సైట్లు మీ బ్రౌజింగ్ అనుభవాన్ని మెరుగుపరచడానికి కుక్కీలను ఉపయోగిస్తాయి, ఉదాహరణకు, మిమ్మల్ని సైన్ ఇన్ చేసి ఉంచడం లేదా మీ షాపింగ్ కార్ట్లోని ఐటెమ్లను గుర్తు చేయడం లాంటివి. @@ -220,6 +221,7 @@ <translation id="3240426699337459095">లింక్ కాపీ చేయబడింది</translation> <translation id="3244271242291266297">MM</translation> <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" />లో <ph name="INDEX" /></translation> +<translation id="3261971309013797455">మీ చదవాల్సిన లిస్ట్ ఆఫ్లైన్లో అందుబాటులో ఉంది. మీ చదవాల్సిన లిస్ట్కు పేజీని జోడించడానికి, <ph name="SHARE_OPENING_ICON" />ను ట్యాప్ చేసి ఆపై <ph name="ADD_TO_READING_LIST_TEXT" />ను ట్యాప్ చేయండి.</translation> <translation id="3268451620468152448">ఓపెన్ టాబ్లు</translation> <translation id="3272527697863656322">రద్దు చేయి</translation> <translation id="3277021493514034324">సైట్ చిరునామా కాపీ చేయబడింది</translation> @@ -446,6 +448,7 @@ <translation id="5738887413654608789">దీని వల్ల మీరు మీ పరిసరాల ఆధారంగా సంబంధిత వెబ్ పేజీలను కనుగొనగలుగుతారు.</translation> <translation id="5758631781033351321">మీ చదివే అంశాల లిస్ట్ను ఇక్కడ చూడగలరు</translation> <translation id="5782227691023083829">అనువదిస్తోంది...</translation> +<translation id="5797070761912323120">శోధన, ప్రకటనలు, ఇతర Google సేవలను వ్యక్తిగతీకరించడానికి Google మీ చరిత్రను ఉపయోగించే అవకాశం ఉంటుంది</translation> <translation id="5803566855766646066">మీరు ఈ కొత్త కార్డ్ను ఖచ్చితంగా విస్మరించాలనుకుంటున్నారా?</translation> <translation id="5816228676161003208">దీని వలన మీ వాయిస్ను ఉపయోగించి వేగంగా వెతకగలుగుతారు.</translation> <translation id="581659025233126501">సింక్ను ఆన్ చేయి</translation> @@ -623,6 +626,7 @@ <translation id="7346909386216857016">సరే, అర్థమైంది</translation> <translation id="734758817008927353">కార్డ్ను సేవ్ చేయడానికి ఎంపికలు</translation> <translation id="7348502496356775519">బుక్మార్క్</translation> +<translation id="7352651011704765696">ఏదో తప్పు జరిగింది</translation> <translation id="7353432112255316844">ఇది మీరే అని వెరిఫై చేయండి</translation> <translation id="7383797227493018512">పఠన జాబితా</translation> <translation id="7398893703713203428">లింక్ను క్రియేట్ చేయండి</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb index 064f43b..67875fdb 100644 --- a/ios/chrome/app/strings/resources/ios_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -83,6 +83,7 @@ <translation id="1687475363370981210">ทำเครื่องหมายทั้งหมดว่าอ่านแล้ว</translation> <translation id="1689333818294560261">ชื่อเล่น</translation> <translation id="1690731385917361335">ไม่มีรายการ</translation> +<translation id="1691390244342876227">Chrome ยืนยันข้อมูลของคุณไม่ได้</translation> <translation id="1692118695553449118">การซิงค์เปิดอยู่</translation> <translation id="1700629756560807968">เลือก <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> รายการ</translation> <translation id="1740468249224277719">แตะ 2 ครั้งเพื่อติดตั้ง</translation> @@ -210,6 +211,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">บริการทางเว็บ</translation> <translation id="3178650076442119961">ใช้งานวันนี้</translation> +<translation id="3181825792072797598">เปิดการซิงค์</translation> <translation id="3181954750937456830">Google Safe Browsing (ปกป้องคุณและอุปกรณ์จากเว็บไซต์ที่เป็นอันตราย)</translation> <translation id="3184767182050912705">ปลดล็อกด้วย <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">เว็บไซต์จะใช้คุกกี้เพื่อปรับปรุงประสบการณ์การท่องเว็บ เช่น ให้คุณลงชื่อเข้าใช้ต่อไปเรื่อยๆ หรือจดจำรายการในรถเข็นช็อปปิ้ง @@ -350,6 +352,8 @@ ข้อมูลของคุณจะได้รับการเข้ารหัสด้วยรหัสผ่านการซิงค์ โปรดป้อนรหัสผ่านเพื่อเริ่มซิงค์</translation> <translation id="4689564913179979534">จัดการวิธีการชำระเงิน...</translation> +<translation id="4704093130121805775">ซิงค์ระหว่างอุปกรณ์</translation> +<translation id="470966556546083668">ไม่ต้องเปิดการซิงค์</translation> <translation id="473775607612524610">อัปเดต</translation> <translation id="4747097190499141774">การเข้ารหัสลับด้วยรหัสผ่านจะไม่รวมข้อมูลวิธีการชำระเงินและที่อยู่จาก Google Pay เฉพาะผู้ที่มีรหัสผ่านของคุณเท่านั้นจึงจะอ่านข้อมูลที่เข้ารหัสได้ Google จะไม่ได้รับหรือจัดเก็บรหัสผ่านนี้ คุณจะต้องรีเซ็ตการซิงค์หากลืมรหัสผ่านหรือต้องการเปลี่ยนแปลงการตั้งค่านี้ <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="4751645464639803239">แท็บไม่ระบุตัวตนใหม่</translation> @@ -447,6 +451,7 @@ <translation id="5738887413654608789">วิธีนี้ช่วยให้คุณค้นพบหน้าเว็บที่เกี่ยวข้องโดยอิงตามสิ่งที่อยู่รอบตัวคุณ</translation> <translation id="5758631781033351321">คุณจะเห็นเรื่องรออ่านที่นี่</translation> <translation id="5782227691023083829">กำลังแปล...</translation> +<translation id="5797070761912323120">Google อาจใช้ประวัติการเข้าชมเพื่อปรับเปลี่ยน Search, โฆษณา และบริการอื่นๆ ของ Google ให้เข้ากับคุณ</translation> <translation id="5803566855766646066">คุณแน่ใจไหมว่าต้องการทิ้งบัตรใบใหม่นี้</translation> <translation id="5816228676161003208">ช่วยให้คุณค้นหาได้เร็วขึ้นโดยใช้เสียง</translation> <translation id="581659025233126501">เปิดการซิงค์</translation> @@ -511,6 +516,7 @@ <translation id="6342069812937806050">เมื่อสักครู่</translation> <translation id="6344783595350022745">ข้อความที่ชัดเจน</translation> <translation id="6346549652287021269">เริ่มดาวน์โหลดใหม่ใช่ไหม</translation> +<translation id="634878792104344809">ซิงค์รหัสผ่าน ประวัติการเข้าชม และอื่นๆ ในทุกอุปกรณ์</translation> <translation id="6362362396625799311">ไม่มีแท็บที่ไม่ระบุตัวตน</translation> <translation id="6363526231572697780">ไม่มีชื่อผู้ใช้</translation> <translation id="6374469231428023295">ลองอีกครั้ง</translation> @@ -624,6 +630,7 @@ <translation id="7346909386216857016">รับทราบ</translation> <translation id="734758817008927353">ตัวเลือกในการบันทึกการ์ด</translation> <translation id="7348502496356775519">บุ๊กมาร์ก</translation> +<translation id="7352651011704765696">มีข้อผิดพลาดเกิดขึ้น</translation> <translation id="7353432112255316844">ยืนยันว่าเป็นคุณ</translation> <translation id="7383797227493018512">เรื่องรออ่าน</translation> <translation id="7398893703713203428">สร้างลิงก์</translation> @@ -752,6 +759,7 @@ <translation id="8680787084697685621">รายละเอียดการลงชื่อเข้าใช้บัญชีเก่าเกินไป</translation> <translation id="8706588385081740091">รหัสผ่าน</translation> <translation id="8717864919010420084">คัดลอกลิงก์</translation> +<translation id="8721206573513844242">ขออภัย เราตรวจสอบข้อมูลเข้าสู่ระบบของคุณไม่ได้</translation> <translation id="8721297211384281569">เมนูเครื่องมือ</translation> <translation id="8725066075913043281">ลองอีกครั้ง</translation> <translation id="8730621377337864115">เสร็จสิ้น</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb index cf8e1e3..b1bed747 100644 --- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Web Hizmetleri</translation> <translation id="3178650076442119961">Bugün Etkin</translation> +<translation id="3181825792072797598">Senkronizasyonu aç</translation> <translation id="3181954750937456830">Gizli Göz Atma (sizi ve cihazınızı tehlikelerden korur)</translation> <translation id="3184767182050912705">Kilidi <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ile Aç</translation> <translation id="3196681740617426482">Siteler size daha iyi bir göz atma deneyimi sunmak, örneğin, oturumunuzu açık tutmak veya alışveriş sepetinizdeki ürünleri hatırlamak için çerez kullanabilir. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Bu işlem çevrenizdeki öğelere dayalı olarak ilgili web sayfalarını keşfetmenize olanak sağlar.</translation> <translation id="5758631781033351321">Okuma listenizi burada bulabilirsiniz</translation> <translation id="5782227691023083829">Çevriliyor...</translation> +<translation id="5797070761912323120">Google; Arama, reklamlar ve diğer Google hizmetlerini kişiselleştirmek için geçmişinizi kullanabilir</translation> <translation id="5803566855766646066">Bu yeni kartı silmek istediğinizden emin misiniz?</translation> <translation id="5816228676161003208">Böylece, sesinizi kullanarak daha hızlı arama yapabilirsiniz.</translation> <translation id="581659025233126501">Senkronizasyonu Aç</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Tamam, anladım</translation> <translation id="734758817008927353">Kartı Kaydetme seçenekleri</translation> <translation id="7348502496356775519">Yer işareti koy</translation> +<translation id="7352651011704765696">Bir şeyler ters gitti</translation> <translation id="7353432112255316844">Kimliğinizi Doğrulayın</translation> <translation id="7383797227493018512">Okuma Listesi</translation> <translation id="7398893703713203428">Bağlantı Oluştur</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb index f8e4529..596526d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Рекомендації</translation> <translation id="3175081911749765310">Веб-служби</translation> <translation id="3178650076442119961">У мережі сьогодні</translation> +<translation id="3181825792072797598">Увімкнути синхронізацію</translation> <translation id="3181954750937456830">Безпечний перегляд (захищає вас і ваш пристрій від небезпечних сайтів)</translation> <translation id="3184767182050912705">Розблокувати, використовуючи <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Сайти можуть використовувати файли cookie, щоб покращувати веб-перегляд, наприклад не виходити з облікового запису чи запам'ятовувати товари в кошику для покупок. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Ви зможете знаходити відповідні веб-сторінки на основі об’єктів поблизу.</translation> <translation id="5758631781033351321">Тут відображатиметься ваш список читання</translation> <translation id="5782227691023083829">Виконується переклад сторінки...</translation> +<translation id="5797070761912323120">Google може використовувати вашу історію, щоб персоналізувати Пошук, оголошення й інші сервіси Google</translation> <translation id="5803566855766646066">Відхилити цю нову картку?</translation> <translation id="5816228676161003208">Ви зможете швидше шукати голосом.</translation> <translation id="581659025233126501">Увімкнути синхронізацію</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">Опції збереження картки</translation> <translation id="7348502496356775519">Закладка</translation> +<translation id="7352651011704765696">Виникли проблеми</translation> <translation id="7353432112255316844">Підтвердьте свою особу</translation> <translation id="7383797227493018512">Список читання</translation> <translation id="7398893703713203428">Створити посилання</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb index 646959f3..5a54fc4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">دریافت کریں</translation> <translation id="3175081911749765310">ویب سروسز</translation> <translation id="3178650076442119961">آج فعال تھا</translation> +<translation id="3181825792072797598">مطابقت پذیری آن کریں</translation> <translation id="3181954750937456830">محفوظ براؤزنگ (آپ اور آپ کے آلہ کی خطرناک سائٹس سے حفاظت کرتی ہے)</translation> <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> سے غیر مقفل کریں</translation> <translation id="3196681740617426482">سائٹس آپ کے براؤزنگ کے تجربہ کو بہتر بنانے کے لیے کوکیز کا استعمال کر سکتی ہیں، مثال کے طور پر آپ کو سائن ان رکھنا یا آپ کی شاپنگ کارٹ میں آئٹمز کو یاد رکھنا۔ @@ -220,6 +221,7 @@ <translation id="3240426699337459095">لنک کاپی ہوگیا</translation> <translation id="3244271242291266297">MM</translation> <translation id="3252394070589632019"><ph name="VALUE" />، <ph name="ADDITIONAL_INFO" />، <ph name="INDEX" /> از <ph name="NUM_SUGGESTIONS" /></translation> +<translation id="3261971309013797455">آپ کی پڑھنے کی فہرست آف لائن دستیاب ہے۔ اپنی پڑھنے کی فہرست میں صفحہ شامل کرنے کے لیے، <ph name="SHARE_OPENING_ICON" /> پھر <ph name="ADD_TO_READING_LIST_TEXT" /> پر تھپتھپائیں۔</translation> <translation id="3268451620468152448">کھلے ٹیبز</translation> <translation id="3272527697863656322">منسوخ کریں</translation> <translation id="3277021493514034324">سائٹ کا پتہ کاپی ہو گیا</translation> @@ -446,6 +448,7 @@ <translation id="5738887413654608789">یہ آپ کو آپ کے قرب و جوار کی بنیاد پر متعلقہ ویب صفحات کو دریافت کرنے کی اجازت دیتا ہے۔</translation> <translation id="5758631781033351321">آپ اپنی پڑھنے کی فہرست یہاں پائیں گے</translation> <translation id="5782227691023083829">ترجمہ کیا جا رہا ہے...</translation> +<translation id="5797070761912323120">تلاش، اشتہارات اور Google کی دیگر سروسز کو ذاتی نوعیت کا بنانے کے لیے Google آپ کی سرگزشت کا استعمال کر سکتا ہے</translation> <translation id="5803566855766646066">کیا آپ واقعی اس نئے کارڈ کو مسترد کرنا چاہتے ہیں؟</translation> <translation id="5816228676161003208">یہ آپ کو اپنی آواز کا استعمال کر کے زیادہ تیزی سے تلاش کرنے دیتا ہے۔</translation> <translation id="581659025233126501">مطابقت پذیری آن کریں</translation> @@ -623,6 +626,7 @@ <translation id="7346909386216857016">ٹھیک ہے، سمجھ آ گئی</translation> <translation id="734758817008927353">کارڈ محفوظ کرنے کے اختیارات</translation> <translation id="7348502496356775519">بُک مارک کریں</translation> +<translation id="7352651011704765696">کچھ غلط ہو گیا</translation> <translation id="7353432112255316844">توثیق کریں کہ یہ آپ ہیں</translation> <translation id="7383797227493018512">پڑھنے کی فہرست</translation> <translation id="7398893703713203428">لنک تخلیق کریں</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb index 91d29d02..96321f4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">Veb-xizmatlar</translation> <translation id="3178650076442119961">Bugun onlayn edi</translation> +<translation id="3181825792072797598">Sinxronizatsiyani yoqish</translation> <translation id="3181954750937456830">Saytlarni xavfsiz kezish (sizni va qurilmangizni xavfli saytlardan himoya qiladi)</translation> <translation id="3184767182050912705">Qulfni <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> bilan ochish</translation> <translation id="3196681740617426482">Saytlar sahifalarni kezishingizni yaxshilash, jumladan, kirish axborotingiz yoki xarid qutingizni eslab qolish uchun cookie fayllardan foydalanishi mumkin. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Yaqin-atrofingizdagi qurilmalar tarqatayotgan veb-sahifalarni aniqlash imkonini beradi.</translation> <translation id="5758631781033351321">Brauzer mutolaa roʻyxati shu yerda chiqadi</translation> <translation id="5782227691023083829">Tarjima qilinmoqda...</translation> +<translation id="5797070761912323120">Qidiruv, rekama va boshqa xizmatlarni sizga moslashtirish uchun Google tarix maʼlumotlaringizdan foydalanishi mumkin</translation> <translation id="5803566855766646066">Bu yangi karta inkor etilsinmi?</translation> <translation id="5816228676161003208">Ovoz orqali tezroq qidirish imkonini beradi.</translation> <translation id="581659025233126501">Sinxronizatsiyani yoqish</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">OK</translation> <translation id="734758817008927353">Kartalarni saqlash parametrlari</translation> <translation id="7348502496356775519">Bukmark</translation> +<translation id="7352651011704765696">Xatolik yuz berdi.</translation> <translation id="7353432112255316844">Bu siz ekaningizni isbotlang</translation> <translation id="7383797227493018512">Mutolaa ro‘yxati</translation> <translation id="7398893703713203428">Havola yaratish</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb index c254a490..913b31f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Khám phá</translation> <translation id="3175081911749765310">Dịch vụ web</translation> <translation id="3178650076442119961">Hoạt động hôm nay</translation> +<translation id="3181825792072797598">Bật Đồng bộ hóa</translation> <translation id="3181954750937456830">Duyệt web an toàn (bảo vệ bạn cũng như thiết bị của bạn khỏi các trang web nguy hiểm)</translation> <translation id="3184767182050912705">Mở khóa bằng <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Các trang web có thể dùng cookie để cải thiện trải nghiệm duyệt web của bạn, chẳng hạn như để duy trì trạng thái đăng nhập hoặc ghi nhớ những mặt hàng có trong giỏ hàng. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Tính năng này cho phép bạn khám phá các trang web có liên quan dựa trên những thứ xung quanh bạn.</translation> <translation id="5758631781033351321">Bạn sẽ thấy danh sách đọc ở đây</translation> <translation id="5782227691023083829">Đang dịch...</translation> +<translation id="5797070761912323120">Google có thể sử dụng lịch sử của bạn để điều chỉnh tính năng Tìm kiếm, quảng cáo và các dịch vụ khác của Google cho phù hợp với bạn</translation> <translation id="5803566855766646066">Bạn có chắc chắn muốn hủy thẻ mới này không?</translation> <translation id="5816228676161003208">Điều này cho phép bạn tìm kiếm nhanh hơn bằng giọng nói.</translation> <translation id="581659025233126501">Bật tính năng đồng bộ hóa</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok</translation> <translation id="734758817008927353">Các tùy chọn lưu thẻ</translation> <translation id="7348502496356775519">Đánh dấu trang</translation> +<translation id="7352651011704765696">Đã xảy ra lỗi</translation> <translation id="7353432112255316844">Xác minh danh tính của bạn</translation> <translation id="7383797227493018512">Danh sách đọc</translation> <translation id="7398893703713203428">Tạo đường liên kết</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb index bc4b50ac..4ff5fbd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">网络服务</translation> <translation id="3178650076442119961">今天曾有活动</translation> +<translation id="3181825792072797598">开启同步功能</translation> <translation id="3181954750937456830">安全浏览(保护您和您的设备不受危险网站的侵害)</translation> <translation id="3184767182050912705">通过<ph name="BIOMETRIC_AUTHENITCATION_TYPE" />解锁</translation> <translation id="3196681740617426482">网站可以使用 Cookie 来提升您的浏览体验,例如让您保持登录状态或记住您购物车中的商品。 @@ -220,6 +221,7 @@ <translation id="3240426699337459095">已复制链接</translation> <translation id="3244271242291266297">MM</translation> <translation id="3252394070589632019"><ph name="VALUE" />,<ph name="ADDITIONAL_INFO" />,第 <ph name="INDEX" /> 项建议(共 <ph name="NUM_SUGGESTIONS" /> 项)</translation> +<translation id="3261971309013797455">您的阅读清单可离线访问。如需将某个网页添加到该清单中,请依次点按 <ph name="SHARE_OPENING_ICON" /> 和“<ph name="ADD_TO_READING_LIST_TEXT" />”。</translation> <translation id="3268451620468152448">打开的标签页</translation> <translation id="3272527697863656322">取消</translation> <translation id="3277021493514034324">已复制网站地址</translation> @@ -446,6 +448,7 @@ <translation id="5738887413654608789">这样可让您找到与目前周遭环境相关的网页。</translation> <translation id="5758631781033351321">您的阅读清单会显示在此处</translation> <translation id="5782227691023083829">正在翻译...</translation> +<translation id="5797070761912323120">Google 可能会利用您的历史记录为您提供个性化的 Google 搜索、广告和其他 Google 服务</translation> <translation id="5803566855766646066">确定要舍弃这张新信用卡吗?</translation> <translation id="5816228676161003208">这样,您就可以使用语音更快速地进行搜索。</translation> <translation id="581659025233126501">开启同步功能</translation> @@ -623,6 +626,7 @@ <translation id="7346909386216857016">知道了</translation> <translation id="734758817008927353">卡片信息保存选项</translation> <translation id="7348502496356775519">添加书签</translation> +<translation id="7352651011704765696">出了点问题</translation> <translation id="7353432112255316844">请验证是您本人在操作</translation> <translation id="7383797227493018512">阅读清单</translation> <translation id="7398893703713203428">创建链接</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb index e03c6695..d166628 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">探索</translation> <translation id="3175081911749765310">網路服務</translation> <translation id="3178650076442119961">今天在線</translation> +<translation id="3181825792072797598">開啟同步處理功能</translation> <translation id="3181954750937456830">安全瀏覽 (保護您和裝置免受危險網站攻擊)</translation> <translation id="3184767182050912705">使用 <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> 解鎖</translation> <translation id="3196681740617426482">網站可使用 Cookie 來改善瀏覽體驗,例如讓您保持登入狀態或記住購物車中的商品。 @@ -447,6 +448,7 @@ <translation id="5738887413654608789">這樣您便可根據周圍環境探索相關網頁。</translation> <translation id="5758631781033351321">您可在此查看閱讀清單</translation> <translation id="5782227691023083829">正在翻譯...</translation> +<translation id="5797070761912323120">Google 可能會使用您的記錄,為您提供個人化的搜尋服務、廣告和其他 Google 服務</translation> <translation id="5803566855766646066">確定要捨棄這張新的信用卡嗎?</translation> <translation id="5816228676161003208">這樣您便可使用語音更快速地搜尋內容。</translation> <translation id="581659025233126501">開啟同步處理功能</translation> @@ -622,6 +624,7 @@ <translation id="7346909386216857016">好,我知道了</translation> <translation id="734758817008927353">付款卡儲存選項</translation> <translation id="7348502496356775519">加入書籤</translation> +<translation id="7352651011704765696">發生問題</translation> <translation id="7353432112255316844">驗證身分</translation> <translation id="7383797227493018512">閱讀清單</translation> <translation id="7398893703713203428">建立連結</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb index cb1e5783..416fcc74 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Discover</translation> <translation id="3175081911749765310">網路服務</translation> <translation id="3178650076442119961">上次使用時間:今天</translation> +<translation id="3181825792072797598">開啟同步處理功能</translation> <translation id="3181954750937456830">安全瀏覽 (保護你和你的裝置不受危險網站攻擊)</translation> <translation id="3184767182050912705">使用 <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> 解鎖</translation> <translation id="3196681740617426482">網站可使用 Cookie 改善瀏覽體驗,例如讓你保持登入狀態,或記住購物車中的商品。 @@ -447,6 +448,7 @@ <translation id="5738887413654608789">可讓你找到與目前周遭環境相關的網頁。</translation> <translation id="5758631781033351321">這裡會顯示你的閱讀清單</translation> <translation id="5782227691023083829">正在翻譯...</translation> +<translation id="5797070761912323120">Google 可能會使用你的歷史記錄,為你提供個人化的搜尋服務、廣告內容和其他各項 Google 服務</translation> <translation id="5803566855766646066">確定要捨棄這張新的信用卡嗎?</translation> <translation id="5816228676161003208">可讓你使用語音搜尋功能,查詢資訊更方便。</translation> <translation id="581659025233126501">開啟同步功能</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">好,我知道了</translation> <translation id="734758817008927353">卡片儲存選項</translation> <translation id="7348502496356775519">加入書籤</translation> +<translation id="7352651011704765696">發生錯誤</translation> <translation id="7353432112255316844">驗證身分</translation> <translation id="7383797227493018512">閱讀清單</translation> <translation id="7398893703713203428">建立連結</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb index 13cf474..e3573a4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -210,6 +210,7 @@ <translation id="3169472444629675720">Zitholele</translation> <translation id="3175081911749765310">Amasevisi wewebhu</translation> <translation id="3178650076442119961">Isebenza namhlanje</translation> +<translation id="3181825792072797598">Vula ukuvumelanisa</translation> <translation id="3181954750937456830">I-Safe Browsing (ivikela wena nedivayisi yakho kumasayithi ayingozi)</translation> <translation id="3184767182050912705">Vula nge-<ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation> <translation id="3196681740617426482">Amasayithi angasebenzisa amakhukhi ukuthuthukisa ukuzizwela kwakho kokuphequlula, ngokwesibonelo, ukukugcina ungene ngemvume noma ukukhumbula izinto ezikukalishi yakho yokuthenga. @@ -447,6 +448,7 @@ <translation id="5738887413654608789">Lokhu kukuvumela ukuthi uthole amakhasi ewebhu ahambisanayo asuselwa kuzindawo zakho eziseduze.</translation> <translation id="5758631781033351321">Uzothola uhlu lwakho lokufunda lapha</translation> <translation id="5782227691023083829">Iyahumusha...</translation> +<translation id="5797070761912323120">I-Google ingasebenzisa umlando wakho ukuze yenze kube ngokwakho usesho, izikhangiso, namanye amasevisi e-Google</translation> <translation id="5803566855766646066">Ingabe uqinisekile ukuthi ufuna ukulahla leli khadi elisha?</translation> <translation id="5816228676161003208">Lokhu kukuvumela ukuthi useshe ngokushesha usebenzisa izwi lakho.</translation> <translation id="581659025233126501">Vula ukuvumelanisa</translation> @@ -624,6 +626,7 @@ <translation id="7346909386216857016">Ok, ngiyezwa</translation> <translation id="734758817008927353">Izinketho zokulondoloza ikhadi</translation> <translation id="7348502496356775519">Ibhukhimakhi</translation> +<translation id="7352651011704765696">Okuthile akuhambanga kahle</translation> <translation id="7353432112255316844">Qinisekisa Ukuthi Nguwe</translation> <translation id="7383797227493018512">Uhlu lokufunda</translation> <translation id="7398893703713203428">Dala isixhumanisi</translation>
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.h b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.h index e5641f8..f3f31cd 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.h +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.h
@@ -36,6 +36,11 @@ // This property can be used only after the coordinator is started. @property(nonatomic, strong) ChromeIdentity* selectedIdentity; +// Starts the spinner and disables buttons. +- (void)startSigninSpinner; +// Stops the spinner and enables buttons. +- (void)stopSigninSpinner; + @end #endif // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_DEFAULT_ACCOUNT_CONSISTENCY_DEFAULT_ACCOUNT_COORDINATOR_H_
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.mm index 000fdcd..c7295b3 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.mm
@@ -37,6 +37,14 @@ [self.defaultAccountViewController view]; } +- (void)startSigninSpinner { + [self.defaultAccountViewController startSpinner]; +} + +- (void)stopSigninSpinner { + [self.defaultAccountViewController stopSpinner]; +} + #pragma mark - Properties - (UIViewController*)viewController {
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.h b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.h index 7c5ee03..d3592f7e 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.h +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.h
@@ -36,6 +36,11 @@ @property(nonatomic, weak) id<ConsistencyDefaultAccountActionDelegate> actionDelegate; +// Starts the spinner and disables buttons. +- (void)startSpinner; +// Stops the spinner and enables buttons. +- (void)stopSpinner; + @end #endif // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_DEFAULT_ACCOUNT_CONSISTENCY_DEFAULT_ACCOUNT_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.mm index 05712bd..60e4543 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_view_controller.mm
@@ -7,6 +7,7 @@ #import "base/strings/sys_string_conversions.h" #import "ios/chrome/browser/ui/authentication/views/identity_button_control.h" #import "ios/chrome/common/ui/util/button_util.h" +#import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/chrome/common/ui/util/pointer_interaction_util.h" #import "ios/chrome/grit/ios_chromium_strings.h" #import "ios/chrome/grit/ios_strings.h" @@ -40,11 +41,44 @@ @property(nonatomic, strong) IdentityButtonControl* identityButtonControl; // Button to confirm the default identity and sign-in. @property(nonatomic, strong) UIButton* continueAsButton; +// Title for |self.continueAsButton|. This property is needed to hide the title +// the activity indicator is shown. +@property(nonatomic, strong) NSString* continueAsTitle; +// Activity indicator on top of |self.continueAsButton|. +@property(nonatomic, strong) UIActivityIndicatorView* activityIndicatorView; @end @implementation ConsistencyDefaultAccountViewController +- (void)startSpinner { + // Add spinner. + DCHECK(!self.activityIndicatorView); + self.activityIndicatorView = [[UIActivityIndicatorView alloc] init]; + self.activityIndicatorView.translatesAutoresizingMaskIntoConstraints = NO; + self.activityIndicatorView.color = UIColor.whiteColor; + [self.continueAsButton addSubview:self.activityIndicatorView]; + AddSameCenterConstraints(self.activityIndicatorView, self.continueAsButton); + [self.activityIndicatorView startAnimating]; + // Disable buttons. + self.identityButtonControl.enabled = NO; + self.continueAsButton.enabled = NO; + [self.continueAsButton setTitle:@"" forState:UIControlStateNormal]; +} + +- (void)stopSpinner { + // Remove spinner. + DCHECK(self.activityIndicatorView); + [self.activityIndicatorView removeFromSuperview]; + self.activityIndicatorView = nil; + // Enable buttons. + self.identityButtonControl.enabled = YES; + self.continueAsButton.enabled = YES; + DCHECK(self.continueAsTitle); + [self.continueAsButton setTitle:self.continueAsTitle + forState:UIControlStateNormal]; +} + #pragma mark - UIViewController - (void)viewDidLoad { @@ -195,9 +229,10 @@ // Load the view. [self view]; } - NSString* buttonTitle = l10n_util::GetNSStringF( + self.continueAsTitle = l10n_util::GetNSStringF( IDS_IOS_SIGNIN_PROMO_CONTINUE_AS, base::SysNSStringToUTF16(givenName)); - [self.continueAsButton setTitle:buttonTitle forState:UIControlStateNormal]; + [self.continueAsButton setTitle:self.continueAsTitle + forState:UIControlStateNormal]; [self.identityButtonControl setIdentityName:fullName email:email]; }
diff --git a/ios/chrome/browser/ui/first_run/BUILD.gn b/ios/chrome/browser/ui/first_run/BUILD.gn index bf065f4..7385a3ab 100644 --- a/ios/chrome/browser/ui/first_run/BUILD.gn +++ b/ios/chrome/browser/ui/first_run/BUILD.gn
@@ -36,12 +36,6 @@ "location_permissions_view_controller.mm", "orientation_limiting_navigation_controller.h", "orientation_limiting_navigation_controller.mm", - "static_file_view_controller.h", - "static_file_view_controller.mm", - "welcome_screen_coordinator.h", - "welcome_screen_coordinator.mm", - "welcome_screen_view_controller.h", - "welcome_screen_view_controller.mm", "welcome_to_chrome_view.h", "welcome_to_chrome_view.mm", "welcome_to_chrome_view_controller.h", @@ -65,7 +59,6 @@ "//ios/chrome/app:tests_hook", "//ios/chrome/app/strings", "//ios/chrome/browser", - "//ios/chrome/browser/browser_state", "//ios/chrome/browser/crash_report", "//ios/chrome/browser/first_run", "//ios/chrome/browser/geolocation", @@ -84,8 +77,8 @@ "//ios/chrome/browser/ui/fancy_ui", "//ios/chrome/browser/ui/first_run/signin", "//ios/chrome/browser/ui/first_run/sync", - "//ios/chrome/browser/ui/icons", - "//ios/chrome/browser/ui/material_components", + "//ios/chrome/browser/ui/first_run/welcome", + "//ios/chrome/browser/ui/first_run/welcome:static_file_ui", "//ios/chrome/browser/ui/settings/resources:enterprise_icon", "//ios/chrome/browser/ui/settings/sync/utils", "//ios/chrome/browser/ui/settings/utils", @@ -98,8 +91,6 @@ "//ios/chrome/common/ui/util", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin", - "//ios/third_party/material_components_ios", - "//ios/web/common:web_view_creation_util", "//ui/base", "//ui/gfx", "//url",
diff --git a/ios/chrome/browser/ui/first_run/first_run_coordinator.mm b/ios/chrome/browser/ui/first_run/first_run_coordinator.mm index fe061fb..6813184b 100644 --- a/ios/chrome/browser/ui/first_run/first_run_coordinator.mm +++ b/ios/chrome/browser/ui/first_run/first_run_coordinator.mm
@@ -13,7 +13,7 @@ #import "ios/chrome/browser/ui/first_run/first_run_screen_type.h" #import "ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.h" #import "ios/chrome/browser/ui/first_run/sync/sync_screen_coordinator.h" -#import "ios/chrome/browser/ui/first_run/welcome_screen_coordinator.h" +#import "ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/first_run/welcome/BUILD.gn b/ios/chrome/browser/ui/first_run/welcome/BUILD.gn new file mode 100644 index 0000000..1207178 --- /dev/null +++ b/ios/chrome/browser/ui/first_run/welcome/BUILD.gn
@@ -0,0 +1,55 @@ +# 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. + +source_set("welcome") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "welcome_screen_coordinator.h", + "welcome_screen_coordinator.mm", + ] + deps = [ + ":static_file_ui", + ":welcome_ui", + "//base", + "//ios/chrome/app/strings", + "//ios/chrome/browser/main:public", + "//ios/chrome/browser/ui/coordinators:chrome_coordinators", + "//ios/chrome/browser/ui/first_run:screen_delegate", + "//ios/chrome/browser/ui/util:terms_util", + "//ui/base", + ] + frameworks = [ "UIKit.framework" ] +} + +source_set("welcome_ui") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "welcome_screen_view_controller.h", + "welcome_screen_view_controller.mm", + ] + deps = [ + "//ios/chrome/browser/ui/first_run:first_run_ui", + # "//ios/chrome/browser/ui/first_run:screen_delegate", + ] + frameworks = [ "UIKit.framework" ] +} + +source_set("static_file_ui") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "static_file_view_controller.h", + "static_file_view_controller.mm", + ] + deps = [ + "//base", + "//ios/chrome/app/strings", + "//ios/chrome/browser/browser_state", + "//ios/chrome/browser/ui/icons", + "//ios/chrome/browser/ui/material_components", + "//ios/chrome/browser/ui/util", + "//ios/chrome/common/ui/colors", + "//ios/third_party/material_components_ios", + "//ios/web/common:web_view_creation_util", + ] +}
diff --git a/ios/chrome/browser/ui/first_run/static_file_view_controller.h b/ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.h similarity index 72% rename from ios/chrome/browser/ui/first_run/static_file_view_controller.h rename to ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.h index 6eee483..99ee9ef 100644 --- a/ios/chrome/browser/ui/first_run/static_file_view_controller.h +++ b/ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_STATIC_FILE_VIEW_CONTROLLER_H_ -#define IOS_CHROME_BROWSER_UI_FIRST_RUN_STATIC_FILE_VIEW_CONTROLLER_H_ +#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_STATIC_FILE_VIEW_CONTROLLER_H_ +#define IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_STATIC_FILE_VIEW_CONTROLLER_H_ #import <UIKit/UIKit.h> @@ -20,4 +20,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_FIRST_RUN_STATIC_FILE_VIEW_CONTROLLER_H_ +#endif // IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_STATIC_FILE_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/first_run/static_file_view_controller.mm b/ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.mm similarity index 97% rename from ios/chrome/browser/ui/first_run/static_file_view_controller.mm rename to ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.mm index b61597a..3138157 100644 --- a/ios/chrome/browser/ui/first_run/static_file_view_controller.mm +++ b/ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ios/chrome/browser/ui/first_run/static_file_view_controller.h" +#include "ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.h" #import <WebKit/WebKit.h>
diff --git a/ios/chrome/browser/ui/first_run/welcome_screen_coordinator.h b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.h similarity index 80% rename from ios/chrome/browser/ui/first_run/welcome_screen_coordinator.h rename to ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.h index d6b14e8..71e413b9 100644 --- a/ios/chrome/browser/ui/first_run/welcome_screen_coordinator.h +++ b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_SCREEN_COORDINATOR_H_ -#define IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_SCREEN_COORDINATOR_H_ +#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_WELCOME_SCREEN_COORDINATOR_H_ +#define IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_WELCOME_SCREEN_COORDINATOR_H_ #import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h" @@ -26,4 +26,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_SCREEN_COORDINATOR_H_ +#endif // IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_WELCOME_SCREEN_COORDINATOR_H_
diff --git a/ios/chrome/browser/ui/first_run/welcome_screen_coordinator.mm b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.mm similarity index 92% rename from ios/chrome/browser/ui/first_run/welcome_screen_coordinator.mm rename to ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.mm index f9594b5c..4673c060 100644 --- a/ios/chrome/browser/ui/first_run/welcome_screen_coordinator.mm +++ b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.mm
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/first_run/welcome_screen_coordinator.h" +#import "ios/chrome/browser/ui/first_run/welcome/welcome_screen_coordinator.h" #include "base/mac/bundle_locations.h" #include "base/strings/sys_string_conversions.h" #include "ios/chrome/browser/main/browser.h" -#include "ios/chrome/browser/ui/first_run/static_file_view_controller.h" -#import "ios/chrome/browser/ui/first_run/welcome_screen_view_controller.h" +#include "ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.h" +#include "ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.h" #include "ios/chrome/browser/ui/util/terms_util.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/first_run/welcome_screen_view_controller.h b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.h similarity index 73% rename from ios/chrome/browser/ui/first_run/welcome_screen_view_controller.h rename to ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.h index 6aa872e..0f80c20 100644 --- a/ios/chrome/browser/ui/first_run/welcome_screen_view_controller.h +++ b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_SCREEN_VIEW_CONTROLLER_H_ -#define IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_SCREEN_VIEW_CONTROLLER_H_ +#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_WELCOME_SCREEN_VIEW_CONTROLLER_H_ +#define IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_WELCOME_SCREEN_VIEW_CONTROLLER_H_ #import "ios/chrome/browser/ui/first_run/first_run_screen_view_controller.h" @@ -23,4 +23,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_SCREEN_VIEW_CONTROLLER_H_ +#endif // IOS_CHROME_BROWSER_UI_FIRST_RUN_WELCOME_WELCOME_SCREEN_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/first_run/welcome_screen_view_controller.mm b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.mm similarity index 78% rename from ios/chrome/browser/ui/first_run/welcome_screen_view_controller.mm rename to ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.mm index f59234d..16e72f9 100644 --- a/ios/chrome/browser/ui/first_run/welcome_screen_view_controller.mm +++ b/ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.mm
@@ -2,9 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/first_run/welcome_screen_view_controller.h" - -#import "ios/chrome/browser/ui/first_run/first_run_screen_delegate.h" +#import "ios/chrome/browser/ui/first_run/welcome/welcome_screen_view_controller.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm index 39a9b34..0f04206 100644 --- a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm +++ b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
@@ -28,7 +28,7 @@ #import "ios/chrome/browser/ui/first_run/first_run_constants.h" #include "ios/chrome/browser/ui/first_run/first_run_util.h" #import "ios/chrome/browser/ui/first_run/location_permissions_field_trial.h" -#include "ios/chrome/browser/ui/first_run/static_file_view_controller.h" +#include "ios/chrome/browser/ui/first_run/welcome/static_file_view_controller.h" #import "ios/chrome/browser/ui/first_run/welcome_to_chrome_view.h" #import "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/browser/ui/util/terms_util.h"
diff --git a/ios/chrome/browser/ui/history/BUILD.gn b/ios/chrome/browser/ui/history/BUILD.gn index 28b6a56..61ee804 100644 --- a/ios/chrome/browser/ui/history/BUILD.gn +++ b/ios/chrome/browser/ui/history/BUILD.gn
@@ -3,10 +3,7 @@ # found in the LICENSE file. source_set("history") { - configs += [ - "//build/config/compiler:enable_arc", - "//build/config/ios:disable_implicit_retain_self_warning", - ] + configs += [ "//build/config/compiler:enable_arc" ] sources = [ "history_coordinator.h", "history_coordinator.mm",
diff --git a/ios/chrome/browser/ui/history/history_coordinator.mm b/ios/chrome/browser/ui/history/history_coordinator.mm index 5634b4c..489a55a 100644 --- a/ios/chrome/browser/ui/history/history_coordinator.mm +++ b/ios/chrome/browser/ui/history/history_coordinator.mm
@@ -134,33 +134,31 @@ self.sharingCoordinator = nil; if (self.historyNavigationController) { - void (^dismissHistoryNavigation)(void) = ^void() { - // Make sure to stop - // |self.historyTableViewController.contextMenuCoordinator| before - // dismissing, or |self.historyNavigationController| will dismiss that - // instead of itself. - [self.historyTableViewController.contextMenuCoordinator stop]; - [self.historyNavigationController - dismissViewControllerAnimated:YES - completion:completionHandler]; - self.historyNavigationController = nil; - _browsingHistoryDriver = nullptr; - _browsingHistoryService = nullptr; - }; if (self.historyClearBrowsingDataCoordinator) { - [self.historyClearBrowsingDataCoordinator stopWithCompletion:^() { - dismissHistoryNavigation(); - self.historyClearBrowsingDataCoordinator = nil; + [self.historyClearBrowsingDataCoordinator stopWithCompletion:^{ + [self dismissHistoryNavigationWithCompletion:completionHandler]; }]; - } else { - dismissHistoryNavigation(); + [self dismissHistoryNavigationWithCompletion:completionHandler]; } } else if (completionHandler) { completionHandler(); } } +- (void)dismissHistoryNavigationWithCompletion:(ProceduralBlock)completion { + // Make sure to stop |self.historyTableViewController.contextMenuCoordinator| + // before dismissing, or |self.historyNavigationController| will dismiss that + // instead of itself. + [self.historyTableViewController.contextMenuCoordinator stop]; + [self.historyNavigationController dismissViewControllerAnimated:YES + completion:completion]; + self.historyNavigationController = nil; + self.historyClearBrowsingDataCoordinator = nil; + _browsingHistoryDriver = nullptr; + _browsingHistoryService = nullptr; +} + #pragma mark - HistoryUIDelegate - (void)dismissHistoryWithCompletion:(ProceduralBlock)completionHandler {
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb index c48e574..eee4fce7f 100644 --- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb +++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="as"> <translation id="1613742542373525524">APPLICATION_NAMEএ এই লিংকটো নিয়ন্ত্ৰণ কৰিব নোৱাৰে৷</translation> <translation id="4655616150233109325">Chromeত খোলক</translation> +<translation id="601731541915429022">পঢ়াৰ সূচীত যোগ দিয়ক</translation> <translation id="6930009216791986919">বুকমার্কত যোগ কৰক</translation> <translation id="6965382102122355670">ঠিক আছে</translation> <translation id="8258999165172757081">যোগ কৰা হ’ল</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb index 525ec97..e0d30c4 100644 --- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb +++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="or"> <translation id="1613742542373525524">APPLICATION_NAME ଏହି ଲିଙ୍କ୍କୁ ପରିଚାଳନା କରିପାରିବ ନାହିଁ।</translation> <translation id="4655616150233109325">Chromeରେ ଖୋଲନ୍ତୁ</translation> +<translation id="601731541915429022">ପଢ଼ିବା ତାଲିକାରେ ଯୋଗ କରନ୍ତୁ</translation> <translation id="6930009216791986919">ବୁକମାର୍କଗୁଡ଼ିକରେ ଯୋଗ କରନ୍ତୁ</translation> <translation id="6965382102122355670">ଓକେ ବଟନ୍</translation> <translation id="8258999165172757081">ଯୋଗ କରାଯାଇଛି</translation>
diff --git a/media/capture/video/linux/camera_config_chromeos.cc b/media/capture/video/linux/camera_config_chromeos.cc index cf4473b..fbfda27 100644 --- a/media/capture/video/linux/camera_config_chromeos.cc +++ b/media/capture/video/linux/camera_config_chromeos.cc
@@ -12,8 +12,6 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/strings/string_piece.h" - namespace media { namespace {
diff --git a/media/capture/video/mac/video_capture_device_avfoundation_mac.mm b/media/capture/video/mac/video_capture_device_avfoundation_mac.mm index 1148b4d..4065c119 100644 --- a/media/capture/video/mac/video_capture_device_avfoundation_mac.mm +++ b/media/capture/video/mac/video_capture_device_avfoundation_mac.mm
@@ -369,14 +369,15 @@ str << "]"; VLOG(1) << "Configuring scaled resolutions: " << str.str(); _scaledFrameTransformers.clear(); - for (const auto& resolution : resolutions) { + for (size_t i = 0; i < resolutions.size(); ++i) { + DCHECK(i == 0 || resolutions[i - 1].height() > resolutions[i].height()); // Configure the transformer to and from NV12 pixel buffers - we only want // to pay scaling costs, not conversion costs. auto scaledFrameTransformer = media::SampleBufferTransformer::Create(); scaledFrameTransformer->Reconfigure( media::SampleBufferTransformer:: kBestTransformerForPixelBufferToNv12Output, - kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, resolution, + kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, resolutions[i], kPixelBufferPoolSize); _scaledFrameTransformers.push_back(std::move(scaledFrameTransformer)); } @@ -768,8 +769,10 @@ scaledFrameSize == captureFormat.frame_size) { continue; } + CVPixelBufferRef bufferToScale = + !scaledPixelBuffers.empty() ? scaledPixelBuffers.back() : pixelBuffer; base::ScopedCFTypeRef<CVPixelBufferRef> scaledPixelBuffer = - scaledFrameTransformer->Transform(pixelBuffer); + scaledFrameTransformer->Transform(bufferToScale); if (!scaledPixelBuffer) { LOG(ERROR) << "Failed to downscale frame, skipping resolution " << scaledFrameSize.ToString();
diff --git a/media/capture/video/video_capture_feedback.cc b/media/capture/video/video_capture_feedback.cc index 692d4d02..013a5ea 100644 --- a/media/capture/video/video_capture_feedback.cc +++ b/media/capture/video/video_capture_feedback.cc
@@ -4,6 +4,7 @@ #include "media/capture/video/video_capture_feedback.h" +#include <algorithm> #include <cmath> #include "base/logging.h" @@ -15,6 +16,11 @@ // Arbitrary limit above what is considered a reasonable request. constexpr size_t kCombinedMappedSizesCountLimit = 6; +void SortSizesDescending(std::vector<gfx::Size>& sizes) { + std::sort(sizes.begin(), sizes.end(), + [](gfx::Size& a, gfx::Size& b) { return a.height() > b.height(); }); +} + } // namespace VideoCaptureFeedback::VideoCaptureFeedback() = default; @@ -69,6 +75,7 @@ } mapped_sizes.push_back(mapped_size); } + SortSizesDescending(mapped_sizes); } bool VideoCaptureFeedback::Empty() const { @@ -102,6 +109,7 @@ VideoCaptureFeedback& VideoCaptureFeedback::WithMappedSizes( std::vector<gfx::Size> mapped_sizes) { this->mapped_sizes = std::move(mapped_sizes); + SortSizesDescending(mapped_sizes); return *this; }
diff --git a/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc b/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc index 311da8e..d31f6daf 100644 --- a/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc +++ b/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
@@ -381,10 +381,11 @@ sync_calls->pending_responses.push_back(response.get()); } + SyncCallRestrictions::AssertSyncCallAllowed(); + if (allow_interrupt) { // In the common case where interrupts are allowed, we watch cooperatively // with other potential endpoints on the same thread. - SyncCallRestrictions::AssertSyncCallAllowed(); bool signaled = false; auto set_flag = [](bool* flag) { *flag = true; }; SyncEventWatcher watcher(&response->event,
diff --git a/mojo/public/cpp/bindings/lib/sync_call_restrictions.cc b/mojo/public/cpp/bindings/lib/sync_call_restrictions.cc index 0188933a..b6cb0a7 100644 --- a/mojo/public/cpp/bindings/lib/sync_call_restrictions.cc +++ b/mojo/public/cpp/bindings/lib/sync_call_restrictions.cc
@@ -11,6 +11,7 @@ #include "base/macros.h" #include "base/no_destructor.h" #include "base/synchronization/lock.h" +#include "base/threading/sequence_local_storage_map.h" #include "base/threading/sequence_local_storage_slot.h" #include "mojo/public/c/system/core.h" @@ -50,12 +51,23 @@ return count->GetOrCreateValue(); } +// Sometimes sync calls need to be made while sequence-local storage is not +// initialized. In particular this can occur during thread tear-down while TLS +// objects (including SequenceLocalStorageMap itself) are being destroyed. We +// can't track a sequence-local policy in such cases, so we don't enforce one. +bool SyncCallRestrictionsEnforceable() { + return base::internal::SequenceLocalStorageMap::IsSetForCurrentThread(); +} + } // namespace // static void SyncCallRestrictions::AssertSyncCallAllowed() { - if (GetGlobalSettings().sync_call_allowed_by_default()) + if (GetGlobalSettings().sync_call_allowed_by_default() || + !SyncCallRestrictionsEnforceable()) { return; + } + if (GetSequenceLocalScopedAllowCount() > 0) return; @@ -73,11 +85,17 @@ // static void SyncCallRestrictions::IncreaseScopedAllowCount() { + if (!SyncCallRestrictionsEnforceable()) + return; + ++GetSequenceLocalScopedAllowCount(); } // static void SyncCallRestrictions::DecreaseScopedAllowCount() { + if (!SyncCallRestrictionsEnforceable()) + return; + DCHECK_GT(GetSequenceLocalScopedAllowCount(), 0u); --GetSequenceLocalScopedAllowCount(); }
diff --git a/net/base/hex_utils.cc b/net/base/hex_utils.cc index 03a3c2a..2e241d3e5 100644 --- a/net/base/hex_utils.cc +++ b/net/base/hex_utils.cc
@@ -10,6 +10,13 @@ namespace net { +std::string HexDecode(base::StringPiece hex) { + std::string output; + const bool success = base::HexStringToString(hex, &output); + DCHECK(success); + return output; +} + std::string HexDump(base::StringPiece input) { const int kBytesPerLine = 16; // Maximum bytes dumped per line. int offset = 0;
diff --git a/net/base/hex_utils.h b/net/base/hex_utils.h index b09be9b8..c33c24c 100644 --- a/net/base/hex_utils.h +++ b/net/base/hex_utils.h
@@ -7,11 +7,20 @@ #include <string> +#include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "net/base/net_export.h" namespace net { +// Use base::HexEncode() for encoding to hex representation. + +// Decode a hex representation like "666f6f" to a string like "foo". Crashes on +// invalid input in debug builds, therefore it must only be used on sanitized +// input (like a constant literal). If validity of input needs to be checked or +// partial decoding is desired, use base::HexStringToString() instead. +NET_EXPORT_PRIVATE std::string HexDecode(base::StringPiece hex); + // Return a std::string containing hex and ASCII representations of the binary // buffer |input|, with offsets at the beginning of each line, in the style of // hexdump. Non-printable characters will be shown as '.' in the ASCII output.
diff --git a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc index 786c670..6ea2bb3 100644 --- a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc +++ b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
@@ -544,12 +544,12 @@ "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R" "m9yVVJMKHVybCwgaG9zdCkgewogIGlmIChob3N0ID09ICdmb29iYXIuY29tJykKICAgIHJl" "dHVybiAnUFJPWFkgYmxhY2tob2xlOjgwJzsKICByZXR1cm4gJ0RJUkVDVCc7Cn0="; - const char kPacScript[] = - "function FindProxyForURL(url, host) {\n" - " if (host == 'foobar.com')\n" - " return 'PROXY blackhole:80';\n" - " return 'DIRECT';\n" - "}"; + const char16_t kPacScript[] = + u"function FindProxyForURL(url, host) {\n" + u" if (host == 'foobar.com')\n" + u" return 'PROXY blackhole:80';\n" + u" return 'DIRECT';\n" + u"}"; // Test fetching a "data:"-url containing a base64 encoded PAC script. { @@ -559,7 +559,7 @@ int result = pac_fetcher->Fetch(url, &text, callback.callback(), TRAFFIC_ANNOTATION_FOR_TESTS); EXPECT_THAT(result, IsOk()); - EXPECT_EQ(ASCIIToUTF16(kPacScript), text); + EXPECT_EQ(kPacScript, text); } const char kEncodedUrlBroken[] =
diff --git a/net/quic/quic_client_session_cache_unittests.cc b/net/quic/quic_client_session_cache_unittests.cc index 32ecc7d..27098da 100644 --- a/net/quic/quic_client_session_cache_unittests.cc +++ b/net/quic/quic_client_session_cache_unittests.cc
@@ -9,7 +9,7 @@ #include "base/test/task_environment.h" #include "base/time/time.h" #include "build/build_config.h" -#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" +#include "net/base/hex_utils.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/boringssl/src/include/openssl/ssl.h" @@ -128,7 +128,7 @@ protected: bssl::UniquePtr<SSL_SESSION> NewSSLSession() { - std::string cached_session = absl::HexStringToBytes(kCachedSession); + std::string cached_session = HexDecode(kCachedSession); SSL_SESSION* session = SSL_SESSION_from_bytes( reinterpret_cast<const uint8_t*>(cached_session.data()), cached_session.size(), ssl_ctx_.get());
diff --git a/net/spdy/alps_decoder_test.cc b/net/spdy/alps_decoder_test.cc index 1c30710..d3bf78c 100644 --- a/net/spdy/alps_decoder_test.cc +++ b/net/spdy/alps_decoder_test.cc
@@ -4,8 +4,7 @@ #include "net/spdy/alps_decoder.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_piece.h" +#include "net/base/hex_utils.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -17,13 +16,6 @@ namespace net { namespace { -std::string HexDecode(base::StringPiece hex) { - std::string output; - bool success = base::HexStringToString(hex, &output); - DCHECK(success); - return output; -} - TEST(AlpsDecoderTest, EmptyInput) { AlpsDecoder decoder; EXPECT_THAT(decoder.GetAcceptCh(), IsEmpty());
diff --git a/net/spdy/fuzzing/hpack_fuzz_util_test.cc b/net/spdy/fuzzing/hpack_fuzz_util_test.cc index 18e324e..8553ad7 100644 --- a/net/spdy/fuzzing/hpack_fuzz_util_test.cc +++ b/net/spdy/fuzzing/hpack_fuzz_util_test.cc
@@ -11,7 +11,7 @@ #include "base/files/file_util.h" #include "base/path_service.h" #include "base/stl_util.h" -#include "net/third_party/quiche/src/spdy/platform/api/spdy_string_utils.h" +#include "net/base/hex_utils.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -100,8 +100,7 @@ TEST(HpackFuzzUtilTest, PassValidInputThroughAllStages) { // Example lifted from HpackDecoderTest.SectionD4RequestHuffmanExamples. - std::string input = - absl::HexStringToBytes("828684418cf1e3c2e5f23a6ba0ab90f4ff"); + std::string input = net::HexDecode("828684418cf1e3c2e5f23a6ba0ab90f4ff"); HpackFuzzUtil::FuzzerContext context; HpackFuzzUtil::InitializeFuzzerContext(&context);
diff --git a/net/spdy/spdy_session_unittest.cc b/net/spdy/spdy_session_unittest.cc index 75cd731..db8a513 100644 --- a/net/spdy/spdy_session_unittest.cc +++ b/net/spdy/spdy_session_unittest.cc
@@ -95,13 +95,6 @@ return g_time_now; } -std::string HexDecode(base::StringPiece hex) { - std::string output; - bool success = base::HexStringToString(hex, &output); - DCHECK(success); - return output; -} - class MockRequireCTDelegate : public TransportSecurityState::RequireCTDelegate { public: MOCK_METHOD3(IsCTRequiredForHost,
diff --git a/net/test/ct_test_util.cc b/net/test/ct_test_util.cc index 3ca286b..c8c68e6 100644 --- a/net/test/ct_test_util.cc +++ b/net/test/ct_test_util.cc
@@ -163,13 +163,6 @@ "d3"; size_t kSampleSTHTreeSize = 21u; -std::string HexDecode(base::StringPiece input) { - std::string result; - if (!base::HexStringToString(input, &result)) - result.clear(); - return result; -} - } // namespace void GetX509CertSignedEntry(SignedEntryData* entry) {
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 4bd7d18e..c57f8c5 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc
@@ -4697,7 +4697,9 @@ // First and second pieces of information logged by delegates to URLRequests. const char kFirstDelegateInfo[] = "Wonderful delegate"; +const char16_t kFirstDelegateInfo16[] = u"Wonderful delegate"; const char kSecondDelegateInfo[] = "Exciting delegate"; +const char16_t kSecondDelegateInfo16[] = u"Exciting delegate"; // Logs delegate information to a URLRequest. The first string is logged // synchronously on Start(), using DELEGATE_INFO_DEBUG_ONLY. The second is @@ -4780,7 +4782,7 @@ url_request_->LogBlockedBy(kFirstDelegateInfo); LoadStateWithParam load_state = url_request_->GetLoadState(); EXPECT_EQ(expected_first_load_state_, load_state.state); - EXPECT_NE(ASCIIToUTF16(kFirstDelegateInfo), load_state.param); + EXPECT_NE(kFirstDelegateInfo16, load_state.param); base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&AsyncDelegateLogger::LogSecondDelegate, this)); @@ -4791,9 +4793,9 @@ LoadStateWithParam load_state = url_request_->GetLoadState(); EXPECT_EQ(expected_second_load_state_, load_state.state); if (expected_second_load_state_ == LOAD_STATE_WAITING_FOR_DELEGATE) { - EXPECT_EQ(ASCIIToUTF16(kSecondDelegateInfo), load_state.param); + EXPECT_EQ(kSecondDelegateInfo16, load_state.param); } else { - EXPECT_NE(ASCIIToUTF16(kSecondDelegateInfo), load_state.param); + EXPECT_NE(kSecondDelegateInfo16, load_state.param); } base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&AsyncDelegateLogger::LogComplete, this));
diff --git a/printing/printing_utils.cc b/printing/printing_utils.cc index a09e362..eb59fd4 100644 --- a/printing/printing_utils.cc +++ b/printing/printing_utils.cc
@@ -82,7 +82,7 @@ int32_t width = 0; int32_t height = 0; UErrorCode error = U_ZERO_ERROR; - ulocdata_getPaperSize(locale.as_string().c_str(), &height, &width, &error); + ulocdata_getPaperSize(std::string(locale).c_str(), &height, &width, &error); if (error > U_ZERO_ERROR) { // If the call failed, assume Letter paper size. LOG(WARNING) << "ulocdata_getPaperSize failed, using ISO A4 Paper, error: "
diff --git a/remoting/protocol/video_channel_state_observer.h b/remoting/protocol/video_channel_state_observer.h index 39b61be..86beae1 100644 --- a/remoting/protocol/video_channel_state_observer.h +++ b/remoting/protocol/video_channel_state_observer.h
@@ -6,6 +6,8 @@ #define REMOTING_PROTOCOL_VIDEO_CHANNEL_STATE_OBSERVER_H_ #include "base/time/time.h" +#include "remoting/codec/webrtc_video_encoder.h" +#include "third_party/webrtc/api/video_codecs/video_encoder.h" namespace remoting { namespace protocol { @@ -20,6 +22,22 @@ virtual void OnTargetBitrateChanged(int bitrate_kbps) = 0; virtual void OnRttUpdate(base::TimeDelta rtt) = 0; + // Called when the encoder has finished encoding a frame, and before it is + // passed to WebRTC's registered callback. |frame| is non-const so that + // WebrtcVideoStream can add timestamps to it before sending. + // TODO(crbug.com/1192865): Make |frame| const when standard encoding pipeline + // is implemented. + virtual void OnFrameEncoded(WebrtcVideoEncoder::EncodeResult encode_result, + WebrtcVideoEncoder::EncodedFrame* frame) = 0; + + // Called after the encoded frame is sent via the WebRTC registered callback. + // The result contains the frame ID assigned by WebRTC if successfully sent. + // This is only called if the encoder successfully returned a non-null + // frame. |result| is the result returned by the registered callback. + virtual void OnEncodedFrameSent( + webrtc::EncodedImageCallback::Result result, + const WebrtcVideoEncoder::EncodedFrame& frame) = 0; + protected: virtual ~VideoChannelStateObserver() = default; };
diff --git a/remoting/protocol/webrtc_frame_scheduler.h b/remoting/protocol/webrtc_frame_scheduler.h index 72eb25b..21a84bd 100644 --- a/remoting/protocol/webrtc_frame_scheduler.h +++ b/remoting/protocol/webrtc_frame_scheduler.h
@@ -37,12 +37,6 @@ virtual bool OnFrameCaptured(const webrtc::DesktopFrame* frame, WebrtcVideoEncoder::FrameParams* params_out) = 0; - // Called after a frame has been encoded and passed to the sender. - // |encoded_frame| may be nullptr. If |frame_stats| is not null then sets - // send_pending_delay, rtt_estimate and bandwidth_estimate_kbps fields. - virtual void OnFrameEncoded( - const WebrtcVideoEncoder::EncodedFrame* encoded_frame) = 0; - // Writes the following bandwidth-related statistics to |frame_stats_out|: // * bandwidth_estimate_kbps // * rtt_estimate
diff --git a/remoting/protocol/webrtc_frame_scheduler_simple.cc b/remoting/protocol/webrtc_frame_scheduler_simple.cc index 7653497..f1f2d3a 100644 --- a/remoting/protocol/webrtc_frame_scheduler_simple.cc +++ b/remoting/protocol/webrtc_frame_scheduler_simple.cc
@@ -211,7 +211,8 @@ } void WebrtcFrameSchedulerSimple::OnFrameEncoded( - const WebrtcVideoEncoder::EncodedFrame* encoded_frame) { + WebrtcVideoEncoder::EncodeResult encode_result, + WebrtcVideoEncoder::EncodedFrame* encoded_frame) { DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(frame_pending_); frame_pending_ = false; @@ -240,6 +241,10 @@ bandwidth_estimator_->OnSendingFrame(*encoded_frame); } +void WebrtcFrameSchedulerSimple::OnEncodedFrameSent( + webrtc::EncodedImageCallback::Result result, + const WebrtcVideoEncoder::EncodedFrame& frame) {} + void WebrtcFrameSchedulerSimple::GetSchedulerStats( HostFrameStats& frame_stats_out) const { frame_stats_out.send_pending_delay = send_pending_delay_;
diff --git a/remoting/protocol/webrtc_frame_scheduler_simple.h b/remoting/protocol/webrtc_frame_scheduler_simple.h index 5c7debf..b9d8140 100644 --- a/remoting/protocol/webrtc_frame_scheduler_simple.h +++ b/remoting/protocol/webrtc_frame_scheduler_simple.h
@@ -37,14 +37,17 @@ void OnKeyFrameRequested() override; void OnTargetBitrateChanged(int bitrate_kbps) override; void OnRttUpdate(base::TimeDelta rtt) override; + void OnFrameEncoded(WebrtcVideoEncoder::EncodeResult encode_result, + WebrtcVideoEncoder::EncodedFrame* encoded_frame) override; + void OnEncodedFrameSent( + webrtc::EncodedImageCallback::Result result, + const WebrtcVideoEncoder::EncodedFrame& frame) override; // WebrtcFrameScheduler implementation. void Start(const base::RepeatingClosure& capture_callback) override; void Pause(bool pause) override; bool OnFrameCaptured(const webrtc::DesktopFrame* frame, WebrtcVideoEncoder::FrameParams* params_out) override; - void OnFrameEncoded( - const WebrtcVideoEncoder::EncodedFrame* encoded_frame) override; void GetSchedulerStats(HostFrameStats& frame_stats_out) const override; // Allows unit-tests to provide a mock clock.
diff --git a/remoting/protocol/webrtc_frame_scheduler_unittest.cc b/remoting/protocol/webrtc_frame_scheduler_unittest.cc index bcd972c6..6b815d23 100644 --- a/remoting/protocol/webrtc_frame_scheduler_unittest.cc +++ b/remoting/protocol/webrtc_frame_scheduler_unittest.cc
@@ -52,7 +52,8 @@ WebrtcVideoEncoder::EncodedFrame encoded; encoded.key_frame = out_params.key_frame; encoded.data = 'X'; - scheduler_->OnFrameEncoded(&encoded); + scheduler_->OnFrameEncoded(WebrtcVideoEncoder::EncodeResult::SUCCEEDED, + &encoded); scheduler_->GetSchedulerStats(frame_stats_); } }
diff --git a/remoting/protocol/webrtc_video_stream.cc b/remoting/protocol/webrtc_video_stream.cc index b8bb292..d2d90d4 100644 --- a/remoting/protocol/webrtc_video_stream.cc +++ b/remoting/protocol/webrtc_video_stream.cc
@@ -251,8 +251,8 @@ if (encoder_) { current_frame_stats_->encode_started_time = base::TimeTicks::Now(); encoder_->Encode(std::move(frame), frame_params, - base::BindOnce(&WebrtcVideoStream::OnFrameEncoded, - base::Unretained(this))); + base::BindOnce(&WebrtcVideoStream::EncodeCallback, + weak_factory_.GetWeakPtr())); } } @@ -279,7 +279,7 @@ void WebrtcVideoStream::OnFrameEncoded( WebrtcVideoEncoder::EncodeResult encode_result, - std::unique_ptr<WebrtcVideoEncoder::EncodedFrame> frame) { + WebrtcVideoEncoder::EncodedFrame* frame) { DCHECK(thread_checker_.CalledOnValidThread()); current_frame_stats_->encode_ended_time = base::TimeTicks::Now(); @@ -294,7 +294,7 @@ current_frame_stats_->frame_quality = (63 - frame->quantizer) * 100 / 63; } - scheduler_->OnFrameEncoded(frame.get()); + scheduler_->OnFrameEncoded(encode_result, frame); if (encode_result != WebrtcVideoEncoder::EncodeResult::SUCCEEDED) { LOG(ERROR) << "Video encoder returns error " @@ -319,6 +319,16 @@ frame->encode_finish = current_frame_stats_->encode_ended_time; webrtc::EncodedImageCallback::Result result = webrtc_transport_->video_encoder_factory()->SendEncodedFrame(*frame); + + // Directly call the handler to send the FrameStats message. + // TODO(crbug.com/1192865): Remove this when standard encoding pipeline is + // implemented - the encoder will be responsible for sending the frame. + OnEncodedFrameSent(result, *frame); +} + +void WebrtcVideoStream::OnEncodedFrameSent( + webrtc::EncodedImageCallback::Result result, + const WebrtcVideoEncoder::EncodedFrame& frame) { if (result.error != webrtc::EncodedImageCallback::Result::OK) { // TODO(sergeyu): Stop the stream. LOG(ERROR) << "Failed to send video frame."; @@ -332,7 +342,7 @@ // Get bandwidth, RTT and send_pending_delay into |stats|. scheduler_->GetSchedulerStats(stats); - stats.frame_size = frame ? frame->data.size() : 0; + stats.frame_size = frame.data.size(); if (!current_frame_stats_->input_event_timestamps.is_null()) { stats.capture_pending_delay = @@ -364,6 +374,12 @@ } } +void WebrtcVideoStream::EncodeCallback( + WebrtcVideoEncoder::EncodeResult encode_result, + std::unique_ptr<WebrtcVideoEncoder::EncodedFrame> frame) { + OnFrameEncoded(encode_result, frame.get()); +} + void WebrtcVideoStream::OnEncoderCreated( webrtc::VideoCodecType codec_type, const webrtc::SdpVideoFormat::Parameters& parameters) {
diff --git a/remoting/protocol/webrtc_video_stream.h b/remoting/protocol/webrtc_video_stream.h index 5b0e35ec..9a61fd2 100644 --- a/remoting/protocol/webrtc_video_stream.h +++ b/remoting/protocol/webrtc_video_stream.h
@@ -63,6 +63,11 @@ void OnKeyFrameRequested() override; void OnTargetBitrateChanged(int bitrate_kbps) override; void OnRttUpdate(base::TimeDelta rtt) override; + void OnFrameEncoded(WebrtcVideoEncoder::EncodeResult encode_result, + WebrtcVideoEncoder::EncodedFrame* frame) override; + void OnEncodedFrameSent( + webrtc::EncodedImageCallback::Result result, + const WebrtcVideoEncoder::EncodedFrame& frame) override; private: struct FrameStats; @@ -78,7 +83,12 @@ // Called by the |scheduler_|. void CaptureNextFrame(); - void OnFrameEncoded(WebrtcVideoEncoder::EncodeResult encode_result, + // Callback passed to encoder_->Encode(). This just passes the parameters to + // OnFrameEncoded(). + // TODO(crbug.com/1192865): Remove this (and OnEncoderCreated() below) when + // standard encoding pipeline is implemented - this object will no longer + // drive the encoder. + void EncodeCallback(WebrtcVideoEncoder::EncodeResult encode_result, std::unique_ptr<WebrtcVideoEncoder::EncodedFrame> frame); void OnEncoderCreated(webrtc::VideoCodecType codec_type,
diff --git a/services/device/serial/serial_device_enumerator_win.cc b/services/device/serial/serial_device_enumerator_win.cc index f638023..25fc1db 100644 --- a/services/device/serial/serial_device_enumerator_win.cc +++ b/services/device/serial/serial_device_enumerator_win.cc
@@ -11,8 +11,6 @@ #include <setupapi.h> #include <stdint.h> -#include "base/strings/string_piece.h" - #define INITGUID #include <devpkey.h> @@ -26,6 +24,7 @@ #include "base/scoped_generic.h" #include "base/sequence_checker.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h"
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom index 7fe458d..e24ec4c 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom
@@ -228,7 +228,7 @@ // used if |proxy_resolver_factory| is set. Note: optional because some tests // build their own NetworkContextParams and don't need a DHCP WPAD client. [EnableIf=is_chromeos_ash] - DhcpWpadUrlClient? dhcp_wpad_url_client; + pending_remote<DhcpWpadUrlClient>? dhcp_wpad_url_client; // Points to the cookie file. An in-memory cookie store is used if it's empty. mojo_base.mojom.FilePath? cookie_path;
diff --git a/skia/ext/skia_utils_ios.mm b/skia/ext/skia_utils_ios.mm index 30ae077b..faa1e57 100644 --- a/skia/ext/skia_utils_ios.mm +++ b/skia/ext/skia_utils_ios.mm
@@ -117,7 +117,7 @@ CGSize size = CGSizeMake(CGImageGetWidth(cg_image), CGImageGetHeight(cg_image)); - if (size.width > max_size || size.width >= max_size) + if (size.width > max_size || size.height > max_size) continue; if (size.width >= 88 && size.height >= 88 && skip_images_88x88_or_larger) continue;
diff --git a/skia/ext/skia_utils_ios_unittest.mm b/skia/ext/skia_utils_ios_unittest.mm index 7b27d138..b899043 100644 --- a/skia/ext/skia_utils_ios_unittest.mm +++ b/skia/ext/skia_utils_ios_unittest.mm
@@ -146,6 +146,14 @@ EXPECT_EQ(16, bitmaps[0].height()); } +TEST_F(SkiaUtilsIosTest, ImageSizeOnTheEdge) { + std::vector<SkBitmap> bitmaps(skia::ImageDataToSkBitmapsWithMaxSize( + StringToNSData(kIcoEncodedData), 16)); + EXPECT_EQ(1UL, bitmaps.size()); + EXPECT_EQ(16, bitmaps[0].width()); + EXPECT_EQ(16, bitmaps[0].height()); +} + TEST_F(SkiaUtilsIosTest, InvalidDataFailure) { std::vector<SkBitmap> bitmaps1(skia::ImageDataToSkBitmaps(InvalidData(1))); EXPECT_EQ(0UL, bitmaps1.size());
diff --git a/sql/recover_module/parsing.cc b/sql/recover_module/parsing.cc index 383ebe27..56ec7c00 100644 --- a/sql/recover_module/parsing.cc +++ b/sql/recover_module/parsing.cc
@@ -192,7 +192,7 @@ result.is_non_null = true; } - result.name = column_name.as_string(); + result.name = std::string(column_name); return result; } @@ -212,7 +212,7 @@ base::StringPiece db_name = sql.substr(0, separator_pos); base::StringPiece table_name = sql.substr(separator_pos + 1); - return TargetTableSpec{db_name.as_string(), table_name.as_string()}; + return TargetTableSpec{std::string(db_name), std::string(table_name)}; } } // namespace recover
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 3f6816d2..5026d3b 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -5256,24 +5256,6 @@ ] } ], - "PartitionAllocThreadCachePeriodicPurge": [ - { - "platforms": [ - "android", - "android_webview", - "linux", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PartitionAllocThreadCachePeriodicPurge" - ] - } - ] - } - ], "PartitionConnectionsByNetworkIsolationKey": [ { "platforms": [ @@ -7256,6 +7238,21 @@ ] } ], + "UseNotificationCompatBuilder": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseNotificationCompatBuilder" + ] + } + ] + } + ], "UseSkiaRenderer": [ { "platforms": [
diff --git a/third_party/.gitignore b/third_party/.gitignore index bcb84a9..ab96e1517 100644 --- a/third_party/.gitignore +++ b/third_party/.gitignore
@@ -223,6 +223,9 @@ /smhasher/src /snappy/src /soda +/soda-mac64 +/soda-win32 +/soda-win64 /speex /sqlite/src /sqlite4java/lib/
diff --git a/third_party/blink/common/loader/throttling_url_loader.cc b/third_party/blink/common/loader/throttling_url_loader.cc index bbed0b5e..ceeae87d 100644 --- a/third_party/blink/common/loader/throttling_url_loader.cc +++ b/third_party/blink/common/loader/throttling_url_loader.cc
@@ -8,6 +8,7 @@ #include "base/metrics/histogram_functions.h" #include "base/single_thread_task_runner.h" #include "base/strings/strcat.h" +#include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "base/threading/thread_task_runner_handle.h" #include "base/trace_event/trace_event.h" @@ -1064,7 +1065,7 @@ if (!custom_reason.empty()) { url_loader_.ResetWithReason( network::mojom::URLLoader::kClientDisconnectReason, - custom_reason.as_string()); + std::string(custom_reason)); } else { url_loader_.reset(); }
diff --git a/third_party/blink/common/origin_trials/trial_token.cc b/third_party/blink/common/origin_trials/trial_token.cc index 3fc8fe0..cd0c97bb 100644 --- a/third_party/blink/common/origin_trials/trial_token.cc +++ b/third_party/blink/common/origin_trials/trial_token.cc
@@ -11,6 +11,7 @@ #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/optional.h" +#include "base/strings/strcat.h" #include "base/strings/string_piece.h" #include "base/time/time.h" #include "base/values.h" @@ -160,8 +161,7 @@ kPayloadLengthSize + payload_length); // The data which is covered by the signature is (version + length + payload). - std::string signed_data = - version_piece.as_string() + payload_piece.as_string(); + std::string signed_data = base::StrCat({version_piece, payload_piece}); // Validate the signature on the data before proceeding. if (!TrialToken::ValidateSignature(signature, signed_data, public_key)) { @@ -171,7 +171,7 @@ // Return the payload and signature, as new strings. *out_token_version = version; *out_token_payload = token_contents.substr(kPayloadOffset, payload_length); - *out_token_signature = signature.as_string(); + *out_token_signature = std::string(signature); return OriginTrialTokenStatus::kSuccess; }
diff --git a/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc b/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc index 9995d70..2e30680 100644 --- a/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc +++ b/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc
@@ -5,12 +5,13 @@ #include "third_party/blink/public/common/origin_trials/trial_token_validator.h" #include <memory> -#include <set> #include <string> #include "base/bind.h" +#include "base/containers/flat_set.h" #include "base/memory/ptr_util.h" #include "base/stl_util.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/test/simple_test_clock.h" #include "base/time/time.h" @@ -193,11 +194,11 @@ return keys_; } bool IsFeatureDisabled(base::StringPiece feature) const override { - return disabled_features_.count(feature.as_string()) > 0; + return disabled_features_.count(feature) > 0; } bool IsFeatureDisabledForUser(base::StringPiece feature) const override { - return disabled_features_for_user_.count(feature.as_string()) > 0; + return disabled_features_for_user_.count(std::string(feature)) > 0; } // Test setup methods @@ -220,14 +221,14 @@ protected: bool IsTokenDisabled(base::StringPiece token_signature) const override { - return disabled_tokens_.count(token_signature.as_string()) > 0; + return disabled_tokens_.count(std::string(token_signature)) > 0; } private: std::vector<base::StringPiece> keys_; - std::set<std::string> disabled_features_; - std::set<std::string> disabled_features_for_user_; - std::set<std::string> disabled_tokens_; + base::flat_set<std::string> disabled_features_; + base::flat_set<std::string> disabled_features_for_user_; + base::flat_set<std::string> disabled_tokens_; }; class TrialTokenValidatorTest : public testing::Test {
diff --git a/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc b/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc index 8490ebab..7d619dc 100644 --- a/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc +++ b/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h" +#include "base/strings/string_piece.h" + namespace blink { ThreadSafeBrowserInterfaceBrokerProxy::ThreadSafeBrowserInterfaceBrokerProxy() = @@ -31,7 +33,7 @@ bool ThreadSafeBrowserInterfaceBrokerProxy::SetBinderForTesting( base::StringPiece interface_name, Binder binder) { - std::string name = interface_name.as_string(); + std::string name(interface_name); base::AutoLock lock(binder_map_lock_); if (!binder) {
diff --git a/third_party/blink/common/unique_name/unique_name_helper.cc b/third_party/blink/common/unique_name/unique_name_helper.cc index 686ac1f4..e3ae497 100644 --- a/third_party/blink/common/unique_name/unique_name_helper.cc +++ b/third_party/blink/common/unique_name/unique_name_helper.cc
@@ -148,7 +148,7 @@ std::string CalculateNameInternal(const FrameAdapter* frame, base::StringPiece name) { if (!name.empty() && frame->IsCandidateUnique(name) && name != "_blank") - return name.as_string(); + return std::string(name); std::string candidate = GenerateCandidate(frame); if (frame->IsCandidateUnique(candidate)) @@ -316,8 +316,8 @@ base::StringPiece unique_name) { size_t i = unique_name.rfind(kDynamicFrameMarker); if (i == std::string::npos) - return unique_name.as_string(); - return unique_name.substr(0, i).as_string(); + return std::string(unique_name); + return std::string(unique_name.substr(0, i)); } } // namespace blink
diff --git a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc index bb19f8bd..099f1b3 100644 --- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
@@ -1161,6 +1161,8 @@ ScriptState* script_state = ToScriptStateForMainWorld(frame); DCHECK(script_state); ScriptState::Scope scope(script_state); + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); v8::Local<v8::Object> global = script_state->GetContext()->Global(); v8::Local<v8::Value> overlay_host_obj = ToV8(overlay_host_.Get(), global, isolate);
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc index ce3980b6..3598ca66 100644 --- a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc +++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
@@ -672,6 +672,8 @@ box_model.UniqueId(), CompositorElementIdNamespace::kStickyTranslation); state.rendering_context_id = context_.current.rendering_context_id; + state.flags.flattens_inherited_transform = + context_.current.should_flatten_inherited_transform; auto* layer = box_model.Layer(); const auto* scroller_properties = layer->AncestorScrollContainerLayer()
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc index 3ff2bfbe..7927b088 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
@@ -2455,7 +2455,8 @@ // because some roles allow aria-owns and others don't. // In addition, any owned objects need to reset their parent_ to point // to the new object. - relation_cache_->UpdateAriaOwnsWithCleanLayout(GetOrCreate(node), true); + if (AXObject* new_object = GetOrCreate(node)) + relation_cache_->UpdateAriaOwnsWithCleanLayout(new_object, true); } }
diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_core.cc b/third_party/blink/renderer/modules/webcodecs/image_decoder_core.cc index 61015226..f03e0e09 100644 --- a/third_party/blink/renderer/modules/webcodecs/image_decoder_core.cc +++ b/third_party/blink/renderer/modules/webcodecs/image_decoder_core.cc
@@ -5,10 +5,12 @@ #include "third_party/blink/renderer/modules/webcodecs/image_decoder_core.h" #include "base/logging.h" +#include "base/metrics/histogram_functions.h" #include "base/time/time.h" #include "media/base/timestamp_constants.h" #include "media/base/video_frame.h" #include "media/base/video_util.h" +#include "third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h" #include "third_party/blink/renderer/platform/graphics/video_frame_image_util.h" #include "third_party/blink/renderer/platform/image-decoders/segment_reader.h" #include "third_party/blink/renderer/platform/wtf/shared_buffer.h" @@ -99,6 +101,10 @@ } Reinitialize(animation_option_); + + base::UmaHistogramEnumeration("Blink.WebCodecs.ImageDecoder.Type", + BitmapImageMetrics::StringToDecodedImageType( + decoder_->FilenameExtension())); } ImageDecoderCore::~ImageDecoderCore() = default;
diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc index d6f58a4..60d3f63 100644 --- a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc +++ b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/modules/webcodecs/image_decoder_external.h" #include "base/logging.h" +#include "base/metrics/histogram_functions.h" #include "base/task/thread_pool.h" #include "third_party/blink/public/common/mime_util/mime_util.h" #include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink.h" @@ -20,6 +21,7 @@ #include "third_party/blink/renderer/platform/bindings/exception_code.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/graphics/bitmap_image_metrics.h" #include "third_party/blink/renderer/platform/image-decoders/segment_reader.h" #include "third_party/blink/renderer/platform/instrumentation/use_counter.h" @@ -154,6 +156,8 @@ consumer_ = MakeGarbageCollected<ReadableStreamBytesConsumer>( script_state, init->data().GetAsReadableStream()); + construction_succeeded_ = true; + // We need one initial call to OnStateChange() to start reading, but // thereafter calls will be driven by the ReadableStreamBytesConsumer. consumer_->SetClient(this); @@ -185,6 +189,7 @@ return; } + construction_succeeded_ = true; data_complete_ = true; decoder_ = std::make_unique<WTF::SequenceBound<ImageDecoderCore>>( task_runner, mime_type_, std::move(segment_reader), data_complete_, @@ -196,6 +201,9 @@ ImageDecoderExternal::~ImageDecoderExternal() { DVLOG(1) << __func__; + if (construction_succeeded_) + base::UmaHistogramBoolean("Blink.WebCodecs.ImageDecoder.Success", !failed_); + // See OnContextDestroyed(); WeakPtrs must be invalidated ahead of GC. DCHECK_EQ(pending_metadata_requests_, 0); DCHECK(!weak_factory_.HasWeakPtrs());
diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.h b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.h index 3d7ce736..0726468 100644 --- a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.h +++ b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.h
@@ -129,6 +129,9 @@ // List of tracks in this image. Filled in during OnMetadata(). Member<ImageTrackList> tracks_; + // Set to true if we make it out of the constructor without an exception. + bool construction_succeeded_ = false; + // Pending decode() requests. struct DecodeRequest : public GarbageCollected<DecodeRequest> { DecodeRequest(ScriptPromiseResolver* resolver,
diff --git a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc index 22e08ef..1674683 100644 --- a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc +++ b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc
@@ -19,10 +19,8 @@ namespace blink { -namespace { - -BitmapImageMetrics::DecodedImageType StringToDecodedImageType( - const String& type) { +BitmapImageMetrics::DecodedImageType +BitmapImageMetrics::StringToDecodedImageType(const String& type) { if (type == "jpg") return BitmapImageMetrics::DecodedImageType::kJPEG; if (type == "png") @@ -46,8 +44,6 @@ return BitmapImageMetrics::DecodedImageType::kUnknown; } -} // namespace - void BitmapImageMetrics::CountDecodedImageType(const String& type) { UMA_HISTOGRAM_ENUMERATION("Blink.DecodedImageType", StringToDecodedImageType(type));
diff --git a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h index ee1dcc00f..7db1a4c 100644 --- a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h +++ b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h
@@ -56,6 +56,9 @@ }; // |type| is the return value of ImageDecoder::FilenameExtension(). + static DecodedImageType StringToDecodedImageType(const String& type); + + // |type| is the return value of ImageDecoder::FilenameExtension(). static void CountDecodedImageType(const String& type); // |type| is the return value of ImageDecoder::FilenameExtension(). // |use_counter| may be a null pointer.
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index f1a1127..0cd44fad 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -4077,6 +4077,8 @@ crbug.com/921722 external/wpt/css/css-grid/abspos/descendant-static-position-001.html [ Failure ] crbug.com/921722 external/wpt/css/css-grid/abspos/descendant-static-position-002.html [ Failure ] crbug.com/921722 external/wpt/css/css-grid/abspos/descendant-static-position-003.html [ Failure ] +crbug.com/759665 external/wpt/css/css-grid/animation/grid-template-columns-interpolation.html [ Failure ] +crbug.com/759665 external/wpt/css/css-grid/animation/grid-template-rows-interpolation.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-011.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-012.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-013.html [ Failure ] @@ -4088,6 +4090,7 @@ crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-031.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-035.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-036.html [ Failure ] +crbug.com/1202031 external/wpt/css/css-grid/alignment/grid-baseline-004.html [ Failure ] crbug.com/941987 external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.html [ Failure ] @@ -4097,21 +4100,41 @@ crbug.com/1171262 external/wpt/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html [ Failure ] crbug.com/759665 external/wpt/css/css-grid/animation/grid-template-columns-001.html [ Failure ] crbug.com/759665 external/wpt/css/css-grid/animation/grid-template-rows-001.html [ Failure ] -crbug.com/935102 external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html [ Failure ] +crbug.com/935102 external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html [ Failure ] +crbug.com/935102 external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html [ Failure ] +crbug.com/1024927 external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003.html [ Failure ] crbug.com/707359 [ Mac ] external/wpt/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html [ Failure ] +crbug.com/1102918 external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001.html [ Failure ] +crbug.com/1102918 external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001.html [ Failure ] +crbug.com/1102918 external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001.html [ Failure ] +crbug.com/1102918 external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/grid-definition/grid-auto-repeat-dynamic-001.html [ Failure ] crbug.com/1045599 external/wpt/css/css-grid/grid-definition/grid-auto-repeat-dynamic-003.html [ Failure ] +crbug.com/1005519 external/wpt/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.html [ Failure ] +crbug.com/1024927 external/wpt/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative.html [ Failure ] +crbug.com/1053825 external/wpt/css/css-grid/grid-definition/grid-limits-001.html [ Failure ] +crbug.com/1024927 external/wpt/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative.html [ Failure ] crbug.com/1114280 external/wpt/css/css-grid/grid-items/aspect-ratio-004.html [ Failure ] -crbug.com/1157962 [ Win10 ] external/wpt/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html [ Failure ] +crbug.com/511177 external/wpt/css/css-grid/grid-layout-properties.html [ Failure ] crbug.com/1053825 external/wpt/css/css-grid/grid-model/grid-overflow-padding-001.html [ Failure ] crbug.com/1053825 external/wpt/css/css-grid/grid-model/grid-overflow-padding-002.html [ Failure ] crbug.com/1053825 external/wpt/css/css-grid/grid-model/grid-areas-overflowing-grid-container-001.html [ Failure ] crbug.com/1053825 external/wpt/css/css-grid/grid-model/grid-areas-overflowing-grid-container-002.html [ Failure ] crbug.com/1053825 external/wpt/css/css-grid/grid-model/grid-areas-overflowing-grid-container-003.html [ Failure ] +crbug.com/916827 external/wpt/css/css-grid/parsing/grid-area-computed.html [ Failure ] +crbug.com/511177 external/wpt/css/css-grid/parsing/grid-area-valid.html [ Failure ] +crbug.com/1156390 external/wpt/css/css-grid/parsing/grid-auto-flow-computed.html [ Failure ] +crbug.com/1156390 external/wpt/css/css-grid/parsing/grid-auto-flow-valid.html [ Failure ] +crbug.com/1050968 external/wpt/css/css-grid/parsing/grid-columns-rows-get-set-multiple.html [ Failure ] +crbug.com/1028283 external/wpt/css/css-grid/parsing/grid-shorthand-valid.html [ Failure ] +crbug.com/501673 external/wpt/css/css-grid/parsing/grid-shorthand.html [ Failure ] +crbug.com/989004 external/wpt/css/css-grid/parsing/grid-template-columns-computed-nogrid.html [ Failure ] +crbug.com/989004 external/wpt/css/css-grid/parsing/grid-template-rows-computed-nogrid.html [ Failure ] +crbug.com/1028283 external/wpt/css/css-grid/parsing/grid-template-shorthand-valid.html [ Failure ] crbug.com/1045599 fast/css-grid-layout/maximize-tracks-definite-indefinite-height.html [ Failure ] # Bad stretching of svgs without aspect-ratio. @@ -4190,6 +4213,10 @@ virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html [ Pass ] virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.tentative.html [ Pass ] virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.tentative.html [ Pass ] +virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001.html [ Pass ] +virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001.html [ Pass ] +virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001.html [ Pass ] +virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001.html [ Pass ] virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html [ Pass ] virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html [ Pass ] virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-repeat-dynamic-001.html [ Pass ] @@ -4211,7 +4238,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html [ Crash Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/positioned-grid-items-negative-indices-003.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-justify-overflow.html [ Failure ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-baseline-004.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-baseline-align-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-baseline-justify-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html [ Failure ] @@ -4242,8 +4268,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-template-rows-fit-content-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-fit-content-percentage.html [ Failure ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html [ Failure ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html [ Failure ] @@ -7017,10 +7041,6 @@ crbug.com/1180491 [ Linux ] external/wpt/storage-access-api/storageAccess.testdriver.sub.html [ Pass Failure ] crbug.com/1180491 [ Linux ] virtual/storage-access-api/external/wpt/storage-access-api/storageAccess.testdriver.sub.html [ Pass Failure ] -# Sheriff 2021-02-23 -crbug.com/1181466 external/wpt/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.html [ Pass Failure ] -crbug.com/1181466 virtual/threaded/external/wpt/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.html [ Pass Failure ] - # Sheriff 2021-02-24 crbug.com/1181667 [ Linux ] external/wpt/css/selectors/focus-visible-011.html [ Pass Failure ] crbug.com/1045052 [ Linux ] virtual/split-http-cache-not-site-per-process/http/tests/devtools/isolated-code-cache/stale-revalidation-test.js [ Pass Failure Timeout ] @@ -7280,6 +7300,8 @@ crbug.com/1203345 [ Mac ] external/wpt/websockets/Send-unpaired-surrogates.any.html?wpt_flags=h2 [ Pass Failure Timeout ] # Sheriff 2021-04-29 +crbug.com/1203345 [ Mac10.14 ] external/wpt/websockets/Close-server-initiated-close.any.html?wpt_flags=h2 [ Pass Failure Timeout ] +crbug.com/1203345 [ Mac10.14 ] external/wpt/websockets/binaryType-wrong-value.any.html?wpt_flags=h2 [ Pass Failure Timeout ] crbug.com/1203963 [ Mac10.14 ] external/wpt/css/css-paint-api/idlharness.html [ Pass Failure Timeout ] crbug.com/1203963 [ Mac10.14 ] external/wpt/css/css-shapes/parsing/shape-outside-computed.html [ Pass Failure Timeout ] crbug.com/1203963 [ Mac10.14 ] external/wpt/css/css-sizing/aspect-ratio/grid-aspect-ratio-021.html [ Pass Failure Timeout ] @@ -7294,3 +7316,9 @@ crbug.com/1203963 [ Mac10.14 ] external/wpt/url/url-constructor.any.worker.html [ Pass Failure Timeout ] crbug.com/1203963 [ Mac10.14 ] external/wpt/webusb/idlharness.https.any.html [ Pass Failure Timeout ] crbug.com/1203963 [ Mac10.14 ] external/wpt/xhr/idlharness.any.sharedworker.html [ Pass Failure Timeout ] +crbug.com/1198443 [ Mac10.14 ] virtual/plz-dedicated-worker/external/wpt/fetch/api/basic/request-upload.any.html [ Pass Failure Timeout ] +crbug.com/1198443 [ Mac10.14 ] virtual/plz-dedicated-worker/external/wpt/fetch/api/basic/request-upload.any.worker.html [ Pass Failure Timeout ] +crbug.com/1198443 [ Mac10.14 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.serviceworker.html [ Pass Failure Timeout ] +crbug.com/1198443 [ Mac10.14 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.serviceworker.html [ Pass Failure Timeout ] +crbug.com/1204086 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html [ Pass Failure ] +crbug.com/1204086 external/wpt/requestidlecallback/callback-invoked.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-004-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-004-expected.txt deleted file mode 100644 index 7d26c42..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-004-expected.txt +++ /dev/null
@@ -1,75 +0,0 @@ -This is a testharness.js-based test. -PASS .grid, container 1 -PASS .grid, container 2 -PASS .grid, container 3 -PASS .grid, container 4 -PASS .grid, container 5 -PASS .grid, container 6 -PASS .grid, container 7 -PASS .grid, container 8 -PASS .grid, container 9 -PASS .grid, container 10 -PASS .grid, container 11 -PASS .grid, container 12 -PASS .grid, container 13 -PASS .grid, container 14 -PASS .grid, container 15 -FAIL .grid, container 16 assert_equals: -<div class="container" data-expected-width="480" data-expected-height="250"> - <div id="first" class="grid twoRows" data-offset-x="0" data-offset-y="80"> - <div class="firstRowFirstColumn target" data-offset-x="0" data-offset-y="0"></div> - <div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div> - <div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div> - </div> - <div id="second" class="grid threeRows" data-offset-x="160" data-offset-y="55"> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="100"></div> - <div class="secondRowBothColumn" data-offset-x="0" data-offset-y="65"></div> - <div class="secondRowSecondColumn style3 alignSelfBaseline target" id="first" data-offset-x="0" data-offset-y="80"></div> - </div> - <div class="grid empty threeRows" data-offset-x="320" data-offset-y="15"> - <div class="thirdRowSecondColumn" data-offset-x="50" data-offset-y="110"></div> - <div class="secondRowFirstColumn target" data-offset-x="0" data-offset-y="60"></div> - <div class="secondRowBothColumn" data-offset-x="0" data-offset-y="75"></div> - </div> -</div> -height expected 250 but got 300 -FAIL .grid, container 17 assert_equals: -<div class="container" data-expected-width="480" data-expected-height="250"> - <div id="first" class="grid twoRows" data-offset-x="0" data-offset-y="80"> - <div class="firstRowFirstColumn target" data-offset-x="0" data-offset-y="0"></div> - <div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div> - <div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div> - </div> - <div id="second" class="grid threeRows" data-offset-x="160" data-offset-y="55"> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="100"></div> - <div class="secondRowBothColumn" data-offset-x="0" data-offset-y="65"></div> - <div class="secondRowSecondColumn style3 alignSelfBaseline target" id="first" data-offset-x="0" data-offset-y="80"></div> - </div> - <div class="grid empty threeRows" data-offset-x="320" data-offset-y="15"> - <div class="thirdRowSecondColumn" data-offset-x="50" data-offset-y="110"></div> - <div class="secondRowFirstColumn target" data-offset-x="0" data-offset-y="60"></div> - <div class="secondRowBothColumn" data-offset-x="0" data-offset-y="75"></div> - </div> -</div> -height expected 250 but got 300 -FAIL .grid, container 18 assert_equals: -<div class="container" data-expected-width="480" data-expected-height="250"> - <div id="first" class="grid twoRows" data-offset-x="0" data-offset-y="80"> - <div class="firstRowFirstColumn target" data-offset-x="0" data-offset-y="0"></div> - <div class="firstRowBothColumn" data-offset-x="0" data-offset-y="15"></div> - <div class="bothRowFirstColumn" data-offset-x="0" data-offset-y="10"></div> - </div> - <div id="second" class="grid threeRows" data-offset-x="160" data-offset-y="55"> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="100"></div> - <div class="secondRowBothColumn" data-offset-x="0" data-offset-y="65"></div> - <div class="secondRowSecondColumn style3 alignSelfBaseline target" id="first" data-offset-x="0" data-offset-y="80"></div> - </div> - <div class="grid empty threeRows" data-offset-x="320" data-offset-y="15"> - <div class="thirdRowSecondColumn" data-offset-x="50" data-offset-y="110"></div> - <div class="secondRowFirstColumn target" data-offset-x="0" data-offset-y="60"></div> - <div class="secondRowBothColumn" data-offset-x="0" data-offset-y="75"></div> - </div> -</div> -height expected 250 but got 300 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/animation/grid-template-columns-interpolation-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/animation/grid-template-columns-interpolation-expected.txt deleted file mode 100644 index d0d09c2..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/animation/grid-template-columns-interpolation-expected.txt +++ /dev/null
@@ -1,452 +0,0 @@ -This is a testharness.js-based test. -Found 448 tests; 322 PASS, 126 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [10px 20px 30px] -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0) should be [10px 20px 30px] -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.3) should be [10px 20px 30px] -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [10px 20px 30px] -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0) should be [10px 20px 30px] -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.3) should be [10px 20px 30px] -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (-0.3) should be [none] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0) should be [none] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.3) should be [none] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (-0.3) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.3) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (-0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (-0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS CSS Transitions: property <grid-template-columns> from [none] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [none] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [none] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions: property <grid-template-columns> from [none] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [none] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [none] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [none] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [none] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [none] to [20px 30px] at (-0.3) should be [none] -PASS CSS Animations: property <grid-template-columns> from [none] to [20px 30px] at (0) should be [none] -PASS CSS Animations: property <grid-template-columns> from [none] to [20px 30px] at (0.3) should be [none] -PASS CSS Animations: property <grid-template-columns> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Animations: property <grid-template-columns> from [none] to [20px 30px] at (1.5) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [none] to [20px 30px] at (-0.3) should be [none] -PASS Web Animations: property <grid-template-columns> from [none] to [20px 30px] at (0) should be [none] -PASS Web Animations: property <grid-template-columns> from [none] to [20px 30px] at (0.3) should be [none] -PASS Web Animations: property <grid-template-columns> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS Web Animations: property <grid-template-columns> from [none] to [20px 30px] at (1.5) should be [20px 30px] -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] assert_equals: expected "10px 20px 30px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] assert_equals: expected "10px 20px 30px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "10px 20px 30px " -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "10px 20px 30px " -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "10px 20px 30px " -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "10px 20px 30px " -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] assert_equals: expected "10px 20px 30px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL CSS Transitions: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] assert_equals: expected "10px 20px 30px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "10px 20px 30px " -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "10px 20px 30px " -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL CSS Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "10px 20px 30px " -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "10px 20px 30px " -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL Web Animations: property <grid-template-columns> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] assert_equals: expected "1fr 1fr 1fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] assert_equals: expected "1fr 1fr 1fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "1fr 1fr 1fr " -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] -FAIL CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "1fr 1fr 1fr " -FAIL CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "1fr 1fr 1fr " -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] -FAIL Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "1fr 1fr 1fr " -FAIL Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL Web Animations: property <grid-template-columns> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] assert_equals: expected "1fr [ a b ] 1fr [ d ] 1fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS CSS Transitions: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL CSS Transitions: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] assert_equals: expected "1fr [ a b ] 1fr [ d ] 1fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -PASS CSS Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] -FAIL CSS Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -FAIL CSS Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS CSS Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL CSS Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL Web Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -PASS Web Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] -FAIL Web Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -FAIL Web Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS Web Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL Web Animations: property <grid-template-columns> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] assert_equals: expected "fit - content ( 10px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] assert_equals: expected "fit - content ( 10px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -PASS CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] -FAIL CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -FAIL CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -PASS Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] -FAIL Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -FAIL Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] assert_equals: expected "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] assert_equals: expected "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -PASS CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] -FAIL CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -FAIL CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -PASS Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] -FAIL Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -FAIL Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(2, 2fr 30px)] -PASS CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(2, 2fr 30px)] -PASS CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(2, 2fr 30px)] -PASS CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(2, 2fr 30px)] -PASS Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(2, 2fr 30px)] -PASS Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(2, 2fr 30px)] -PASS Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -FAIL CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] assert_equals: expected "1fr 2fr auto 30px 2fr auto 30px 1fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] assert_equals: expected "1fr 2fr auto 30px 2fr auto 30px 1fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] -FAIL CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -FAIL CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] -FAIL Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -FAIL Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/animation/grid-template-rows-interpolation-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/animation/grid-template-rows-interpolation-expected.txt deleted file mode 100644 index 737697d4..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/animation/grid-template-rows-interpolation-expected.txt +++ /dev/null
@@ -1,452 +0,0 @@ -This is a testharness.js-based test. -Found 448 tests; 322 PASS, 126 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (-0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.5) should be [2fr 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (0.6) should be [2fr 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1) should be [2fr 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr 2fr] at (1.5) should be [2fr 2fr] -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [10px 20px 30px] -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0) should be [10px 20px 30px] -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.3) should be [10px 20px 30px] -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (-0.3) should be [10px 20px 30px] -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0) should be [10px 20px 30px] -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.3) should be [10px 20px 30px] -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.5) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (0.6) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (-0.3) should be [none] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0) should be [none] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.3) should be [none] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (-0.3) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.3) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (-0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.3) should be [1fr 1fr 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (-0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.3) should be [1fr 1fr 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.5) should be [none] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (0.6) should be [none] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1) should be [none] -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [none] at (1.5) should be [none] -PASS CSS Transitions: property <grid-template-rows> from [none] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [none] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [none] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions: property <grid-template-rows> from [none] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [none] to [20px 30px] at (-0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [none] to [20px 30px] at (0) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [none] to [20px 30px] at (0.3) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [none] to [20px 30px] at (1.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [none] to [20px 30px] at (-0.3) should be [none] -PASS CSS Animations: property <grid-template-rows> from [none] to [20px 30px] at (0) should be [none] -PASS CSS Animations: property <grid-template-rows> from [none] to [20px 30px] at (0.3) should be [none] -PASS CSS Animations: property <grid-template-rows> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS CSS Animations: property <grid-template-rows> from [none] to [20px 30px] at (1.5) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [none] to [20px 30px] at (-0.3) should be [none] -PASS Web Animations: property <grid-template-rows> from [none] to [20px 30px] at (0) should be [none] -PASS Web Animations: property <grid-template-rows> from [none] to [20px 30px] at (0.3) should be [none] -PASS Web Animations: property <grid-template-rows> from [none] to [20px 30px] at (0.5) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [none] to [20px 30px] at (0.6) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [none] to [20px 30px] at (1) should be [20px 30px] -PASS Web Animations: property <grid-template-rows> from [none] to [20px 30px] at (1.5) should be [20px 30px] -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] assert_equals: expected "10px 20px 30px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] assert_equals: expected "10px 20px 30px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "20px 30px 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "10px 20px 30px " -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "10px 20px 30px " -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (-1) should be [0px 10px 20px] assert_equals: expected "0px 10px 20px " but got "10px 20px 30px " -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0) should be [10px 20px 30px] -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.4) should be [14px 24px 34px] assert_equals: expected "14px 24px 34px " but got "10px 20px 30px " -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (0.6) should be [16px 26px 36px] assert_equals: expected "16px 26px 36px " but got "20px 30px 40px " -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (1) should be [20px 30px 40px] -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20px 30px 40px] at (2) should be [30px 40px 50px] assert_equals: expected "30px 40px 50px " but got "20px 30px 40px " -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] assert_equals: expected "10px 20px 30px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL CSS Transitions: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] assert_equals: expected "10px 20px 30px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "20 % 30 % 40px " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "10px 20px 30px " -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "10px 20px 30px " -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL CSS Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px] assert_equals: expected "calc ( - 20 % + 20px ) calc ( - 30 % + 40px ) 20px " but got "10px 20px 30px " -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px] -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px] assert_equals: expected "calc ( 8 % + 6px ) calc ( 12 % + 12px ) 34px " but got "10px 20px 30px " -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px] assert_equals: expected "calc ( 12 % + 4px ) calc ( 18 % + 8px ) 36px " but got "20 % 30 % 40px " -PASS Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (1) should be [20% 30% 40px] -FAIL Web Animations: property <grid-template-rows> from [10px 20px 30px] to [20% 30% 40px] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px] assert_equals: expected "calc ( 40 % - 10px ) calc ( 60 % - 20px ) 50px " but got "20 % 30 % 40px " -FAIL CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] assert_equals: expected "1fr 1fr 1fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] assert_equals: expected "1fr 1fr 1fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "2fr auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "1fr 1fr 1fr " -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] -FAIL CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "1fr 1fr 1fr " -FAIL CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (-1) should be [0fr 1fr 0fr] assert_equals: expected "0fr 1fr 0fr " but got "1fr 1fr 1fr " -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0) should be [1fr 1fr 1fr] -FAIL Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.4) should be [1.4fr 1fr 1.4fr] assert_equals: expected "1.4fr 1fr 1.4fr " but got "1fr 1fr 1fr " -FAIL Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (0.6) should be [1.6fr auto 1.6fr] assert_equals: expected "1.6fr auto 1.6fr " but got "2fr auto 2fr " -PASS Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (1) should be [2fr auto 2fr] -FAIL Web Animations: property <grid-template-rows> from [1fr 1fr 1fr] to [2fr auto 2fr] at (2) should be [3fr auto 3fr] assert_equals: expected "3fr auto 3fr " but got "2fr auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] assert_equals: expected "1fr [ a b ] 1fr [ d ] 1fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS CSS Transitions: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL CSS Transitions: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] assert_equals: expected "1fr [ a b ] 1fr [ d ] 1fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -PASS CSS Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] -FAIL CSS Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -FAIL CSS Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS CSS Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL CSS Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL Web Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (-1) should be [0fr [a b] 1fr [d] 0fr] assert_equals: expected "0fr [ a b ] 1fr [ d ] 0fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -PASS Web Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0) should be [1fr [a b] 1fr [d] 1fr] -FAIL Web Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.4) should be [1.4fr [a b] 1fr [d] 1.4fr] assert_equals: expected "1.4fr [ a b ] 1fr [ d ] 1.4fr " but got "1fr [ a b ] 1fr [ d ] 1fr " -FAIL Web Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (0.6) should be [1.6fr [c] auto 1.6fr] assert_equals: expected "1.6fr [ c ] auto 1.6fr " but got "2fr [ c ] auto 2fr " -PASS Web Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (1) should be [2fr [c] auto 2fr] -FAIL Web Animations: property <grid-template-rows> from [1fr [a b] 1fr [d] 1fr] to [2fr [c] auto 2fr] at (2) should be [3fr [c] auto 3fr] assert_equals: expected "3fr [ c ] auto 3fr " but got "2fr [ c ] auto 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] assert_equals: expected "fit - content ( 10px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] assert_equals: expected "fit - content ( 10px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -PASS CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] -FAIL CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -FAIL CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (-1) should be [fit-content(0px) fit-content(20px)] assert_equals: expected "fit - content ( 0px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -PASS Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0) should be [fit-content(10px) fit-content(20px)] -FAIL Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.4) should be [fit-content(14px) fit-content(20px)] assert_equals: expected "fit - content ( 14px ) fit - content ( 20px ) " but got "fit - content ( 10px ) fit - content ( 20px ) " -FAIL Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (0.6) should be [fit-content(16px) max-content] assert_equals: expected "fit - content ( 16px ) max - content " but got "fit - content ( 20px ) max - content " -PASS Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (1) should be [fit-content(20px) max-content] -FAIL Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)] to [fit-content(20px) max-content] at (2) should be [fit-content(30px) max-content] assert_equals: expected "fit - content ( 30px ) max - content " but got "fit - content ( 20px ) max - content " -FAIL CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] assert_equals: expected "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] assert_equals: expected "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -PASS CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] -FAIL CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -FAIL CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -FAIL Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)] assert_equals: expected "minmax ( 0px , 0fr ) minmax ( 10px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -PASS Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)] -FAIL Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)] assert_equals: expected "minmax ( 14px , 1.4fr ) minmax ( 24px , 2fr ) " but got "minmax ( 10px , 1fr ) minmax ( 20px , 2fr ) " -FAIL Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)] assert_equals: expected "minmax ( 16px , 1.6fr ) minmax ( 26px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)] -FAIL Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)] to [minmax(20px, 2fr) minmax(30px, auto)] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)] assert_equals: expected "minmax ( 30px , 3fr ) minmax ( 40px , auto ) " but got "minmax ( 20px , 2fr ) minmax ( 30px , auto ) " -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(2, 3fr 40px 50px) 2fr] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr] to [2fr repeat(3, 3fr 40px) 2fr] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr] -PASS CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(2, 2fr 30px)] -PASS CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(2, 2fr 30px)] -PASS CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(2, 2fr 30px)] -PASS CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (-0.3) should be [repeat(2, 2fr 30px)] -PASS Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0) should be [repeat(2, 2fr 30px)] -PASS Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.3) should be [repeat(2, 2fr 30px)] -PASS Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.5) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (0.6) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1) should be [repeat(4, 40px)] -PASS Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)] to [repeat(4, 40px)] at (1.5) should be [repeat(4, 40px)] -FAIL CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] assert_equals: expected "1fr 2fr auto 30px 2fr auto 30px 1fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] assert_equals: expected "1fr 2fr auto 30px 2fr auto 30px 1fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] -FAIL CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -FAIL CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -FAIL Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr] assert_equals: expected "0fr 1fr auto 20px 1fr auto 20px 0fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr] -FAIL Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr] assert_equals: expected "1.4fr 2.4fr auto 34px 2.4fr auto 34px 1.4fr " but got "1fr 2fr auto 30px 2fr auto 30px 1fr " -FAIL Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr] assert_equals: expected "1.6fr 2.6fr 30px 36px 2.6fr 30px 36px 1.6fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr] -FAIL Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr] to [2fr repeat(2, 3fr 30px 40px) 2fr] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr] assert_equals: expected "3fr 4fr 30px 50px 4fr 30px 50px 3fr " but got "2fr 3fr 30px 40px 3fr 30px 40px 2fr " -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -PASS Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px] to [20px repeat(auto-fill, minmax(35px, auto)) 20px] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px] -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt deleted file mode 100644 index d6e80985..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt +++ /dev/null
@@ -1,44 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -FAIL .grid 4 assert_equals: -<div class="grid gridMaxMinAutoRepeat"> - <div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div> -</div> -width expected 180 but got 450 -FAIL .grid 5 assert_equals: -<div class="grid gridMaxMinPercentAutoRepeat"> - <div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div> -</div> -width expected 180 but got 450 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt deleted file mode 100644 index 5169f25..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt +++ /dev/null
@@ -1,46 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -FAIL .grid 4 assert_equals: -<div class="grid gridMaxMinAutoRepeat"> - <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> -</div> -height expected 180 but got 450 -FAIL .grid 5 assert_equals: -<div class="grid gridMaxMinPercentAutoRepeat"> - <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> -</div> -height expected 180 but got 450 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -PASS .grid 34 -PASS .grid 35 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt deleted file mode 100644 index 90295fe4..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt +++ /dev/null
@@ -1,46 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -FAIL .grid 4 assert_equals: -<div class="grid gridMaxMinAutoRepeat"> - <div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div> -</div> -width expected 180 but got 450 -FAIL .grid 5 assert_equals: -<div class="grid gridMaxMinPercentAutoRepeat"> - <div class="item" style="grid-column: 1 / -1" data-offset-x="0" data-offset-y="0" data-expected-width="180" data-expected-height="25"></div> -</div> -width expected 180 but got 450 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -PASS .grid 34 -PASS .grid 35 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt deleted file mode 100644 index 30bbf8c..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt +++ /dev/null
@@ -1,44 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -FAIL .grid 4 assert_equals: -<div class="grid gridMaxMinAutoRepeat"> - <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> -</div> -height expected 180 but got 450 -FAIL .grid 5 assert_equals: -<div class="grid gridMaxMinPercentAutoRepeat"> - <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> -</div> -height expected 180 but got 450 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-repeat-max-size-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-repeat-max-size-001-expected.txt deleted file mode 100644 index b48bf64..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-auto-repeat-max-size-001-expected.txt +++ /dev/null
@@ -1,31 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -PASS .grid 4 -PASS .grid 5 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -FAIL .grid 16 assert_equals: -<div class="grid border border-box pad-percent" style="width: min-content; height: min-content;" data-expected-width="300" data-expected-height="160"> - <div class="item" data-offset-x="130" data-offset-y="80" data-expected-width="100" data-expected-height="50"></div> - </div> -width expected 300 but got 260 -PASS .grid 17 -PASS .grid 18 -FAIL .grid 19 assert_equals: -<div class="grid border border-box pad-percent" style="width: max-content; height: max-content;" data-expected-width="300" data-expected-height="160"> - <div class="item" data-offset-x="130" data-offset-y="80" data-expected-width="100" data-expected-height="50"></div> - </div> -width expected 300 but got 260 -PASS .grid 20 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative-expected.txt deleted file mode 100644 index c9eac7b..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative-expected.txt +++ /dev/null
@@ -1,80 +0,0 @@ -This is a testharness.js-based test. -Found 76 tests; 40 PASS, 36 FAIL, 0 TIMEOUT, 0 NOTRUN. -FAIL 'grid' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "110px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: auto auto; and grid-template-rows: ; assert_in_array: gridTemplateRows value "10px 20px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: auto auto; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateRows value "20px 20px 20px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ; assert_in_array: gridTemplateRows value "20px 20px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: ; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "110px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px; -FAIL 'grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateColumns value "110px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px; -FAIL 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateRows value "50px 20px 20px" not in array ["50px"] -PASS Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px; -FAIL 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateRows value "50px 30px 20px" not in array ["50px 30px"] -PASS Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; -FAIL 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateRows value "50px 20px" not in array ["50px"] -PASS Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; -PASS 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -PASS Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -FAIL 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "110px 0px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 0px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px 50px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ; -FAIL 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "110px 0px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; -FAIL 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px; assert_in_array: gridTemplateColumns value "110px 0px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 0px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px; assert_in_array: gridTemplateColumns value "60px 0px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px 50px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px 50px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "100px 110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto; assert_in_array: gridTemplateColumns value "110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 110px 50px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "100px 60px 50px" not in array ["100px 60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "100px 110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateColumns value "110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "60px 110px 50px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateColumns value "60px 50px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "100px 60px 50px" not in array ["100px 60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; -PASS 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "110px 50px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 70px 0px 0px 100px" not in array ["60px 70px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "110px 50px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px; assert_in_array: gridTemplateColumns value "110px 50px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 70px 0px 0px 100px" not in array ["60px 70px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px; assert_in_array: gridTemplateColumns value "60px 70px 0px 0px 100px" not in array ["60px 70px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px; -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-limits-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-limits-001-expected.txt deleted file mode 100644 index 335937d..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-limits-001-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL repeat(9999) should be supported in both axises assert_equals: repeat(9999, 1px) should make grid height 9999px expected "9999px" but got "1000px" -FAIL Implicit grid should support lines [-10k, 10k]. assert_equals: Positioning children at lines -10k and 10k should generate 19998 implicit 1px tracks. expected "19998px" but got "1000px" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative-expected.txt deleted file mode 100644 index c9eac7b..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative-expected.txt +++ /dev/null
@@ -1,80 +0,0 @@ -This is a testharness.js-based test. -Found 76 tests; 40 PASS, 36 FAIL, 0 TIMEOUT, 0 NOTRUN. -FAIL 'grid' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "110px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: auto auto; and grid-template-rows: ; assert_in_array: gridTemplateRows value "10px 20px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: auto auto; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateRows value "20px 20px 20px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ; assert_in_array: gridTemplateRows value "20px 20px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ; -FAIL 'grid' with: grid-template-columns: ; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "110px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px; -FAIL 'grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateColumns value "110px" not in array ["none"] -PASS Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px; -FAIL 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateRows value "50px 20px 20px" not in array ["50px"] -PASS Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px; -FAIL 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateRows value "50px 30px 20px" not in array ["50px 30px"] -PASS Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; -FAIL 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateRows value "50px 20px" not in array ["50px"] -PASS Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; -PASS 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -PASS Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -FAIL 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "110px 0px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 0px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px 50px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ; -FAIL 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "110px 0px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; -FAIL 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px; assert_in_array: gridTemplateColumns value "110px 0px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 0px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px; assert_in_array: gridTemplateColumns value "60px 0px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px 50px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px; -FAIL 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px 50px"] -PASS Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "100px 110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto; assert_in_array: gridTemplateColumns value "110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 110px 50px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "100px 60px 50px" not in array ["100px 60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "100px 110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateColumns value "110px 50px" not in array ["none"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "60px 110px 50px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; assert_in_array: gridTemplateColumns value "60px 50px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px; -FAIL 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; assert_in_array: gridTemplateColumns value "100px 60px 50px" not in array ["100px 60px"] -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px; -PASS 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -PASS Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "110px 50px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ; assert_in_array: gridTemplateColumns value "60px 70px 0px 0px 100px" not in array ["60px 70px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "110px 50px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px; assert_in_array: gridTemplateColumns value "110px 50px 0px 0px 100px" not in array ["none"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px; assert_in_array: gridTemplateColumns value "60px 50px 0px 0px 100px" not in array ["60px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px; assert_in_array: gridTemplateColumns value "60px 70px 0px 0px 100px" not in array ["60px 70px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px; -FAIL 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px; assert_in_array: gridTemplateColumns value "60px 70px 0px 0px 100px" not in array ["60px 70px"] -PASS Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px; -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-layout-properties-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-layout-properties-expected.txt deleted file mode 100644 index 780654b..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-layout-properties-expected.txt +++ /dev/null
@@ -1,144 +0,0 @@ -This is a testharness.js-based test. -Found 140 tests; 119 PASS, 21 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS display: grid -PASS display: inline-grid -PASS grid-template-columns -PASS grid-template-columns.initial -PASS grid-template-columns.none -PASS grid-template-columns.<line-names> -PASS grid-template-columns.<track-size>.auto -PASS grid-template-columns.<track-size>.<track-breadth>.<length> -PASS grid-template-columns.<track-size>.<track-breadth>.<percentage> -PASS grid-template-columns.<track-size>.<track-breadth>.<flex> -PASS grid-template-columns.<track-size>.<track-breadth>.min-content -PASS grid-template-columns.<track-size>.<track-breadth>.max-content -PASS grid-template-columns.<track-size>.<track-breadth>.minmax() -PASS grid-template-columns.reset -PASS grid-template-rows -PASS grid-template-rows.initial -PASS grid-template-rows.none -PASS grid-template-rows.<line-names> -PASS grid-template-rows.<track-size>.auto -PASS grid-template-rows.<track-size>.<track-breadth>.<length> -PASS grid-template-rows.<track-size>.<track-breadth>.<percentage> -PASS grid-template-rows.<track-size>.<track-breadth>.<flex> -PASS grid-template-rows.<track-size>.<track-breadth>.min-content -PASS grid-template-rows.<track-size>.<track-breadth>.max-content -PASS grid-template-rows.<track-size>.<track-breadth>.minmax() -PASS grid-template-rows.reset -PASS grid-template-areas -PASS grid-template-areas.initial -PASS grid-template-areas.none -PASS grid-template-areas.<string>+ -PASS grid-template-areas.reset -PASS grid-template -FAIL grid-template.initial assert_equals: initial value of grid-template should be 50px 50px 50px / 150px expected "50px 50px 50px / 150px" but got "50px 50px 50px / 150px / none" -FAIL grid-template.none assert_equals: none expected "50px 50px 50px / 150px" but got "50px 50px 50px / 150px / none" -FAIL grid-template.<grid-template-rows> / <grid-template-columns> assert_equals: <grid-template-rows> / <grid-template-columns> expected "100px 100px / 200px 200px" but got "" -FAIL grid-template.<line-names> assert_equals: <line-names> expected "[a] auto [b] auto [c] / [d] auto [e] auto [f]" but got "" -FAIL grid-template.<string>+ assert_equals: <string>+ expected "\"a b\" \"a b\"" but got "" -FAIL grid-template.<string><track-size>+ assert_equals: <string><track-size>+ expected "100px / \"a b\" 50px" but got "" -FAIL grid-template.reset assert_equals: reset expected "50px 50px 50px / 150px" but got "50px 50px 50px / 150px / none" -PASS grid-auto-columns -PASS grid-auto-columns.initial -PASS grid-auto-columns.<track-size>.auto -PASS grid-auto-columns.<track-size>.<track-breadth>.<length> -PASS grid-auto-columns.<track-size>.<track-breadth>.<percentage> -PASS grid-auto-columns.<track-size>.<track-breadth>.<flex> -PASS grid-auto-columns.<track-size>.<track-breadth>.min-content -PASS grid-auto-columns.<track-size>.<track-breadth>.max-content -PASS grid-auto-columns.<track-size>.<track-breadth>.minmax() -PASS grid-auto-columns.reset -PASS grid-auto-rows -PASS grid-auto-rows.initial -PASS grid-auto-rows.<track-size>.auto -PASS grid-auto-rows.<track-size>.<track-breadth>.<length> -PASS grid-auto-rows.<track-size>.<track-breadth>.<percentage> -PASS grid-auto-rows.<track-size>.<track-breadth>.<flex> -PASS grid-auto-rows.<track-size>.<track-breadth>.min-content -PASS grid-auto-rows.<track-size>.<track-breadth>.max-content -PASS grid-auto-rows.<track-size>.<track-breadth>.minmax() -PASS grid-auto-rows.reset -PASS grid-auto-flow -PASS grid-auto-flow.initial -PASS grid-auto-flow.row -PASS grid-auto-flow.column -FAIL grid-auto-flow.dense assert_equals: dense expected "dense" but got "row dense" -FAIL grid-auto-flow.row dense assert_equals: row dense expected "dense" but got "row dense" -PASS grid-auto-flow.column dense -PASS grid-auto-flow.reset -PASS grid-row-start -PASS grid-row-start.initial -PASS grid-row-start.auto -PASS grid-row-start.<custom-ident> -PASS grid-row-start.<integer> -PASS grid-row-start.<integer> <ident> -PASS grid-row-start.span <integer> -PASS grid-row-start.span <custom-ident> -PASS grid-row-start.span <integer> <custom-ident> -PASS grid-row-start.reset -PASS grid-column-start -PASS grid-column-start.initial -PASS grid-column-start.auto -PASS grid-column-start.<custom-ident> -PASS grid-column-start.<integer> -PASS grid-column-start.<integer> <ident> -PASS grid-column-start.span <integer> -PASS grid-column-start.span <custom-ident> -PASS grid-column-start.span <integer> <custom-ident> -PASS grid-column-start.reset -PASS grid-row-end -PASS grid-row-end.initial -PASS grid-row-end.auto -PASS grid-row-end.<custom-ident> -PASS grid-row-end.<integer> -PASS grid-row-end.<integer> <ident> -PASS grid-row-end.span <integer> -PASS grid-row-end.span <custom-ident> -PASS grid-row-end.span <integer> <custom-ident> -PASS grid-row-end.reset -PASS grid-column-end -PASS grid-column-end.initial -PASS grid-column-end.auto -PASS grid-column-end.<custom-ident> -PASS grid-column-end.<integer> -PASS grid-column-end.<integer> <ident> -PASS grid-column-end.span <integer> -PASS grid-column-end.span <custom-ident> -PASS grid-column-end.span <integer> <custom-ident> -PASS grid-column-end.reset -PASS grid-column -FAIL grid-column.initial assert_equals: initial value of grid-column should be auto expected "auto" but got "auto / auto" -FAIL grid-column.auto assert_equals: auto expected "auto" but got "auto / auto" -PASS grid-column.<custom-ident> -FAIL grid-column.<integer> start assert_equals: <integer> start expected "1" but got "1 / auto" -PASS grid-column.<integer> -PASS grid-column.<integer> <ident> -PASS grid-column.span <integer> -PASS grid-column.span <custom-ident> -PASS grid-column.span <integer> <custom-ident> -FAIL grid-column.reset assert_equals: reset expected "auto" but got "auto / auto" -PASS grid-row -FAIL grid-row.initial assert_equals: initial value of grid-row should be auto expected "auto" but got "auto / auto" -FAIL grid-row.auto assert_equals: auto expected "auto" but got "auto / auto" -PASS grid-row.<custom-ident> -FAIL grid-row.<integer> start assert_equals: <integer> start expected "1" but got "1 / auto" -PASS grid-row.<integer> -PASS grid-row.<integer> <ident> -PASS grid-row.span <integer> -PASS grid-row.span <custom-ident> -PASS grid-row.span <integer> <custom-ident> -FAIL grid-row.reset assert_equals: reset expected "auto" but got "auto / auto" -PASS grid-area -FAIL grid-area.initial assert_equals: initial value of grid-area should be auto expected "auto" but got "auto / auto / auto / auto" -FAIL grid-area.auto assert_equals: auto expected "auto" but got "auto / auto / auto / auto" -PASS grid-area.<custom-ident> -FAIL grid-area.<integer> start assert_equals: <integer> start expected "1 / 2" but got "1 / 2 / auto / auto" -PASS grid-area.<integer> -PASS grid-area.<integer> <ident> -PASS grid-area.span <integer> -PASS grid-area.span <custom-ident> -PASS grid-area.span <integer> <custom-ident> -FAIL grid-area.reset assert_equals: reset expected "auto" but got "auto / auto / auto / auto" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001-expected.txt deleted file mode 100644 index 549da5a5..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001-expected.txt +++ /dev/null
@@ -1,33 +0,0 @@ -This is a testharness.js-based test. -PASS 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr; -PASS 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr; -PASS 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr; -PASS 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr); -PASS 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr); -PASS 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr); -PASS 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr); -PASS 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr); -FAIL 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr; assert_in_array: gridTemplateColumns value "0px 0px" not in array ["50px 50px"] -FAIL 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr; assert_in_array: gridTemplateColumns value "0px 50px" not in array ["0px 100px"] -FAIL 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr; assert_in_array: gridTemplateColumns value "50px 0px" not in array ["100px 0px"] -FAIL 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr; assert_in_array: gridTemplateColumns value "25px 25px" not in array ["50px 50px"] -FAIL 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr; assert_in_array: gridTemplateColumns value "12.5px 37.5px" not in array ["25px 75px"] -FAIL 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr; assert_in_array: gridTemplateColumns value "0px 0px 50px" not in array ["50px 50px 0px"] -PASS 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr); -PASS 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr); -PASS 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr); -PASS 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr); -PASS 'grid' with: grid-template-columns: minmax(30px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(30px, 1fr) minmax(0, 1fr); -FAIL 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr); assert_in_array: gridTemplateColumns value "0px 0px" not in array ["100px 0px"] -FAIL 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "0px 50px" not in array ["100px 0px"] -FAIL 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "25px 25px" not in array ["100px 0px"] -FAIL 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr); assert_in_array: gridTemplateColumns value "25px 25px" not in array ["75px 25px"] -FAIL 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto; assert_in_array: gridTemplateColumns value "0px 50px" not in array ["100px 0px"] -FAIL 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto; assert_in_array: gridTemplateColumns value "50px 0px" not in array ["100px 0px"] -FAIL 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content; assert_in_array: gridTemplateColumns value "50px 0px" not in array ["100px 0px"] -FAIL 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto; assert_in_array: gridTemplateColumns value "0px 50px" not in array ["0px 100px"] -FAIL 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto; assert_in_array: gridTemplateColumns value "50px 0px" not in array ["0px 100px"] -FAIL 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto; assert_in_array: gridTemplateColumns value "25px 25px" not in array ["25px 75px"] -FAIL 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto; assert_in_array: gridTemplateColumns value "50px 0px" not in array ["25px 75px"] -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003-expected.txt deleted file mode 100644 index b2c708e..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003-expected.txt +++ /dev/null
@@ -1,106 +0,0 @@ -This is a testharness.js-based test. -Found 102 tests; 78 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS auto min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr; -PASS auto min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr; -PASS auto min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr; -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr); -PASS auto min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr; -PASS auto min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr; -PASS auto min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr; -PASS auto min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr; -PASS auto min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr; -PASS auto min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr; -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr); -PASS auto min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr); -PASS auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr); -PASS auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr); -PASS auto min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr); -PASS auto min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr); -PASS auto min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content; -PASS auto min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto; -PASS auto min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto; -PASS auto min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto; -PASS auto min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content; -PASS auto min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content; -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content; -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto; -PASS auto min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto; -PASS auto min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto; -PASS auto min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto; -PASS min-content min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr; -PASS min-content min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr; -PASS min-content min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr; -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr); -FAIL min-content min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr; assert_in_array: gridTemplateColumns value "0px 0px" not in array ["50px 50px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr; assert_in_array: gridTemplateColumns value "0px 60px" not in array ["0px 100px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr; assert_in_array: gridTemplateColumns value "60px 0px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr; assert_in_array: gridTemplateColumns value "30px 30px" not in array ["50px 50px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr; assert_in_array: gridTemplateColumns value "15px 45px" not in array ["25px 75px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr; assert_in_array: gridTemplateColumns value "0px 0px 60px" not in array ["50px 50px 0px"] -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr); -PASS min-content min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr); -FAIL min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr); assert_in_array: gridTemplateColumns value "0px 0px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "0px 60px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "30px 30px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr); assert_in_array: gridTemplateColumns value "30px 30px" not in array ["75px 25px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content; assert_in_array: gridTemplateColumns value "0px 0px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto; assert_in_array: gridTemplateColumns value "0px 60px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto; assert_in_array: gridTemplateColumns value "30px 30px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto; assert_in_array: gridTemplateColumns value "60px 0px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content; assert_in_array: gridTemplateColumns value "60px 0px" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content; assert_in_array: gridTemplateColumns value "60px 0px" not in array ["100px 0px"] -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content; -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto; -PASS min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto; -PASS min-content min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto; -PASS min-content min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto; -PASS 50px min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr; -PASS 50px min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr; -PASS 50px min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr; -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr); -FAIL 50px min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr; assert_in_array: gridTemplateColumns value "0px 0px" not in array ["25px 25px"] -PASS 50px min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr; -PASS 50px min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr; -PASS 50px min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr; -PASS 50px min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr; -FAIL 50px min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr; assert_in_array: gridTemplateColumns value "0px 0px 60px" not in array ["25px 25px 10px"] -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr); -PASS 50px min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr); -FAIL 50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr); assert_in_array: gridTemplateColumns value "0px 0px" not in array ["50px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "0px 60px" not in array ["50px 10px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "30px 30px" not in array ["50px 10px"] -PASS 50px min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr); -FAIL 50px min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content; assert_in_array: gridTemplateColumns value "0px 0px" not in array ["50px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto; assert_in_array: gridTemplateColumns value "0px 60px" not in array ["50px 10px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto; assert_in_array: gridTemplateColumns value "30px 30px" not in array ["50px 10px"] -PASS 50px min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto; -PASS 50px min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content; -PASS 50px min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content; -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content; -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto; -PASS 50px min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto; -PASS 50px min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto; -PASS 50px min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto; -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-area-computed-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-area-computed-expected.txt deleted file mode 100644 index 7572574..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-area-computed-expected.txt +++ /dev/null
@@ -1,32 +0,0 @@ -This is a testharness.js-based test. -PASS Property grid-area value 'auto / auto / auto / auto' -PASS Property grid-row value 'auto / auto' -PASS Property grid-column-end value 'auto' -PASS Property grid-row value '-zπ' -PASS Property grid-row-start value 'AZ' -PASS Property grid-column-start value '-_π' -PASS Property grid-row-end value '_9' -PASS Property grid-area value '1 / 90 -a- / auto / auto' -PASS Property grid-row value '2 az / auto' -PASS Property grid-column value '9 / -19 zA' -PASS Property grid-row-start value '-19' -PASS Property grid-row-start value '9 -Z_' -PASS Property grid-column-start value '-44 Z' -PASS Property grid-row-end value '1 -πA' -PASS Property grid-column-end value '5 π_' -PASS Property grid-area value 'span 2 i / auto / auto / auto' -PASS Property grid-row value 'span 2 / auto' -PASS Property grid-column-start value 'span 1 i' -PASS Property grid-row-end value 'span 2 i' -PASS Property grid-column-end value 'span 2' -FAIL Property grid-row-start value 'span i' assert_equals: expected "span i" but got "span 1 i" -FAIL Property grid-row value 'span i / auto' assert_equals: expected "span i / auto" but got "span 1 i / auto" -PASS Property grid-area value 'auto / i / auto / i' -PASS Property grid-area value 'auto / i / 2 j' -PASS Property grid-area value 'auto / i / 2 j / span 3 k' -PASS Property grid-row value 'auto / i' -PASS Property grid-column value '2 j / span 3 k' -PASS Property grid-column-end value '\31st' -PASS Property grid-column-end value '\31 st' -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-area-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-area-valid-expected.txt deleted file mode 100644 index 6ce291e..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-area-valid-expected.txt +++ /dev/null
@@ -1,60 +0,0 @@ -This is a testharness.js-based test. -Found 56 tests; 24 PASS, 32 FAIL, 0 TIMEOUT, 0 NOTRUN. -FAIL e.style['grid-area'] = "auto" should set the property value assert_equals: serialization should be canonical expected "auto" but got "auto / auto / auto / auto" -FAIL e.style['grid-area'] = "auto / auto" should set the property value assert_equals: serialization should be canonical expected "auto" but got "auto / auto / auto / auto" -FAIL e.style['grid-area'] = "auto / auto / auto" should set the property value assert_equals: serialization should be canonical expected "auto" but got "auto / auto / auto / auto" -FAIL e.style['grid-area'] = "auto / auto / auto / auto" should set the property value assert_equals: serialization should be canonical expected "auto" but got "auto / auto / auto / auto" -FAIL e.style['grid-area'] = "AuTo" should set the property value assert_equals: serialization should be canonical expected "auto" but got "auto / auto / auto / auto" -FAIL e.style['grid-row'] = "auto" should set the property value assert_equals: serialization should be canonical expected "auto" but got "auto / auto" -FAIL e.style['grid-row'] = "auto/auto" should set the property value assert_equals: serialization should be canonical expected "auto" but got "auto / auto" -PASS e.style['grid-column-end'] = "AuTo" should set the property value -FAIL e.style['grid-area'] = "--a" should set the property value assert_equals: serialization should be canonical expected "--a" but got "--a / --a / --a / --a" -FAIL e.style['grid-row'] = "-zπ" should set the property value assert_equals: serialization should be canonical expected "-zπ" but got "-zπ / -zπ" -FAIL e.style['grid-row'] = "-zπ/-zπ" should set the property value assert_equals: serialization should be canonical expected "-zπ" but got "-zπ / -zπ" -FAIL e.style['grid-row'] = "i / i" should set the property value assert_equals: serialization should be canonical expected "i" but got "i / i" -PASS e.style['grid-row-start'] = "AZ" should set the property value -PASS e.style['grid-column-start'] = "-_π" should set the property value -PASS e.style['grid-row-end'] = "_9" should set the property value -FAIL e.style['grid-area'] = "1" should set the property value assert_equals: serialization should be canonical expected "1" but got "1 / auto / auto / auto" -FAIL e.style['grid-area'] = "+90 -a-" should set the property value assert_equals: serialization should be canonical expected "90 -a-" but got "90 -a- / auto / auto / auto" -FAIL e.style['grid-row'] = "az 2" should set the property value assert_equals: serialization should be canonical expected "2 az" but got "2 az / auto" -FAIL e.style['grid-column'] = "9" should set the property value assert_equals: serialization should be canonical expected "9" but got "9 / auto" -FAIL e.style['grid-column'] = "-19 zA" should set the property value assert_equals: serialization should be canonical expected "-19 zA" but got "-19 zA / auto" -FAIL e.style['grid-column'] = "-A0 33" should set the property value assert_equals: serialization should be canonical expected "33 -A0" but got "33 -A0 / auto" -PASS e.style['grid-row-start'] = "-19" should set the property value -PASS e.style['grid-row-start'] = "9 -Z_" should set the property value -PASS e.style['grid-column-start'] = "+90" should set the property value -PASS e.style['grid-column-start'] = "Z -44" should set the property value -PASS e.style['grid-row-end'] = "1 -πA" should set the property value -PASS e.style['grid-column-end'] = "π_ +5" should set the property value -FAIL e.style['grid-area'] = "span 2 i" should set the property value assert_equals: serialization should be canonical expected "span 2 i" but got "span 2 i / auto / auto / auto" -FAIL e.style['grid-area'] = "i 2 SpAn" should set the property value assert_equals: serialization should be canonical expected "span 2 i" but got "span 2 i / auto / auto / auto" -FAIL e.style['grid-row'] = "span 2" should set the property value assert_equals: serialization should be canonical expected "span 2" but got "span 2 / auto" -FAIL e.style['grid-column'] = "i SpAn" should set the property value assert_equals: serialization should be canonical expected "span i" but got "span i / auto" -PASS e.style['grid-row-start'] = "span i" should set the property value -PASS e.style['grid-column-start'] = "SpAn i 2" should set the property value -PASS e.style['grid-row-end'] = "2 i span" should set the property value -PASS e.style['grid-column-end'] = "2 SpAn" should set the property value -FAIL e.style['grid-area'] = "auto / i" should set the property value assert_equals: serialization should be canonical expected "auto / i" but got "auto / i / auto / i" -FAIL e.style['grid-area'] = "auto / i / auto / i" should set the property value assert_equals: serialization should be canonical expected "auto / i" but got "auto / i / auto / i" -PASS e.style['grid-area'] = "auto / i / auto / 2 i" should set the property value -FAIL e.style['grid-area'] = "1 / i / auto / i" should set the property value assert_equals: serialization should be canonical expected "1 / i" but got "1 / i / auto / i" -FAIL e.style['grid-area'] = "1 / auto / auto / auto" should set the property value assert_equals: serialization should be canonical expected "1" but got "1 / auto / auto / auto" -FAIL e.style['grid-area'] = "1 / auto / i / auto" should set the property value assert_equals: serialization should be canonical expected "1 / auto / i" but got "1 / auto / i / auto" -PASS e.style['grid-area'] = "1 / j / i / k" should set the property value -FAIL e.style['grid-area'] = "1 / auto / 2 / auto" should set the property value assert_equals: serialization should be canonical expected "1 / auto / 2" but got "1 / auto / 2 / auto" -PASS e.style['grid-area'] = "1 / i / 2 / auto" should set the property value -PASS e.style['grid-area'] = "i / i / auto / auto" should set the property value -FAIL e.style['grid-area'] = "i / auto / i / auto" should set the property value assert_equals: serialization should be canonical expected "i / auto" but got "i / auto / i / auto" -FAIL e.style['grid-area'] = "auto / i / 2 j" should set the property value assert_equals: serialization should be canonical expected "auto / i / 2 j" but got "auto / i / 2 j / i" -PASS e.style['grid-area'] = "auto / i / 2 j / span 3 k" should set the property value -PASS e.style['grid-row'] = "auto / i" should set the property value -PASS e.style['grid-row'] = "i / auto" should set the property value -FAIL e.style['grid-row'] = "2 i / auto" should set the property value assert_equals: serialization should be canonical expected "2 i" but got "2 i / auto" -FAIL e.style['grid-row'] = "1 / auto" should set the property value assert_equals: serialization should be canonical expected "1" but got "1 / auto" -PASS e.style['grid-column'] = "2 j / span 3 k" should set the property value -PASS e.style['grid-column-end'] = "\\31st" should set the property value -PASS e.style['grid-column-end'] = "\\31 st" should set the property value -FAIL e.style['grid-column'] = "\\31st / \\31 st" should set the property value assert_in_array: serialization should be sound value "\\31 st / \\31 st" not in array ["\\31 st", "\\31st"] -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-auto-flow-computed-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-auto-flow-computed-expected.txt deleted file mode 100644 index 4d03b54..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-auto-flow-computed-expected.txt +++ /dev/null
@@ -1,10 +0,0 @@ -This is a testharness.js-based test. -PASS Property grid-auto-flow value 'row' -PASS Property grid-auto-flow value 'column' -FAIL Property grid-auto-flow value 'row dense' assert_equals: expected "dense" but got "row dense" -PASS Property grid-auto-flow value 'column dense' -FAIL Property grid-auto-flow value 'dense row' assert_equals: expected "dense" but got "row dense" -PASS Property grid-auto-flow value 'dense column' -FAIL Property grid-auto-flow value 'dense' assert_equals: expected "dense" but got "row dense" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-auto-flow-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-auto-flow-valid-expected.txt deleted file mode 100644 index d2139ff..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-auto-flow-valid-expected.txt +++ /dev/null
@@ -1,10 +0,0 @@ -This is a testharness.js-based test. -PASS e.style['grid-auto-flow'] = "row" should set the property value -PASS e.style['grid-auto-flow'] = "column" should set the property value -FAIL e.style['grid-auto-flow'] = "row dense" should set the property value assert_equals: serialization should be canonical expected "dense" but got "row dense" -FAIL e.style['grid-auto-flow'] = "dense row" should set the property value assert_equals: serialization should be canonical expected "dense" but got "row dense" -PASS e.style['grid-auto-flow'] = "dense" should set the property value -PASS e.style['grid-auto-flow'] = "column dense" should set the property value -PASS e.style['grid-auto-flow'] = "dense column" should set the property value -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-columns-rows-get-set-multiple-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-columns-rows-get-set-multiple-expected.txt deleted file mode 100644 index 512bd0d..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-columns-rows-get-set-multiple-expected.txt +++ /dev/null
@@ -1,43 +0,0 @@ -This is a testharness.js-based test. -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFixedElement' : grid-template-columns = '7px 11px', grid-template-rows = '17px 2px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithPercentElement' : grid-template-columns = '400px 800px', grid-template-rows = '150px 450px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithPercentWithoutSize' : grid-template-columns = '3.5px 7px', grid-template-rows = '4px 12px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithAutoElement' : grid-template-columns = '0px 17px', grid-template-rows = '0px 3px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithEMElement' : grid-template-columns = '100px 120px', grid-template-rows = '150px 170px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithThreeItems' : grid-template-columns = '15px 0px 100px', grid-template-rows = '120px 18px 0px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFitContentAndFitAvailable' : grid-template-columns = 'none', grid-template-rows = 'none' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxContent' : grid-template-columns = '0px 0px', grid-template-rows = '0px 0px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxContentWithChildrenElement' : grid-template-columns = '7px 17px', grid-template-rows = '16px 3px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxAndFixed' : grid-template-columns = '240px 15px', grid-template-rows = '120px 210px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxAndMinMaxContent' : grid-template-columns = '240px 15px', grid-template-rows = '120px 210px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFractionFraction' : grid-template-columns = '320px 480px', grid-template-rows = '225px 375px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFractionMinMax' : grid-template-columns = '45px 755px', grid-template-rows = '586px 14px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcCalc' : grid-template-columns = '200px 100px', grid-template-rows = '150px 75px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcAndFixed' : grid-template-columns = '400px 80px', grid-template-rows = '88px 150px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcAndMinMax' : grid-template-columns = '190px 80px', grid-template-rows = '150px 53px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcInsideMinMax' : grid-template-columns = '400px 120px', grid-template-rows = '150px 175px' -PASS Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithAutoInsideMinMax' : grid-template-columns = '0px 30px', grid-template-rows = '132px 60px' -PASS Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '18px 22px', element.style.gridTemplateColumns = '18px 22px', grid-template-rows = '66px 70px', element.style.gridTemplateRows = '66px 70px' -PASS Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '440px 640px', element.style.gridTemplateColumns = '55% 80%', grid-template-rows = '240px 378px', element.style.gridTemplateRows = '40% 63%' -PASS Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '0px 0px', element.style.gridTemplateColumns = 'auto auto', grid-template-rows = '0px 0px', element.style.gridTemplateRows = 'auto auto' -PASS Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '0px 160px 22px', element.style.gridTemplateColumns = 'auto 16em 22px', grid-template-rows = '336px 100px 0px', element.style.gridTemplateRows = '56% 10em auto' -PASS Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '160px 20px', element.style.gridTemplateColumns = '16em minmax(16px, 20px)', grid-template-rows = '90px 0px', element.style.gridTemplateRows = 'minmax(10%, 15%) auto' -PASS Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '160px 640px', element.style.gridTemplateColumns = '16em 2fr', grid-template-rows = '600px 0px', element.style.gridTemplateRows = '14fr auto' -PASS Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '25px 20px', element.style.gridTemplateColumns = 'calc(25px) calc(2em)', grid-template-rows = '0px 60px', element.style.gridTemplateRows = 'auto calc(10%)' -FAIL Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '345px 92px', element.style.gridTemplateColumns = 'calc(25px + 40%) minmax(min-content, calc(10% + 12px))', grid-template-rows = '100px 0px', element.style.gridTemplateRows = 'minmax(calc(75% - 350px), max-content) auto' assert_equals: expected "calc(40% + 25px) minmax(min-content, calc(10% + 12px))" but got "calc(25px + 40%) minmax(min-content, calc(10% + 12px))" -PASS Test setting wrong/invalid values through CSS -PASS Test setting bad JS values: grid-template-columns = 'none auto', grid-template-rows = 'none auto' -PASS Test setting bad JS values: grid-template-columns = 'none 16em', grid-template-rows = 'none 56%' -PASS Test setting bad JS values: grid-template-columns = 'none none', grid-template-rows = 'none none' -PASS Test setting bad JS values: grid-template-columns = 'auto none', grid-template-rows = 'auto none' -PASS Test setting bad JS values: grid-template-columns = 'auto none 16em', grid-template-rows = 'auto 18em none' -PASS Test setting bad JS values: grid-template-columns = '-webkit-fit-content -webkit-fit-content', grid-template-rows = '-webkit-fit-available -webkit-fit-available' -PASS Test setting bad JS values: grid-template-columns = '-10px minmax(16px, 32px)', grid-template-rows = 'minmax(10%, 15%) -10vw' -PASS Test setting bad JS values: grid-template-columns = '10px minmax(16px, -1vw)', grid-template-rows = 'minmax(-1%, 15%) 10vw' -PASS Test setting bad JS values: grid-template-columns = '10px calc(16px 30px)', grid-template-rows = 'calc(25px + auto) 2em' -PASS Test setting bad JS values: grid-template-columns = 'minmax(min-content, calc() 250px', grid-template-rows = 'calc(2em(' -PASS Test setting grid-template-columns and grid-template-rows to 'inherit' through JS -PASS Test the default value -PASS Test setting grid-template-columns and grid-template-rows to 'initial' through JS -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-shorthand-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-shorthand-expected.txt deleted file mode 100644 index d2c4b0fd..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-shorthand-expected.txt +++ /dev/null
@@ -1,60 +0,0 @@ -This is a testharness.js-based test. -Found 56 tests; 31 PASS, 25 FAIL, 0 TIMEOUT, 0 NOTRUN. -FAIL e.style['grid'] = "none" should set grid-auto-columns assert_equals: grid-auto-columns should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = "none" should set grid-auto-flow assert_equals: grid-auto-flow should be canonical expected "row" but got "initial" -FAIL e.style['grid'] = "none" should set grid-auto-rows assert_equals: grid-auto-rows should be canonical expected "auto" but got "initial" -PASS e.style['grid'] = "none" should set grid-template-areas -PASS e.style['grid'] = "none" should set grid-template-columns -PASS e.style['grid'] = "none" should set grid-template-rows -PASS e.style['grid'] = "none" should not set unrelated longhands -FAIL e.style['grid'] = "10px / 20%" should set grid-auto-columns assert_equals: grid-auto-columns should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = "10px / 20%" should set grid-auto-flow assert_equals: grid-auto-flow should be canonical expected "row" but got "initial" -FAIL e.style['grid'] = "10px / 20%" should set grid-auto-rows assert_equals: grid-auto-rows should be canonical expected "auto" but got "initial" -PASS e.style['grid'] = "10px / 20%" should set grid-template-areas -PASS e.style['grid'] = "10px / 20%" should set grid-template-columns -PASS e.style['grid'] = "10px / 20%" should set grid-template-rows -PASS e.style['grid'] = "10px / 20%" should not set unrelated longhands -FAIL e.style['grid'] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-auto-columns assert_equals: grid-auto-columns should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-auto-flow assert_equals: grid-auto-flow should be canonical expected "row" but got "initial" -FAIL e.style['grid'] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-auto-rows assert_equals: grid-auto-rows should be canonical expected "auto" but got "initial" -PASS e.style['grid'] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-areas -PASS e.style['grid'] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-columns -PASS e.style['grid'] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-rows -PASS e.style['grid'] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should not set unrelated longhands -FAIL e.style['grid'] = "[header-top] \"a a a\" [header-bottom] [main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto" should set grid-auto-columns assert_equals: grid-auto-columns should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = "[header-top] \"a a a\" [header-bottom] [main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto" should set grid-auto-flow assert_equals: grid-auto-flow should be canonical expected "row" but got "initial" -FAIL e.style['grid'] = "[header-top] \"a a a\" [header-bottom] [main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto" should set grid-auto-rows assert_equals: grid-auto-rows should be canonical expected "auto" but got "initial" -PASS e.style['grid'] = "[header-top] \"a a a\" [header-bottom] [main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto" should set grid-template-areas -PASS e.style['grid'] = "[header-top] \"a a a\" [header-bottom] [main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto" should set grid-template-columns -PASS e.style['grid'] = "[header-top] \"a a a\" [header-bottom] [main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto" should set grid-template-rows -PASS e.style['grid'] = "[header-top] \"a a a\" [header-bottom] [main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto" should not set unrelated longhands -FAIL e.style['grid'] = " \"a a a\" \"b b b\" 1fr/ auto 1fr auto" should set grid-auto-columns assert_equals: grid-auto-columns should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = " \"a a a\" \"b b b\" 1fr/ auto 1fr auto" should set grid-auto-flow assert_equals: grid-auto-flow should be canonical expected "row" but got "initial" -FAIL e.style['grid'] = " \"a a a\" \"b b b\" 1fr/ auto 1fr auto" should set grid-auto-rows assert_equals: grid-auto-rows should be canonical expected "auto" but got "initial" -PASS e.style['grid'] = " \"a a a\" \"b b b\" 1fr/ auto 1fr auto" should set grid-template-areas -PASS e.style['grid'] = " \"a a a\" \"b b b\" 1fr/ auto 1fr auto" should set grid-template-columns -PASS e.style['grid'] = " \"a a a\" \"b b b\" 1fr/ auto 1fr auto" should set grid-template-rows -PASS e.style['grid'] = " \"a a a\" \"b b b\" 1fr/ auto 1fr auto" should not set unrelated longhands -FAIL e.style['grid'] = " [] \"a a a\" [] [] \"b b b\" 1fr [] / [] auto 1fr [] auto []" should set grid-auto-columns assert_equals: grid-auto-columns should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = " [] \"a a a\" [] [] \"b b b\" 1fr [] / [] auto 1fr [] auto []" should set grid-auto-flow assert_equals: grid-auto-flow should be canonical expected "row" but got "initial" -FAIL e.style['grid'] = " [] \"a a a\" [] [] \"b b b\" 1fr [] / [] auto 1fr [] auto []" should set grid-auto-rows assert_equals: grid-auto-rows should be canonical expected "auto" but got "initial" -PASS e.style['grid'] = " [] \"a a a\" [] [] \"b b b\" 1fr [] / [] auto 1fr [] auto []" should set grid-template-areas -PASS e.style['grid'] = " [] \"a a a\" [] [] \"b b b\" 1fr [] / [] auto 1fr [] auto []" should set grid-template-columns -PASS e.style['grid'] = " [] \"a a a\" [] [] \"b b b\" 1fr [] / [] auto 1fr [] auto []" should set grid-template-rows -PASS e.style['grid'] = " [] \"a a a\" [] [] \"b b b\" 1fr [] / [] auto 1fr [] auto []" should not set unrelated longhands -PASS e.style['grid'] = "10px / auto-flow dense 20px" should set grid-auto-columns -PASS e.style['grid'] = "10px / auto-flow dense 20px" should set grid-auto-flow -FAIL e.style['grid'] = "10px / auto-flow dense 20px" should set grid-auto-rows assert_equals: grid-auto-rows should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = "10px / auto-flow dense 20px" should set grid-template-areas assert_equals: grid-template-areas should be canonical expected "none" but got "initial" -FAIL e.style['grid'] = "10px / auto-flow dense 20px" should set grid-template-columns assert_equals: grid-template-columns should be canonical expected "none" but got "initial" -PASS e.style['grid'] = "10px / auto-flow dense 20px" should set grid-template-rows -PASS e.style['grid'] = "10px / auto-flow dense 20px" should not set unrelated longhands -FAIL e.style['grid'] = "auto-flow dense 30px / 40px" should set grid-auto-columns assert_equals: grid-auto-columns should be canonical expected "auto" but got "initial" -FAIL e.style['grid'] = "auto-flow dense 30px / 40px" should set grid-auto-flow assert_equals: grid-auto-flow should be canonical expected "dense" but got "row dense" -PASS e.style['grid'] = "auto-flow dense 30px / 40px" should set grid-auto-rows -FAIL e.style['grid'] = "auto-flow dense 30px / 40px" should set grid-template-areas assert_equals: grid-template-areas should be canonical expected "none" but got "initial" -PASS e.style['grid'] = "auto-flow dense 30px / 40px" should set grid-template-columns -FAIL e.style['grid'] = "auto-flow dense 30px / 40px" should set grid-template-rows assert_equals: grid-template-rows should be canonical expected "none" but got "initial" -PASS e.style['grid'] = "auto-flow dense 30px / 40px" should not set unrelated longhands -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-shorthand-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-shorthand-valid-expected.txt deleted file mode 100644 index f6180f77..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-shorthand-valid-expected.txt +++ /dev/null
@@ -1,40 +0,0 @@ -This is a testharness.js-based test. -FAIL e.style['grid'] = "none" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "none / none" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "auto / auto" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "none / [a] 0px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "none / [] 0px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] 10px / auto" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] 10px / none" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[] 10px [] / [] auto []" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] \"a\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] \"a\" 10px []" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[] \"a\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] \"a\" 10px [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" auto" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" / 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" / 20%" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" / 5fr" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] \"a\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] \"a\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[] \"a\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [] [] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] [b] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" / 0" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" 10px / 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] \"b\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] \"b\" 10px [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] [a] \"b\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] [] \"b\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" 10px [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "[a] \"a\" [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" \"a\" [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" [a] \"b\" [a] / 0" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid'] = "\"a\" \"a\" [a] [a] \"b\" / auto" should set the property value assert_not_equals: property should be set got disallowed value "" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-columns-computed-nogrid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-columns-computed-nogrid-expected.txt deleted file mode 100644 index e53ace5..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-columns-computed-nogrid-expected.txt +++ /dev/null
@@ -1,27 +0,0 @@ -This is a testharness.js-based test. -PASS Property grid-template-columns value 'none' -PASS Property grid-template-columns value '1px' -PASS Property grid-template-columns value '1px [a]' -PASS Property grid-template-columns value '1px [a] 2px' -PASS Property grid-template-columns value '[a] 1px' -PASS Property grid-template-columns value '[a] 1px [b]' -FAIL Property grid-template-columns value '1px repeat(1, 2px) 3px' assert_equals: expected "1px repeat(1, 2px) 3px" but got "1px 2px 3px" -PASS Property grid-template-columns value '1px repeat(auto-fill, 2px) 3px' -PASS Property grid-template-columns value '1px repeat(auto-fit, 2px) 3px' -FAIL Property grid-template-columns value '1px [a] repeat(1, 2px 3px) [b] 4px' assert_equals: expected "1px [a] repeat(1, 2px 3px) [b] 4px" but got "1px [a] 2px 3px [b] 4px" -PASS Property grid-template-columns value '1px [a] repeat(auto-fill, 2px 3px) [b] 4px' -PASS Property grid-template-columns value '1px [a] repeat(auto-fit, 2px 3px) [b] 4px' -FAIL Property grid-template-columns value '1px [a] repeat(1, [b] 2px [c]) [d] 3px' assert_equals: expected "1px [a] repeat(1, [b] 2px [c]) [d] 3px" but got "1px [a b] 2px [c d] 3px" -PASS Property grid-template-columns value '1px [a] repeat(auto-fill, [b] 2px [c]) [d] 3px' -PASS Property grid-template-columns value '1px [a] repeat(auto-fit, [b] 2px [c]) [d] 3px' -FAIL Property grid-template-columns value '[a] 1px repeat(1, 2px [b] 3px) 4px [d]' assert_equals: expected "[a] 1px repeat(1, 2px [b] 3px) 4px [d]" but got "[a] 1px 2px [b] 3px 4px [d]" -PASS Property grid-template-columns value '[a] 1px repeat(auto-fill, 2px [b] 3px) 4px [d]' -PASS Property grid-template-columns value '[a] 1px repeat(auto-fit, 2px [b] 3px) 4px [d]' -FAIL Property grid-template-rows value '100% [a] repeat(1, [b] 200% [c]) [d] 300%' assert_equals: expected "100% [a] repeat(1, [b] 200% [c]) [d] 300%" but got "100% [a b] 200% [c d] 300%" -PASS Property grid-template-rows value '100% [a] repeat(auto-fill, [b] 200% [c]) [d] 300%' -PASS Property grid-template-rows value '100% [a] repeat(auto-fit, [b] 200% [c]) [d] 300%' -FAIL Property grid-template-columns value '[a] 1em repeat(1, 2em [b] 3em) 4em [d]' assert_equals: expected "[a] 1px repeat(1, 2px [b] 3px) 4px [d]" but got "[a] 1px 2px [b] 3px 4px [d]" -PASS Property grid-template-columns value '[a] 1em repeat(auto-fill, 2em [b] 3em) 4em [d]' -PASS Property grid-template-columns value '[a] 1em repeat(auto-fit, 2em [b] 3em) 4em [d]' -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-rows-computed-nogrid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-rows-computed-nogrid-expected.txt deleted file mode 100644 index 6731882b..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-rows-computed-nogrid-expected.txt +++ /dev/null
@@ -1,27 +0,0 @@ -This is a testharness.js-based test. -PASS Property grid-template-rows value 'none' -PASS Property grid-template-rows value '1px' -PASS Property grid-template-rows value '1px [a]' -PASS Property grid-template-rows value '1px [a] 2px' -PASS Property grid-template-rows value '[a] 1px' -PASS Property grid-template-rows value '[a] 1px [b]' -FAIL Property grid-template-rows value '1px repeat(1, 2px) 3px' assert_equals: expected "1px repeat(1, 2px) 3px" but got "1px 2px 3px" -PASS Property grid-template-rows value '1px repeat(auto-fill, 2px) 3px' -PASS Property grid-template-rows value '1px repeat(auto-fit, 2px) 3px' -FAIL Property grid-template-rows value '1px [a] repeat(1, 2px 3px) [b] 4px' assert_equals: expected "1px [a] repeat(1, 2px 3px) [b] 4px" but got "1px [a] 2px 3px [b] 4px" -PASS Property grid-template-rows value '1px [a] repeat(auto-fill, 2px 3px) [b] 4px' -PASS Property grid-template-rows value '1px [a] repeat(auto-fit, 2px 3px) [b] 4px' -FAIL Property grid-template-rows value '1px [a] repeat(1, [b] 2px [c]) [d] 3px' assert_equals: expected "1px [a] repeat(1, [b] 2px [c]) [d] 3px" but got "1px [a b] 2px [c d] 3px" -PASS Property grid-template-rows value '1px [a] repeat(auto-fill, [b] 2px [c]) [d] 3px' -PASS Property grid-template-rows value '1px [a] repeat(auto-fit, [b] 2px [c]) [d] 3px' -FAIL Property grid-template-rows value '[a] 1px repeat(1, 2px [b] 3px) 4px [d]' assert_equals: expected "[a] 1px repeat(1, 2px [b] 3px) 4px [d]" but got "[a] 1px 2px [b] 3px 4px [d]" -PASS Property grid-template-rows value '[a] 1px repeat(auto-fill, 2px [b] 3px) 4px [d]' -PASS Property grid-template-rows value '[a] 1px repeat(auto-fit, 2px [b] 3px) 4px [d]' -FAIL Property grid-template-rows value '100% [a] repeat(1, [b] 200% [c]) [d] 300%' assert_equals: expected "100% [a] repeat(1, [b] 200% [c]) [d] 300%" but got "100% [a b] 200% [c d] 300%" -PASS Property grid-template-rows value '100% [a] repeat(auto-fill, [b] 200% [c]) [d] 300%' -PASS Property grid-template-rows value '100% [a] repeat(auto-fit, [b] 200% [c]) [d] 300%' -FAIL Property grid-template-rows value '[a] 1em repeat(1, 2em [b] 3em) 4em [d]' assert_equals: expected "[a] 1px repeat(1, 2px [b] 3px) 4px [d]" but got "[a] 1px 2px [b] 3px 4px [d]" -PASS Property grid-template-rows value '[a] 1em repeat(auto-fill, 2em [b] 3em) 4em [d]' -PASS Property grid-template-rows value '[a] 1em repeat(auto-fit, 2em [b] 3em) 4em [d]' -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-shorthand-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-shorthand-valid-expected.txt deleted file mode 100644 index ae7aee7..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/parsing/grid-template-shorthand-valid-expected.txt +++ /dev/null
@@ -1,40 +0,0 @@ -This is a testharness.js-based test. -FAIL e.style['grid-template'] = "none" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "none / none" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "auto / auto" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "none / [a] 0px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "none / [] 0px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] 10px / auto" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] 10px / none" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[] 10px [] / [] auto []" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] \"a\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] \"a\" 10px []" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[] \"a\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] \"a\" 10px [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" auto" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" / 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" / 20%" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" / 5fr" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] \"a\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] \"a\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[] \"a\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [] [] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] [b] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] \"b\"" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" / 0" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" 10px / 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] \"b\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] \"b\" 10px [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] [a] \"b\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] [] \"b\" 10px" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" 10px [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "[a] \"a\" [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" \"a\" [a] \"b\" [a]" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" [a] \"b\" [a] / 0" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['grid-template'] = "\"a\" \"a\" [a] [a] \"b\" / auto" should set the property value assert_not_equals: property should be set got disallowed value "" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https-expected.txt index 0a884ee11..000a3b27 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https-expected.txt
@@ -1,8 +1,8 @@ This is a testharness.js-based test. PASS CORS or Credentialless and dedicated worker PASS fetch same-origin + credentialless worker -PASS fetch same-origin -FAIL fetch cross-origin assert_equals: coep:credentialless => expected (string) "cross_origin" but got (undefined) undefined +FAIL fetch same-origin assert_equals: coep:credentialless => expected "Worker blocked" but got "same_origin" +FAIL fetch cross-origin assert_equals: coep:credentialless => expected (string) "Worker blocked" but got (undefined) undefined FAIL fetch cross-origin + credentialless worker assert_equals: coep:none => expected (undefined) undefined but got (string) "cross_origin" Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https.html index 00b23c8..e02620e 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https.html +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https.html
@@ -36,6 +36,11 @@ const w_credentialless = window.open(w_credentialless_url); add_completion_callback(() => w_credentialless.close()); + let GetCookie = (response) => { + const headers_credentialless = JSON.parse(response); + return parseCookies(headers_credentialless)[cookie_key]; + } + const dedicatedWorkerTest = function( description, origin, coep_for_worker, expected_cookies_control, @@ -46,32 +51,54 @@ const worker_token_1 = token(); const worker_token_2 = token(); + // Used to check for errors creating the DedicatedWorker. + const worker_error_1 = token(); + const worker_error_2 = token(); + const w_worker_src_1 = same_origin + executor_js_path + coep_for_worker + `&uuid=${worker_token_1}`; - send(w_control_token, `new Worker("${w_worker_src_1}", {});`); + send(w_control_token, ` + new Worker("${w_worker_src_1}", {}); + worker.onerror = () => { + send("${worker_error_1}", "Worker blocked"); + } + `); const w_worker_src_2 = same_origin + executor_js_path + coep_for_worker + `&uuid=${worker_token_2}`; - send(w_credentialless_token, `new Worker("${w_worker_src_2}", {});`); + send(w_credentialless_token, ` + const worker = new Worker("${w_worker_src_2}", {}); + worker.onerror = () => { + send("${worker_error_2}", "Worker blocked"); + } + `); // Fetch resources with the workers. const request_token_1 = token(); const request_token_2 = token(); const request_url_1 = showRequestHeaders(origin, request_token_1); const request_url_2 = showRequestHeaders(origin, request_token_2); - send(worker_token_1, - `fetch("${request_url_1}", {mode: 'no-cors', credentials: 'include'})`); - send(worker_token_2, - `fetch("${request_url_2}", {mode: 'no-cors', credentials: 'include'})`); - // Retrieve the resource request info. - const headers_control = JSON.parse(await receive(request_token_1)); - const headers_credentialless = JSON.parse(await receive(request_token_2)); + send(worker_token_1, ` + fetch("${request_url_1}", {mode: 'no-cors', credentials: 'include'}) + `); + send(worker_token_2, ` + fetch("${request_url_2}", {mode: 'no-cors', credentials: 'include'}); + `); - assert_equals(parseCookies(headers_control)[cookie_key], + const response_control = await Promise.race([ + receive(worker_error_1), + receive(request_token_1).then(GetCookie) + ]); + assert_equals(response_control, expected_cookies_control, "coep:none => "); - assert_equals(parseCookies(headers_credentialless)[cookie_key], + + const response_credentialless = await Promise.race([ + receive(worker_error_2), + receive(request_token_2).then(GetCookie) + ]); + assert_equals(response_credentialless, expected_cookies_credentialless, "coep:credentialless => "); }, `fetch ${description}`) @@ -85,12 +112,12 @@ dedicatedWorkerTest("same-origin", same_origin, coep_none, cookie_same_origin, - cookie_same_origin); + "Worker blocked"); dedicatedWorkerTest("cross-origin", cross_origin, coep_none, cookie_cross_origin, - cookie_cross_origin); + "Worker blocked"); dedicatedWorkerTest("cross-origin + credentialless worker", cross_origin, coep_credentialless,
diff --git a/third_party/blink/web_tests/inspector-protocol/debugger/access-obsolete-frame-expected.txt b/third_party/blink/web_tests/inspector-protocol/debugger/access-obsolete-frame-expected.txt deleted file mode 100644 index e217399..0000000 --- a/third_party/blink/web_tests/inspector-protocol/debugger/access-obsolete-frame-expected.txt +++ /dev/null
@@ -1,10 +0,0 @@ -Tests that accessing old call frame does not work. -Paused on 'debugger;' -resume -restartFrame -PASS, error message as expected -evaluateOnFrame -PASS, error message as expected -setVariableValue -PASS, error message as expected -
diff --git a/third_party/blink/web_tests/inspector-protocol/debugger/access-obsolete-frame.js b/third_party/blink/web_tests/inspector-protocol/debugger/access-obsolete-frame.js deleted file mode 100644 index 8316d803..0000000 --- a/third_party/blink/web_tests/inspector-protocol/debugger/access-obsolete-frame.js +++ /dev/null
@@ -1,35 +0,0 @@ -(async function(testRunner) { - var {page, session, dp} = await testRunner.startBlank('Tests that accessing old call frame does not work.'); - - function logErrorResponse(response) { - if (response.error) { - if (response.error.message.indexOf('Can only perform operation while paused.') != -1) { - testRunner.log('PASS, error message as expected'); - return; - } - } - testRunner.log('FAIL, unexpected error message'); - testRunner.log(JSON.stringify(response)); - } - - dp.Debugger.enable(); - dp.Runtime.evaluate({expression: 'setTimeout(() => { debugger; }, 0)' }); - - var messageObject = await dp.Debugger.oncePaused(); - testRunner.log(`Paused on 'debugger;'`); - var topFrame = messageObject.params.callFrames[0]; - var obsoleteTopFrameId = topFrame.callFrameId; - - await dp.Debugger.resume(); - testRunner.log('resume'); - testRunner.log('restartFrame'); - - logErrorResponse(await dp.Debugger.restartFrame({callFrameId: obsoleteTopFrameId})); - testRunner.log('evaluateOnFrame'); - - logErrorResponse(await dp.Debugger.evaluateOnCallFrame({callFrameId: obsoleteTopFrameId, expression: '0'})); - testRunner.log('setVariableValue'); - - logErrorResponse(await dp.Debugger.setVariableValue({callFrameId: obsoleteTopFrameId, scopeNumber: 0, variableName: 'a', newValue: { value: 0 }})); - testRunner.completeTest(); -})
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt deleted file mode 100644 index c6d0531..0000000 --- a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -PASS .grid 4 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt deleted file mode 100644 index 4166e14..0000000 --- a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt +++ /dev/null
@@ -1,36 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -PASS .grid 4 -PASS .grid 5 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt deleted file mode 100644 index f95a4a7..0000000 --- a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt +++ /dev/null
@@ -1,38 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -PASS .grid 4 -PASS .grid 5 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -PASS .grid 34 -PASS .grid 35 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt deleted file mode 100644 index f95a4a7..0000000 --- a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt +++ /dev/null
@@ -1,38 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -PASS .grid 4 -PASS .grid 5 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -PASS .grid 34 -PASS .grid 35 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt deleted file mode 100644 index 4166e14..0000000 --- a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt +++ /dev/null
@@ -1,36 +0,0 @@ -This is a testharness.js-based test. -PASS .grid 1 -PASS .grid 2 -PASS .grid 3 -PASS .grid 4 -PASS .grid 5 -PASS .grid 6 -PASS .grid 7 -PASS .grid 8 -PASS .grid 9 -PASS .grid 10 -PASS .grid 11 -PASS .grid 12 -PASS .grid 13 -PASS .grid 14 -PASS .grid 15 -PASS .grid 16 -PASS .grid 17 -PASS .grid 18 -PASS .grid 19 -PASS .grid 20 -PASS .grid 21 -PASS .grid 22 -PASS .grid 23 -PASS .grid 24 -PASS .grid 25 -PASS .grid 26 -PASS .grid 27 -PASS .grid 28 -PASS .grid 29 -PASS .grid 30 -PASS .grid 31 -PASS .grid 32 -PASS .grid 33 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003-expected.txt deleted file mode 100644 index 0cb1fc2..0000000 --- a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003-expected.txt +++ /dev/null
@@ -1,106 +0,0 @@ -This is a testharness.js-based test. -Found 102 tests; 0 PASS, 102 FAIL, 0 TIMEOUT, 0 NOTRUN. -FAIL auto min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr; assert_in_array: gridTemplateColumns value "0fr" not in array ["100px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr; assert_in_array: gridTemplateColumns value "1fr" not in array ["100px"] -FAIL auto min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr; assert_in_array: gridTemplateColumns value "2fr" not in array ["100px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr)" not in array ["0px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0.5fr)" not in array ["30px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(0px, 1fr)" not in array ["60px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr); assert_in_array: gridTemplateColumns value "minmax(0px, 2fr)" not in array ["60px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr); assert_in_array: gridTemplateColumns value "minmax(75px, 1fr)" not in array ["75px"] -FAIL auto min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr; assert_in_array: gridTemplateColumns value "0fr 0fr" not in array ["0px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr; assert_in_array: gridTemplateColumns value "0fr 1fr" not in array ["0px 60px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr; assert_in_array: gridTemplateColumns value "1fr 0fr" not in array ["60px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr; assert_in_array: gridTemplateColumns value "1fr 1fr" not in array ["30px 30px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr; assert_in_array: gridTemplateColumns value "1fr 3fr" not in array ["15px 45px"] -FAIL auto min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr; assert_in_array: gridTemplateColumns value "0fr 0fr 1fr" not in array ["0px 0px 60px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) minmax(0px, 0fr)" not in array ["0px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) minmax(0px, 1fr)" not in array ["0px 60px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(15px, 0fr) minmax(0px, 1fr)" not in array ["15px 45px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(20px, 1fr) minmax(0px, 1fr)" not in array ["30px 30px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(40px, 1fr) minmax(0px, 1fr)" not in array ["40px 20px"] -FAIL auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr); assert_in_array: gridTemplateColumns value "0fr minmax(0px, 0fr)" not in array ["0px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "0fr minmax(0px, 1fr)" not in array ["0px 60px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "1fr minmax(0px, 1fr)" not in array ["30px 30px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr); assert_in_array: gridTemplateColumns value "1fr minmax(25px, 1fr)" not in array ["30px 30px"] -FAIL auto min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content; assert_in_array: gridTemplateColumns value "0fr min-content" not in array ["0px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto; assert_in_array: gridTemplateColumns value "0fr auto" not in array ["0px 60px"] -FAIL auto min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto; assert_in_array: gridTemplateColumns value "0.5fr auto" not in array ["30px 30px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto; assert_in_array: gridTemplateColumns value "1fr auto" not in array ["60px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content; assert_in_array: gridTemplateColumns value "1fr max-content" not in array ["60px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content; assert_in_array: gridTemplateColumns value "1fr min-content" not in array ["60px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content; assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) min-content" not in array ["0px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto; assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) auto" not in array ["0px 60px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto; assert_in_array: gridTemplateColumns value "minmax(0px, 1fr) auto" not in array ["60px 0px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto; assert_in_array: gridTemplateColumns value "minmax(25px, 0fr) auto" not in array ["25px 35px"] -FAIL auto min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto; assert_in_array: gridTemplateColumns value "minmax(25px, 1fr) auto" not in array ["60px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr; assert_in_array: gridTemplateColumns value "0fr" not in array ["100px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr; assert_in_array: gridTemplateColumns value "1fr" not in array ["100px"] -FAIL min-content min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr; assert_in_array: gridTemplateColumns value "2fr" not in array ["100px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr)" not in array ["0px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0.5fr)" not in array ["30px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(0px, 1fr)" not in array ["60px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr); assert_in_array: gridTemplateColumns value "minmax(0px, 2fr)" not in array ["60px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr); assert_in_array: gridTemplateColumns value "minmax(75px, 1fr)" not in array ["75px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr; assert_in_array: gridTemplateColumns value "0fr 0fr" not in array ["50px 50px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr; assert_in_array: gridTemplateColumns value "0fr 1fr" not in array ["0px 100px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr; assert_in_array: gridTemplateColumns value "1fr 0fr" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr; assert_in_array: gridTemplateColumns value "1fr 1fr" not in array ["50px 50px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr; assert_in_array: gridTemplateColumns value "1fr 3fr" not in array ["25px 75px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr; assert_in_array: gridTemplateColumns value "0fr 0fr 1fr" not in array ["50px 50px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) minmax(0px, 0fr)" not in array ["0px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) minmax(0px, 1fr)" not in array ["0px 60px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(15px, 0fr) minmax(0px, 1fr)" not in array ["15px 45px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(20px, 1fr) minmax(0px, 1fr)" not in array ["30px 30px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(40px, 1fr) minmax(0px, 1fr)" not in array ["40px 20px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr); assert_in_array: gridTemplateColumns value "0fr minmax(0px, 0fr)" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "0fr minmax(0px, 1fr)" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "1fr minmax(0px, 1fr)" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr); assert_in_array: gridTemplateColumns value "1fr minmax(25px, 1fr)" not in array ["75px 25px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content; assert_in_array: gridTemplateColumns value "0fr min-content" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto; assert_in_array: gridTemplateColumns value "0fr auto" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto; assert_in_array: gridTemplateColumns value "0.5fr auto" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto; assert_in_array: gridTemplateColumns value "1fr auto" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content; assert_in_array: gridTemplateColumns value "1fr max-content" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content; assert_in_array: gridTemplateColumns value "1fr min-content" not in array ["100px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content; assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) min-content" not in array ["0px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto; assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) auto" not in array ["0px 60px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto; assert_in_array: gridTemplateColumns value "minmax(0px, 1fr) auto" not in array ["60px 0px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto; assert_in_array: gridTemplateColumns value "minmax(25px, 0fr) auto" not in array ["25px 35px"] -FAIL min-content min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto; assert_in_array: gridTemplateColumns value "minmax(25px, 1fr) auto" not in array ["60px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr; assert_in_array: gridTemplateColumns value "0fr" not in array ["50px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr; assert_in_array: gridTemplateColumns value "1fr" not in array ["60px"] -FAIL 50px min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr; assert_in_array: gridTemplateColumns value "2fr" not in array ["60px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr)" not in array ["0px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0.5fr)" not in array ["30px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(0px, 1fr)" not in array ["60px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr); assert_in_array: gridTemplateColumns value "minmax(0px, 2fr)" not in array ["60px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr); assert_in_array: gridTemplateColumns value "minmax(75px, 1fr)" not in array ["75px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr; assert_in_array: gridTemplateColumns value "0fr 0fr" not in array ["25px 25px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr; assert_in_array: gridTemplateColumns value "0fr 1fr" not in array ["0px 60px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr; assert_in_array: gridTemplateColumns value "1fr 0fr" not in array ["60px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr; assert_in_array: gridTemplateColumns value "1fr 1fr" not in array ["30px 30px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr; assert_in_array: gridTemplateColumns value "1fr 3fr" not in array ["15px 45px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr; assert_in_array: gridTemplateColumns value "0fr 0fr 1fr" not in array ["25px 25px 10px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) minmax(0px, 0fr)" not in array ["0px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) minmax(0px, 1fr)" not in array ["0px 60px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(15px, 0fr) minmax(0px, 1fr)" not in array ["15px 45px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(20px, 1fr) minmax(0px, 1fr)" not in array ["30px 30px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr); assert_in_array: gridTemplateColumns value "minmax(40px, 1fr) minmax(0px, 1fr)" not in array ["40px 20px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr); assert_in_array: gridTemplateColumns value "0fr minmax(0px, 0fr)" not in array ["50px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "0fr minmax(0px, 1fr)" not in array ["50px 10px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr); assert_in_array: gridTemplateColumns value "1fr minmax(0px, 1fr)" not in array ["50px 10px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr); assert_in_array: gridTemplateColumns value "1fr minmax(25px, 1fr)" not in array ["30px 30px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content; assert_in_array: gridTemplateColumns value "0fr min-content" not in array ["50px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto; assert_in_array: gridTemplateColumns value "0fr auto" not in array ["50px 10px"] -FAIL 50px min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto; assert_in_array: gridTemplateColumns value "0.5fr auto" not in array ["50px 10px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto; assert_in_array: gridTemplateColumns value "1fr auto" not in array ["60px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content; assert_in_array: gridTemplateColumns value "1fr max-content" not in array ["60px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content; assert_in_array: gridTemplateColumns value "1fr min-content" not in array ["60px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content; assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) min-content" not in array ["0px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto; assert_in_array: gridTemplateColumns value "minmax(0px, 0fr) auto" not in array ["0px 60px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto; assert_in_array: gridTemplateColumns value "minmax(0px, 1fr) auto" not in array ["60px 0px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto; assert_in_array: gridTemplateColumns value "minmax(25px, 0fr) auto" not in array ["25px 35px"] -FAIL 50px min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto; assert_in_array: gridTemplateColumns value "minmax(25px, 1fr) auto" not in array ["60px 0px"] -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https-expected.txt b/third_party/blink/web_tests/virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https-expected.txt new file mode 100644 index 0000000..52fc59a2 --- /dev/null +++ b/third_party/blink/web_tests/virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/credentialless/cors-or-credentialless/dedicated-worker.tentative.https-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS CORS or Credentialless and dedicated worker +PASS fetch same-origin + credentialless worker +PASS fetch same-origin +PASS fetch cross-origin +FAIL fetch cross-origin + credentialless worker assert_equals: coep:none => expected (undefined) undefined but got (string) "cross_origin" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/threaded/external/wpt/css/css-scroll-snap/snap-after-relayout/resnap-to-focused-expected.txt b/third_party/blink/web_tests/virtual/threaded/external/wpt/css/css-scroll-snap/snap-after-relayout/resnap-to-focused-expected.txt deleted file mode 100644 index 0b8f95e4..0000000 --- a/third_party/blink/web_tests/virtual/threaded/external/wpt/css/css-scroll-snap/snap-after-relayout/resnap-to-focused-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Resnap to focused element after relayout assert_equals: After resize, should snap to row 4. expected 4 but got 3 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative-expected.txt b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative-expected.txt index 9a52665..05da6492 100644 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative-expected.txt +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 62 tests; 55 PASS, 7 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 71 tests; 64 PASS, 7 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS SanitizerAPI sanitize function without argument should throw an error. PASS SanitizerAPI sanitize function for null. FAIL SanitizerAPI with config: plaintext, sanitize from string function for plaintext assert_equals: expected "" but got "<p>text</p>" @@ -21,6 +21,9 @@ PASS SanitizerAPI with config: HTMLButtonElement with javascript formaction start with space, sanitize from string function for HTMLButtonElement with javascript formaction start with space PASS SanitizerAPI with config: HTMLButtonElement, sanitize from string function for HTMLButtonElement PASS SanitizerAPI with config: malformed HTML, sanitize from string function for malformed HTML +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#84., sanitize from string function for Regression test for WICG/sanitizer-api#84. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#85., sanitize from string function for Regression test for WICG/sanitizer-api#85. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#86., sanitize from string function for Regression test for WICG/sanitizer-api#86. PASS SanitizerAPI sanitize function shouldn't load the image. FAIL SanitizerAPI with config: plaintext, sanitize from document function for plaintext assert_equals: expected "" but got "<p>text</p>" FAIL SanitizerAPI with config: xmp, sanitize from document function for xmp assert_equals: expected "" but got "TEXT" @@ -41,6 +44,9 @@ PASS SanitizerAPI with config: HTMLButtonElement with javascript formaction start with space, sanitize from document function for HTMLButtonElement with javascript formaction start with space PASS SanitizerAPI with config: HTMLButtonElement, sanitize from document function for HTMLButtonElement FAIL SanitizerAPI with config: malformed HTML, sanitize from document function for malformed HTML assert_equals: expected "<p>Some text</p><!-- 1 --><!-- 2 --><p>Some more text</p>" but got "<p>Some text</p><p>Some more text</p>" +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#84., sanitize from document function for Regression test for WICG/sanitizer-api#84. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#85., sanitize from document function for Regression test for WICG/sanitizer-api#85. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#86., sanitize from document function for Regression test for WICG/sanitizer-api#86. FAIL SanitizerAPI with config: plaintext, sanitize from document fragment function for plaintext assert_equals: expected "" but got "<p>text</p>" FAIL SanitizerAPI with config: xmp, sanitize from document fragment function for xmp assert_equals: expected "" but got "TEXT" PASS SanitizerAPI with config: Template element, sanitize from document fragment function for Template element @@ -60,6 +66,9 @@ PASS SanitizerAPI with config: HTMLButtonElement with javascript formaction start with space, sanitize from document fragment function for HTMLButtonElement with javascript formaction start with space PASS SanitizerAPI with config: HTMLButtonElement, sanitize from document fragment function for HTMLButtonElement PASS SanitizerAPI with config: malformed HTML, sanitize from document fragment function for malformed HTML +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#84., sanitize from document fragment function for Regression test for WICG/sanitizer-api#84. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#85., sanitize from document fragment function for Regression test for WICG/sanitizer-api#85. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#86., sanitize from document fragment function for Regression test for WICG/sanitizer-api#86. PASS SanitizerAPI sanitize from TrustedHTML. PASS SanitizerAPI sanitize from string with default policy. Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.https.tentative-expected.txt b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.https.tentative-expected.txt index 2a62b94..7e77de6 100644 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.https.tentative-expected.txt +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.https.tentative-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 59 tests; 52 PASS, 7 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 68 tests; 61 PASS, 7 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS SanitizerAPI sanitize function without argument should throw an error. PASS SanitizerAPI sanitizeToString function for null. FAIL SanitizerAPI config: plaintext, sanitizeToString from string function for plaintext assert_equals: expected "" but got "<p>text</p>" @@ -21,6 +21,9 @@ PASS SanitizerAPI config: HTMLButtonElement with javascript formaction start with space, sanitizeToString from string function for HTMLButtonElement with javascript formaction start with space PASS SanitizerAPI config: HTMLButtonElement, sanitizeToString from string function for HTMLButtonElement PASS SanitizerAPI config: malformed HTML, sanitizeToString from string function for malformed HTML +PASS SanitizerAPI config: Regression test for WICG/sanitizer-api#84., sanitizeToString from string function for Regression test for WICG/sanitizer-api#84. +PASS SanitizerAPI config: Regression test for WICG/sanitizer-api#85., sanitizeToString from string function for Regression test for WICG/sanitizer-api#85. +PASS SanitizerAPI config: Regression test for WICG/sanitizer-api#86., sanitizeToString from string function for Regression test for WICG/sanitizer-api#86. FAIL SanitizerAPI with config: plaintext, sanitizeToString from document function for plaintext assert_equals: expected "" but got "<p>text</p>" FAIL SanitizerAPI with config: xmp, sanitizeToString from document function for xmp assert_equals: expected "" but got "TEXT" PASS SanitizerAPI with config: Template element, sanitizeToString from document function for Template element @@ -40,6 +43,9 @@ PASS SanitizerAPI with config: HTMLButtonElement with javascript formaction start with space, sanitizeToString from document function for HTMLButtonElement with javascript formaction start with space PASS SanitizerAPI with config: HTMLButtonElement, sanitizeToString from document function for HTMLButtonElement FAIL SanitizerAPI with config: malformed HTML, sanitizeToString from document function for malformed HTML assert_equals: expected "<p>Some text</p><!-- 1 --><!-- 2 --><p>Some more text</p>" but got "<p>Some text</p><p>Some more text</p>" +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#84., sanitizeToString from document function for Regression test for WICG/sanitizer-api#84. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#85., sanitizeToString from document function for Regression test for WICG/sanitizer-api#85. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#86., sanitizeToString from document function for Regression test for WICG/sanitizer-api#86. FAIL SanitizerAPI with config: plaintext, sanitizeToString from document fragment function for plaintext assert_equals: expected "" but got "<p>text</p>" FAIL SanitizerAPI with config: xmp, sanitizeToString from document fragment function for xmp assert_equals: expected "" but got "TEXT" PASS SanitizerAPI with config: Template element, sanitizeToString from document fragment function for Template element @@ -59,5 +65,8 @@ PASS SanitizerAPI with config: HTMLButtonElement with javascript formaction start with space, sanitizeToString from document fragment function for HTMLButtonElement with javascript formaction start with space PASS SanitizerAPI with config: HTMLButtonElement, sanitizeToString from document fragment function for HTMLButtonElement PASS SanitizerAPI with config: malformed HTML, sanitizeToString from document fragment function for malformed HTML +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#84., sanitizeToString from document fragment function for Regression test for WICG/sanitizer-api#84. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#85., sanitizeToString from document fragment function for Regression test for WICG/sanitizer-api#85. +PASS SanitizerAPI with config: Regression test for WICG/sanitizer-api#86., sanitizeToString from document fragment function for Regression test for WICG/sanitizer-api#86. Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js index bfbbe21c..27636e31 100644 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js
@@ -18,4 +18,29 @@ {config_input: {}, value: "<button formaction=' javascript:evil.com'>Click.</button>", result: "<button>Click.</button>", message: "HTMLButtonElement with javascript formaction start with space"}, {config_input: {}, value: "<button formaction='http:evil.com'>Click.</button>", result: "<button formaction=\"http:evil.com\">Click.</button>", message: "HTMLButtonElement"}, {config_input: {}, value: "<p>Some text</p></body><!-- 1 --></html><!-- 2 --><p>Some more text</p>", result: "<p>Some text</p><!-- 1 --><!-- 2 --><p>Some more text</p>", message: "malformed HTML"}, + + // Test cases from issue WICG/sanitizer-api#84 + { + config_input: {"allowElements":["svg","use"], "allowAttributes":{"xlink:href":["use"]}}, + value: `<svg><use xlink:href='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="x" viewBox="0 0 100 50" width="100%" height="100%"><a href="javascript:alert(1)"><circle r="100" /></a></svg>#x'/></svg>`, + result: "", + message: "Regression test for WICG/sanitizer-api#84." + }, + // Test cases from issue WICG/sanitizer-api#85 + { + config_input: { + "allowElements": ["svg","set"], + "allowAttributes": { "onend": ["set"], "dur":["set"] } + }, + value: `<svg><set onend="alert(1)" dur="1"/></svg>`, + result: "", + message: "Regression test for WICG/sanitizer-api#85." + }, + // Test cases from issue WICG/sanitizer-api#86 + { + config_input: {}, + value: `<noscript><img title="</noscript><iframe onload=alert(1)>"></noscript>`, + result: "", + message: "Regression test for WICG/sanitizer-api#86." + }, ];
diff --git a/third_party/crashpad/crashpad/tools/tool_support.cc b/third_party/crashpad/crashpad/tools/tool_support.cc index a4f923c5..86436905 100644 --- a/third_party/crashpad/crashpad/tools/tool_support.cc +++ b/third_party/crashpad/crashpad/tools/tool_support.cc
@@ -19,6 +19,7 @@ #include <memory> #include <vector> +#include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" #include "package.h" @@ -92,7 +93,7 @@ base::FilePath::StringType ToolSupport::CommandLineArgumentToFilePathStringType( const base::StringPiece& path) { #if defined(OS_POSIX) - return path.as_string(); + return std::string(path); #elif defined(OS_WIN) return base::UTF8ToWide(path); #endif // OS_POSIX
diff --git a/third_party/zlib/google/zip_reader_unittest.cc b/third_party/zlib/google/zip_reader_unittest.cc index bba43652..44134f88 100644 --- a/third_party/zlib/google/zip_reader_unittest.cc +++ b/third_party/zlib/google/zip_reader_unittest.cc
@@ -20,6 +20,7 @@ #include "base/path_service.h" #include "base/run_loop.h" #include "base/stl_util.h" +#include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/test/task_environment.h" @@ -510,12 +511,12 @@ if (i > 0) { // Exact byte read limit: must pass. EXPECT_TRUE(reader.ExtractCurrentEntryToString(i, &contents)); - EXPECT_EQ(base::StringPiece("0123456", i).as_string(), contents); + EXPECT_EQ(std::string(base::StringPiece("0123456", i)), contents); } // More than necessary byte read limit: must pass. EXPECT_TRUE(reader.ExtractCurrentEntryToString(16, &contents)); - EXPECT_EQ(base::StringPiece("0123456", i).as_string(), contents); + EXPECT_EQ(std::string(base::StringPiece("0123456", i)), contents); } reader.Close(); }
diff --git a/tools/autotest.py b/tools/autotest.py index 6372616..a964cd1 100755 --- a/tools/autotest.py +++ b/tools/autotest.py
@@ -456,10 +456,8 @@ # Note that this can happen, for example, if you rename a test target. print('gn config was changed, trying to build again', file=sys.stderr) targets = new_targets - if not BuildTestTargetsWithNinja(out_dir, targets, args.dry_run): - sys.exit(1) - else: # cache still valid, quit if the build failed - if not build_ok: sys.exit(1) + build_ok = BuildTestTargetsWithNinja(out_dir, targets, args.dry_run) + if not build_ok: sys.exit(1) RunTestTargets(out_dir, targets, gtest_filter, _extras, args.dry_run)
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 12adf3a..6cc7b81 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -24326,6 +24326,7 @@ <int value="853" label="LensCameraAssistedSearchEnabled"/> <int value="854" label="RelaunchWindow"/> <int value="855" label="LacrosAvailability"/> + <int value="856" label="DataLeakPreventionReportingEnabled"/> </enum> <enum name="EnterprisePolicyDeviceIdValidity"> @@ -37013,6 +37014,9 @@ </enum> <enum name="GooglePasswordManagerNavigationResult"> + <obsolete> + Removed 04/2021 + </obsolete> <int value="0" label="Success"/> <int value="1" label="Failure"/> <int value="2" label="Timeout"/> @@ -72117,6 +72121,16 @@ <int value="3" label="Request Succeeded"/> </enum> +<enum name="SigninRemoveLocalAccountOutcome"> + <int value="0" label="Success"/> + <int value="1" label="AccountsStale"> + Not removed because the account list was stale. + </int> + <int value="2" label="SignedOutAccountMissing"> + Not removed because the account was not in the list of signed out accounts. + </int> +</enum> + <enum name="SigninRequestHeaderOperation"> <obsolete> Removed 2019-07
diff --git a/tools/metrics/histograms/histograms_xml/blink/histograms.xml b/tools/metrics/histograms/histograms_xml/blink/histograms.xml index bd6511b..3a97183 100644 --- a/tools/metrics/histograms/histograms_xml/blink/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/blink/histograms.xml
@@ -2929,6 +2929,26 @@ </summary> </histogram> +<histogram name="Blink.WebCodecs.ImageDecoder.Success" enum="BooleanSuccess" + expires_after="2022-02-01"> + <owner>dalecurtis@chromium.org</owner> + <owner>media-dev@chromium.org</owner> + <summary> + Whether a given JavaScript ImageDecoder instance completed operation + successfully or not. Logged upon destruction of the instance. + </summary> +</histogram> + +<histogram name="Blink.WebCodecs.ImageDecoder.Type" enum="DecodedImageType" + expires_after="2022-02-01"> + <owner>dalecurtis@chromium.org</owner> + <owner>media-dev@chromium.org</owner> + <summary> + Image codec provided to JavaScript ImageDecoder constructor. Logged once per + successful construction upon completion of construction. + </summary> +</histogram> + <histogram name="Blink.WindowOpen.FromAdState" enum="WindowOpenFromAdState" expires_after="2019-08-30"> <owner>yaoxia@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/cross_device/histograms.xml b/tools/metrics/histograms/histograms_xml/cross_device/histograms.xml index f15d9c9..0e8ac7c 100644 --- a/tools/metrics/histograms/histograms_xml/cross_device/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/cross_device/histograms.xml
@@ -1616,7 +1616,7 @@ <histogram name="MultiDevice.DeviceSyncService.ForceSyncNow.Result" enum="MultiDevice_DeviceSyncService_ForceCryptAuthOperationResult" - expires_after="2021-08-09"> + expires_after="2021-10-25"> <owner>vecore@google.com</owner> <owner>better-together-dev@google.com</owner> <summary>Result for when ForceSyncNow is called.</summary>
diff --git a/tools/metrics/histograms/histograms_xml/nearby/histograms.xml b/tools/metrics/histograms/histograms_xml/nearby/histograms.xml index 472a0c3e..7753cc8e 100644 --- a/tools/metrics/histograms/histograms_xml/nearby/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/nearby/histograms.xml
@@ -342,6 +342,20 @@ </token> </histogram> +<histogram name="Nearby.Share.Connection.EstablishOutgoingConnection.Success" + enum="BooleanSuccess" expires_after="2021-08-19"> + <owner>nohle@chromium.org</owner> + <owner>nearby-share-chromeos-eng@google.com</owner> + <summary> + Records whether an attempt to establish a connection to a receiving device + succeeded or failed; cancellations are ignored. Emitted after the user + selects a device to send a payload to but before the payload begins its + transfer. Because the sending device initiates the connection--via the + Nearby Connections library--this metric is only emitted for outgoing + transfers. + </summary> +</histogram> + <histogram name="Nearby.Share.Connection.EstablishOutgoingConnectionStatus" enum="NearbyShareFinalStatus" expires_after="2021-10-25"> <owner>nohle@chromium.org</owner> @@ -1091,6 +1105,44 @@ </token> </histogram> +<histogram name="Nearby.Share.Transfer.Success" enum="BooleanSuccess" + expires_after="2021-08-19"> + <owner>nohle@chromium.org</owner> + <owner>nearby-share-chromeos-eng@google.com</owner> + <summary> + Records the success/failure of a Nearby Share transfer. Emitted when a + transfer completes successfully or definitively fails, but not for + indeterminate states like cancellation. + </summary> +</histogram> + +<histogram + name="Nearby.Share.Transfer.Success.{Direction}.{ShareTargetType}.{ContactStatus}" + enum="BooleanSuccess" expires_after="2021-08-19"> + <owner>nohle@chromium.org</owner> + <owner>nearby-share-chromeos-eng@google.com</owner> + <summary> + Records the success/failure of a Nearby Share {Direction} transfer with + {ShareTargetType} using {ContactStatus}. Emitted when a transfer completes + successfully or definitively fails, but not for indeterminate states like + cancellation. + </summary> + <token key="Direction"> + <variant name="Receive" summary="incoming (receive)"/> + <variant name="Send" summary="outgoing (send)"/> + </token> + <token key="ShareTargetType"> + <variant name="Laptop" summary="a laptop"/> + <variant name="Phone" summary="a phone"/> + <variant name="Tablet" summary="a tablet"/> + <variant name="UnknownDeviceType" summary="an unknown device type"/> + </token> + <token key="ContactStatus"> + <variant name="Contact" summary="contact-based sharing"/> + <variant name="NonContact" summary="non-contact-based sharing"/> + </token> +</histogram> + <histogram name="Nearby.Share.Transfer.TotalSize{Direction}{ShareTargetType}{UpgradedMedium}{PayloadStatus}" units="KB" expires_after="2021-08-19">
diff --git a/tools/metrics/histograms/histograms_xml/password/histograms.xml b/tools/metrics/histograms/histograms_xml/password/histograms.xml index 09bf0f4..9c5ec76 100644 --- a/tools/metrics/histograms/histograms_xml/password/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/password/histograms.xml
@@ -1059,7 +1059,7 @@ </histogram> <histogram name="PasswordManager.DynamicFormChanges" units="units" - expires_after="M92"> + expires_after="M95"> <owner>kazinova@google.com</owner> <owner>battre@chromium.org</owner> <summary> @@ -1242,6 +1242,9 @@ <histogram name="PasswordManager.GooglePasswordManager.NavigationResult" enum="GooglePasswordManagerNavigationResult" expires_after="2019-12-31"> + <obsolete> + Expired in M80. Removed in M92. + </obsolete> <owner>kazinova@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -1253,6 +1256,9 @@ <histogram name="PasswordManager.GooglePasswordManager.TimeToFailure" units="units" expires_after="2019-12-31"> + <obsolete> + Expired in M80. Removed in M92. + </obsolete> <owner>kazinova@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -1265,6 +1271,9 @@ <histogram name="PasswordManager.GooglePasswordManager.TimeToSuccess" units="units" expires_after="2019-12-31"> + <obsolete> + Expired in M80. Removed in M92. + </obsolete> <owner>kazinova@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -1941,7 +1950,7 @@ </histogram> <histogram name="PasswordManager.ProvisionalSaveFailure" - enum="ProvisionalSaveFailure" expires_after="M87"> + enum="ProvisionalSaveFailure" expires_after="M95"> <owner>kazinova@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -2214,7 +2223,7 @@ </histogram> <histogram base="true" name="PasswordManager.TimesPasswordUsed" - units="PasswordUses" expires_after="2021-06-30"> + units="PasswordUses" expires_after="2021-10-28"> <owner>kazinova@google.com</owner> <owner>battre@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/signin/histograms.xml b/tools/metrics/histograms/histograms_xml/signin/histograms.xml index fc475250..facbc3b 100644 --- a/tools/metrics/histograms/histograms_xml/signin/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/signin/histograms.xml
@@ -1014,6 +1014,17 @@ </summary> </histogram> +<histogram name="Signin.RemoveLocalAccountOutcome" + enum="SigninRemoveLocalAccountOutcome" expires_after="2021-09-30"> + <owner>droger@chromium.org</owner> + <owner>mastiz@chromium.org</owner> + <summary> + This histogram records the outcome of processing + Google-Accounts-RemoveLocalAccount from Gaia, when an HTTP response includes + such header (usually upon user action to remove an account). + </summary> +</histogram> + <histogram name="Signin.SecondaryAccountConsentLog" enum="SecondaryAccountConsentLoggerResult" expires_after="2021-03-30"> <obsolete>
diff --git a/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml b/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml index 4abd8d4..64d9a74 100644 --- a/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml
@@ -209,7 +209,7 @@ </histogram> <histogram name="WebApk.ShellApkVersion2{WebApkDistributorType}" units="units" - expires_after="2021-06-06"> + expires_after="2022-06-06"> <owner>hartmanng@chromium.org</owner> <owner> src/chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS @@ -229,7 +229,7 @@ </histogram> <histogram name="WebApk.Startup.Cold.NewStyle.ShellLaunchToSplashscreenVisible" - units="ms" expires_after="2021-06-01"> + units="ms" expires_after="2021-12-01"> <owner>hartmanng@chromium.org</owner> <owner> src/chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS @@ -279,7 +279,7 @@ </histogram> <histogram name="WebApk.Uninstall{WebApkDistributorType}" enum="BooleanHit" - expires_after="2021-06-06"> + expires_after="2022-06-06"> <owner>hartmanng@chromium.org</owner> <owner> src/chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index bfd35a6..f13019c 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -2,15 +2,15 @@ "trace_processor_shell": { "win": { "hash": "4b81d55c6b8006ceb165784d1105c8ac1deba9ef", - "remote_path": "perfetto_binaries/trace_processor_shell/win/ea617741a1bcc0951495c6f8fcee219e1fc563d0/trace_processor_shell.exe" + "remote_path": "perfetto_binaries/trace_processor_shell/win/424d8898471d8c779a0378ff6fb9117e1de3095e/trace_processor_shell.exe" }, "mac": { - "hash": "e5775e335deac073cfa3ddfb0d86952f9852801f", - "remote_path": "perfetto_binaries/trace_processor_shell/mac/ea617741a1bcc0951495c6f8fcee219e1fc563d0/trace_processor_shell" + "hash": "c63fa49d9ea416ed8b61fac1a67db9863aa26d42", + "remote_path": "perfetto_binaries/trace_processor_shell/mac/4d5d1738db08c3bd5e381f9a9cdc307532eb3831/trace_processor_shell" }, "linux": { - "hash": "1b561da8a652ea547a1e9373542a1a88af9d4de4", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/ea617741a1bcc0951495c6f8fcee219e1fc563d0/trace_processor_shell" + "hash": "9fe3d92d9ef490078bd8467d383c4bea516fd75b", + "remote_path": "perfetto_binaries/trace_processor_shell/linux/4d5d1738db08c3bd5e381f9a9cdc307532eb3831/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/chromeos/translations/ui_chromeos_strings_as.xtb b/ui/chromeos/translations/ui_chromeos_strings_as.xtb index d4ce9e3..cff7d7c 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_as.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
@@ -447,6 +447,7 @@ <translation id="5602622065581044566">ফ’নেটিক কীব’ৰ্ডৰ সৈতে বুলগেৰিয়ান</translation> <translation id="5605830556594064952">ইউ.এছ. ডভ’ৰাক</translation> <translation id="5625294776298156701">Tamil99 কীব’ৰ্ডৰ সৈতে তামিল</translation> +<translation id="5633226425545095130">এই বস্তুটো ইয়াৰ পৰা নিয়াটোৱে এইটোক শ্বেয়াৰ কৰা ফ'ল্ডাৰ '<ph name="DESTINATION_NAME" />' চাব পৰা সকলো লোকৰ সৈতে শ্বেয়াৰ কৰিব।</translation> <translation id="5649768706273821470">শুনক</translation> <translation id="5678784840044122290">Linux এপ্লিকেশ্বন আপোনাৰ টার্মিনেলৰ ভিতৰত উপলব্ধ হ'ব আৰু আপোনাৰ লঞ্চাৰতো এখন আইকন দেখুৱাব পাৰে।</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />আৰ্কাইভ বা ভাৰ্চুৱেল ডিস্কৰ পৰা সংযোগ বিচ্ছিনন্ন কৰিব পৰা নাই<ph name="END_BOLD" /> @@ -720,6 +721,7 @@ <translation id="8395901698320285466">দীঘ-প্ৰস্থ</translation> <translation id="8437209419043462667">ইউএছ</translation> <translation id="8456681095658380701">অমান্য নাম</translation> +<translation id="8459404855768962328">এই বস্তুটোৰ প্ৰতিলিপি কৰাটোৱে এইটোক শ্বেয়াৰ কৰা ফ'ল্ডাৰ '<ph name="DESTINATION_NAME" />' চাব পৰা সকলো লোকৰ সৈতে শ্বেয়াৰ কৰিব।</translation> <translation id="8461467696380332069">শ্বেল্ফত আপোনাৰ ফাইল ক্ষিপ্ৰতাৰে এক্সেছ কৰিবলৈ এটা ফাইলত ৰাইট-ক্লিক কৰক আৰু "শ্বেল্ফত পিন কৰক" বাছনি কৰক।</translation> <translation id="8463494891489624050">ভিয়েটনামিজ VIQR</translation> <translation id="8466234950814670489">টাৰ আৰ্কাইভ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb index c437ec0..dfbe2c94 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -450,6 +450,7 @@ <translation id="5602622065581044566">বুলগেরিয়ান ভাষায় ফোনেটিক কীবোর্ড</translation> <translation id="5605830556594064952">মার্কিন যুক্তরাষ্ট্রীয় দভোরাক</translation> <translation id="5625294776298156701">তামিল ভাষায় তামিল৯৯ (Tamil99) কীবোর্ড</translation> +<translation id="5633226425545095130">এই আইটেম অন্য কোথাও সরিয়ে দিলে, এটি শেয়ার করা ফোল্ডার '<ph name="DESTINATION_NAME" />' দেখতে পাওয়া প্রতিটি ব্যক্তির সাথে শেয়ার হয়ে যাবে।</translation> <translation id="5649768706273821470">শুনুন</translation> <translation id="5678784840044122290">Linux অ্যাপ্লিকেশনটি আপনার টার্মিনালের মধ্যে পাওয়া যাবে এবং আপনার লঞ্চারে একটি আইকনও দেখাতে পারে।</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />একটি আর্কাইভ বা ভার্চুয়াল ডিস্ক থেকে ডিসকানেক্ট করা যাবে না<ph name="END_BOLD" /> @@ -724,6 +725,7 @@ <translation id="8395901698320285466">আয়তন</translation> <translation id="8437209419043462667">মার্কিন যুক্তরাষ্ট্রীয়</translation> <translation id="8456681095658380701">ভুল নাম</translation> +<translation id="8459404855768962328">এই আইটেম কপি করলে, এটি শেয়ার করা ফোল্ডার '<ph name="DESTINATION_NAME" />' দেখতে পাওয়া প্রতিটি ব্যক্তির সাথে শেয়ার হয়ে যাবে।</translation> <translation id="8461467696380332069">কোনও ফাইলে রাইট-ক্লিক করুন এবং শেল্ফে আপনার ফাইল দ্রুত অ্যাক্সেস করার জন্য "শেল্ফে পিন করুন" বিকল্পটি বেছে নিন।</translation> <translation id="8463494891489624050">ভিয়েতনামি ভিআইকিউআর (VIQR)</translation> <translation id="8466234950814670489">Tar আর্কাইভ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb index 4ccf4a5..d68a32d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -451,7 +451,7 @@ <translation id="5602622065581044566">Bulgare avec clavier phonétique</translation> <translation id="5605830556594064952">Dvorak américain</translation> <translation id="5625294776298156701">Tamoul (avec clavier Tamil99)</translation> -<translation id="5633226425545095130">Si vous déplacez cet élément dans le dossier partagé "<ph name="DESTINATION_NAME" />", toute personne autorisée y aura accès.</translation> +<translation id="5633226425545095130">En déplaçant cet élément, vous le partagerez avec toute personne pouvant voir le dossier partagé "<ph name="DESTINATION_NAME" />".</translation> <translation id="5649768706273821470">Écouter</translation> <translation id="5678784840044122290">L'application Linux sera disponible dans votre terminal et une icône peut également apparaître dans votre lanceur d'applications.</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Impossible de démonter l'archive ou le disque virtuel<ph name="END_BOLD" /> @@ -726,7 +726,7 @@ <translation id="8395901698320285466">Dimensions</translation> <translation id="8437209419043462667">Américain</translation> <translation id="8456681095658380701">Ce nom n'est pas valide.</translation> -<translation id="8459404855768962328">Si vous copiez cet élément dans le dossier partagé "<ph name="DESTINATION_NAME" />", toute personne autorisée y aura accès.</translation> +<translation id="8459404855768962328">En copiant cet élément, vous le partagerez avec toute personne pouvant voir le dossier partagé "<ph name="DESTINATION_NAME" />".</translation> <translation id="8461467696380332069">Effectuez un clic droit sur un fichier, puis sélectionnez "Épingler sur l'étagère" pour y accéder ensuite plus rapidement.</translation> <translation id="8463494891489624050">Vietnamien (VIQR)</translation> <translation id="8466234950814670489">Archive TAR</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb index d0e62fa..2100535 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -451,6 +451,7 @@ <translation id="5602622065581044566">બલ્ગેરિયન, ફોનેટિક કીબોર્ડ સાથે</translation> <translation id="5605830556594064952">યુએસ ડ્વોરેક</translation> <translation id="5625294776298156701">તમિળ, તમિળ99 કીબોર્ડ સાથે</translation> +<translation id="5633226425545095130">આ આઇટમ ખસેડવાથી, શેર કરેલું '<ph name="DESTINATION_NAME" />' નામનું ફોલ્ડર જોઈ શકતા પ્રત્યેક વ્યક્તિ સાથે તેને શેર કરશે.</translation> <translation id="5649768706273821470">સાંભળો</translation> <translation id="5678784840044122290">Linux ઍપ્લિકેશન તમારા ટર્મિનલમાં ઉપલબ્ધ થશે અને તમારા લૉન્ચરમાં આઇકન પણ બતાવી શકે છે.</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />આર્કાઇવ અથવા વર્ચ્યુઅલ ડિસ્ક પરથી ડિસ્કનેક્ટ કરી શકતાં નથી<ph name="END_BOLD" /> @@ -723,6 +724,7 @@ <translation id="8395901698320285466">પરિમાણો</translation> <translation id="8437209419043462667">અમેરિકા</translation> <translation id="8456681095658380701">અમાન્ય નામ</translation> +<translation id="8459404855768962328">આ આઇટમ કૉપિ કરવાથી, શેર કરેલું '<ph name="DESTINATION_NAME" />' નામનું ફોલ્ડર જોઈ શકતા પ્રત્યેક વ્યક્તિ સાથે તેને શેર કરશે.</translation> <translation id="8461467696380332069">કોઈ ફાઇલને રાઇટ ક્લિક કરો અને શેલ્ફમાં તમારી ફાઇલોને ઝડપથી ઍક્સેસ કરવા માટે "શેલ્ફ પર પિન કરો" પસંદ કરો.</translation> <translation id="8463494891489624050">વિયેતનામીઝ VIQR</translation> <translation id="8466234950814670489">તાર આર્કાઇવ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb index 516f7a6e..da5eb90f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -451,6 +451,7 @@ <translation id="5602622065581044566">फोनेटिक कीबोर्डसह बल्गेरियन</translation> <translation id="5605830556594064952">येएस द्वोराक</translation> <translation id="5625294776298156701">Tamil99 कीबोर्डसह तमिळ</translation> +<translation id="5633226425545095130">हा आयटम हलवल्याने, शेअर केलेले '<ph name="DESTINATION_NAME" />' हे फोल्डर पाहू शकणाऱ्या प्रत्येकासोबत तो शेअर होईल.</translation> <translation id="5649768706273821470">ऐका</translation> <translation id="5678784840044122290">तुमच्या टर्मिनलमध्ये Linux ॲप्लिकेशन उपलब्ध असेल आणि तुमच्या लॉंचरमध्ये आयकन देखील दिसू शकेल.</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />संग्रहण किंवा आभासी डिस्कमधून डिस्कनेक्ट करू शकत नाही<ph name="END_BOLD" /> @@ -725,6 +726,7 @@ <translation id="8395901698320285466">परिमाण</translation> <translation id="8437209419043462667">यूएस</translation> <translation id="8456681095658380701">चुकीचे नाव</translation> +<translation id="8459404855768962328">हा आयटम कॉपी केल्याने, शेअर केलेले '<ph name="DESTINATION_NAME" />' हे फोल्डर पाहू शकणाऱ्या प्रत्येकासोबत तो शेअर होईल.</translation> <translation id="8461467696380332069">शेल्फमधील तुमच्या फाइल झटपट अॅक्सेस करण्यासाठी फाइलवर राइट क्लिक करा आणि "शेल्फवर पिन करा" निवडा.</translation> <translation id="8463494891489624050">व्हिएतनामी VIQR</translation> <translation id="8466234950814670489">Tar संग्रहण</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb index 2b2fb9d..2f12a5f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
@@ -450,6 +450,7 @@ <translation id="5602622065581044566">बुल्गेरियन फोनेटिक किबोर्ड</translation> <translation id="5605830556594064952">युएस ड्भोराक</translation> <translation id="5625294776298156701">तमिल Tamil99 किबोर्ड</translation> +<translation id="5633226425545095130">तपाईंले यो वस्तु सार्नुभयो भने '<ph name="DESTINATION_NAME" />' नामक साझा फोल्डर हेर्न सक्ने सबै जनासँग यो वस्तु सेयर हुने छ।</translation> <translation id="5649768706273821470">सुन्नुहोस्</translation> <translation id="5678784840044122290">Linux एप तपाईंको टर्मिनलअन्तर्गत उपलब्ध हुने छ तपाईंको लन्चरमा कुनै आइकन देखाउन पनि सक्छ।</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />अभिलेख वा भर्चुअल डिस्कबाट विच्छेदन गर्न सकिँदैन<ph name="END_BOLD" /> @@ -724,6 +725,7 @@ <translation id="8395901698320285466">उचाइ तथा चौडाइ</translation> <translation id="8437209419043462667">US</translation> <translation id="8456681095658380701">अवैध नाम</translation> +<translation id="8459404855768962328">तपाईंले यो वस्तु कपी गर्नुभयो भने '<ph name="DESTINATION_NAME" />' नामक साझा फोल्डर हेर्न सक्ने सबै जनासँग यो वस्तु सेयर हुने छ।</translation> <translation id="8461467696380332069">आफ्ना फाइलहरू सेल्फबाट द्रुत रूपमा हेर्न तथा प्रयोग गर्न कुनै फाइलमा राइट क्लिक गर्नुहोस् र "सेल्फमा पिन गर्नुहोस्" चयन गर्नुहोस्।</translation> <translation id="8463494891489624050">भियतनामी VIQR</translation> <translation id="8466234950814670489">टार सङ्ग्रह</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_or.xtb b/ui/chromeos/translations/ui_chromeos_strings_or.xtb index 687fe04..baa7bb7 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_or.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
@@ -445,6 +445,7 @@ <translation id="5602622065581044566">ଫୋନେଟିକ୍ କୀବୋର୍ଡ ସହ ବୁଲଗେରିଆନ୍</translation> <translation id="5605830556594064952">US ଡିଭୋରାକ୍</translation> <translation id="5625294776298156701">ତାମିଲ99 କୀବୋର୍ଡ ସହ ତାମିଲ</translation> +<translation id="5633226425545095130">ଏହି ଆଇଟମକୁ ମୁଭ୍ କରିବା ଫଳରେ, ସେୟାର୍ କରାଯାଇଥିବା ଫୋଲ୍ଡର୍ '<ph name="DESTINATION_NAME" />'କୁ ଦେଖିପାରୁଥିବା ସମସ୍ତ ଲୋକଙ୍କ ସହିତ ଏହା ସେୟାର୍ ହେବ।</translation> <translation id="5649768706273821470">ଶୁଣନ୍ତୁ</translation> <translation id="5678784840044122290">Linux ଆପ୍ଲିକେସନ୍ଟି ଆପଣଙ୍କର ଟର୍ମିନାଲ୍ ଭିତରେ ଉପଲବ୍ଧ ହେବ ଏବଂ ଆପଣଙ୍କର ଲଞ୍ଚର୍ରେ ହୁଏତ ଏକ ଆଇକନ୍ ମଧ୍ୟ ଦେଖାଇବ।</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />ଏକ ଆର୍କାଇଭ୍ କିମ୍ବା ଭର୍ଚୁଆଲ୍ ଡିକ୍ସରୁ ବିଚ୍ଛିନ୍ନ କରାଯାଇପାରିବ ନାହିଁ<ph name="END_BOLD" /> @@ -719,6 +720,7 @@ <translation id="8395901698320285466">ପରିମେୟ ପରିସର</translation> <translation id="8437209419043462667">US</translation> <translation id="8456681095658380701">ଅବୈଧ ନାମ</translation> +<translation id="8459404855768962328">ଏହି ଆଇଟମକୁ କପି କରିବା ଫଳରେ, ସେୟାର୍ କରାଯାଇଥିବା ଫୋଲ୍ଡର୍ '<ph name="DESTINATION_NAME" />'କୁ ଦେଖିପାରୁଥିବା ସମସ୍ତ ଲୋକଙ୍କ ସହିତ ଏହା ସେୟାର୍ ହେବ।</translation> <translation id="8461467696380332069">ସେଲ୍ଫରେ ଆପଣଙ୍କ ଫାଇଲଗୁଡ଼ିକୁ ଦ୍ରୁତ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଏକ ଫାଇଲରେ ଡାହାଣ-କ୍ଲିକ୍ କରନ୍ତୁ ଏବଂ "ସେଲ୍ଫରେ ପିନ୍ କରନ୍ତୁ"କୁ ଚୟନ କରନ୍ତୁ।</translation> <translation id="8463494891489624050">ଭିଏତନାମିଜ୍ VIQR</translation> <translation id="8466234950814670489">ଟାର୍ ଆରକାଇଭ୍</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_te.xtb b/ui/chromeos/translations/ui_chromeos_strings_te.xtb index 4df39ee..2bb8108 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_te.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
@@ -451,6 +451,7 @@ <translation id="5602622065581044566">ఫోనెటిక్ కీబోర్డ్తో బల్గేరియన్</translation> <translation id="5605830556594064952">యుఎస్ డ్వోరక్</translation> <translation id="5625294776298156701">తమిళ్99 కీబోర్డ్తో తమిళం</translation> +<translation id="5633226425545095130">ఈ ఐటెమ్ను తరలిస్తే అది షేర్ చేయబడిన ఫోల్డర్ '<ph name="DESTINATION_NAME" />'ను చూడగలిగే ప్రతి ఒక్కరితో షేర్ చేయబడుతుంది.</translation> <translation id="5649768706273821470">వినండి</translation> <translation id="5678784840044122290">Linux అప్లికేషన్ మీ టెర్మినల్లో అందుబాటులో ఉంటుంది మరియు మీ లాంచర్లో ఒక చిహ్నం కూడా చూపవచ్చు.</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />ఆర్కైవ్ లేదా వర్చువల్ డిస్క్ నుండి డిస్కనెక్ట్ చేయడం సాధ్యం కాదు<ph name="END_BOLD" /> @@ -725,6 +726,7 @@ <translation id="8395901698320285466">కొలతలు</translation> <translation id="8437209419043462667">యుఎస్</translation> <translation id="8456681095658380701">చెల్లని పేరు</translation> +<translation id="8459404855768962328">ఈ ఐటెమ్ను కాపీ చేస్తే అది షేర్ చేయబడిన ఫోల్డర్ '<ph name="DESTINATION_NAME" />'ను చూడగలిగే ప్రతి ఒక్కరితో షేర్ చేయబడుతుంది.</translation> <translation id="8461467696380332069">ఫైల్ మీద 'కుడి క్లిక్' చేసి, "షెల్ఫ్కు పిన్ చేయి"ని ఎంచుకోవడం ద్వారా షెల్ఫ్లోని మీ ఫైల్స్కు త్వరిత యాక్సెస్ను పొందండి.</translation> <translation id="8463494891489624050">వియత్నామీస్ VIQR</translation> <translation id="8466234950814670489">Tar ఆర్కైవ్</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb index 14e1def..3321676 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
@@ -450,6 +450,7 @@ <translation id="5602622065581044566">فونیٹک کی بورڈ کے ساتھ بلغاریائی</translation> <translation id="5605830556594064952">US ڈوراک</translation> <translation id="5625294776298156701">Tamil99 کی بورڈ کے ساتھ تمل</translation> +<translation id="5633226425545095130">اس آئٹم کو منتقل کرنے سے یہ ہر اس شخص کے ساتھ اشتراک ہو جائے گا جو اشتراک کردہ فولڈر '<ph name="DESTINATION_NAME" />' کو دیکھ سکتا ہے۔</translation> <translation id="5649768706273821470">سنیں</translation> <translation id="5678784840044122290">Linux ایپلیکیشن آپ کے 'ٹرمنل' کے اندر دستیاب ہوگی اور آپ کے لانچر میں بھی ایک آئیکن ظاہر ہو سکتا ہے۔</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />کسی آرکائیو یا ورچوئل ڈسک سے غیر منسلک نہیں ہو سکتا<ph name="END_BOLD" /> @@ -724,6 +725,7 @@ <translation id="8395901698320285466">ڈائمینشنز</translation> <translation id="8437209419043462667">US</translation> <translation id="8456681095658380701">غلط نام</translation> +<translation id="8459404855768962328">اس آئٹم کو کاپی کرنے سے یہ ہر اس شخص کے ساتھ اشتراک ہو جائے گا جو اشتراک کردہ فولڈر '<ph name="DESTINATION_NAME" />' کو دیکھ سکتا ہے۔</translation> <translation id="8461467696380332069">شیلف میں اپنی فائلز تک فوری رسائی کے ليے فائل پر دائیں طرف کلک کریں اور 'شیلف میں پن کریں' کو منتخب کریں۔</translation> <translation id="8463494891489624050">ویتنامی VIQR</translation> <translation id="8466234950814670489">Tar آرکائیو</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb index 06d1c00..4efea8fb 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
@@ -446,6 +446,7 @@ <translation id="5602622065581044566">保加利亚语注音键盘</translation> <translation id="5605830556594064952">美国英语(Dvorak)</translation> <translation id="5625294776298156701">泰米尔语 Tamil99 键盘</translation> +<translation id="5633226425545095130">移动此内容会将其分享给所有能看到共享文件夹“<ph name="DESTINATION_NAME" />”的人。</translation> <translation id="5649768706273821470">收听</translation> <translation id="5678784840044122290">此 Linux 应用将可以在您的终端上使用,且可能在启动器中显示图标。</translation> <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />无法断开与档案或虚拟磁盘的连接<ph name="END_BOLD" /> @@ -720,6 +721,7 @@ <translation id="8395901698320285466">尺寸</translation> <translation id="8437209419043462667">美国英语</translation> <translation id="8456681095658380701">名称无效</translation> +<translation id="8459404855768962328">复制此内容会将其分享给所有能看到共享文件夹“<ph name="DESTINATION_NAME" />”的人。</translation> <translation id="8461467696380332069">右键点击某个文件,然后选择“固定到任务栏”,以便在任务栏中快速访问您的文件。</translation> <translation id="8463494891489624050">越南语 VIQR</translation> <translation id="8466234950814670489">Tar 归档</translation>
diff --git a/ui/file_manager/audio_player/audio_player.html b/ui/file_manager/audio_player/audio_player.html index 416f824..fb58922 100644 --- a/ui/file_manager/audio_player/audio_player.html +++ b/ui/file_manager/audio_player/audio_player.html
@@ -16,6 +16,7 @@ <link rel="stylesheet" type="text/css" href="css/audio_player.css"> <script src="chrome://resources/js/assert.js"></script> + <script src="chrome://resources/js/load_time_data.js"></script> <script src="chrome://resources/js/util.js"></script> <link rel="import" href="elements/audio_player.html">
diff --git a/ui/file_manager/audio_player/js/audio_player_scripts.js b/ui/file_manager/audio_player/js/audio_player_scripts.js index fc8b9c1..626138bf 100644 --- a/ui/file_manager/audio_player/js/audio_player_scripts.js +++ b/ui/file_manager/audio_player/js/audio_player_scripts.js
@@ -3,7 +3,6 @@ // found in the LICENSE file. // <include src="../../../webui/resources/js/cr.js"> -// <include src="../../../webui/resources/js/load_time_data.js"> // <include src="../../../webui/resources/js/cr/event_target.js"> // <include src="../../../webui/resources/js/cr/ui/array_data_model.js">
diff --git a/ui/file_manager/file_manager/foreground/js/main_scripts.js b/ui/file_manager/file_manager/foreground/js/main_scripts.js index c16fb32..e160137f 100644 --- a/ui/file_manager/file_manager/foreground/js/main_scripts.js +++ b/ui/file_manager/file_manager/foreground/js/main_scripts.js
@@ -34,7 +34,6 @@ // <include src="../../../image_loader/image_loader_client.js"> // // <include src="../../../../webui/resources/js/assert.js"> -// <include src="../../../../webui/resources/js/load_time_data.js"> // <include src="../../../../webui/resources/js/action_link.js"> // <include src="../../../../webui/resources/js/cr.js"> // <include src="../../../../webui/resources/js/util.js">
diff --git a/ui/file_manager/file_manager/main.html b/ui/file_manager/file_manager/main.html index 6224de1..30880c0 100644 --- a/ui/file_manager/file_manager/main.html +++ b/ui/file_manager/file_manager/main.html
@@ -26,6 +26,7 @@ <link rel="stylesheet" href="foreground/css/common.css"> <link rel="stylesheet" href="cws_widget/cws_widget_container.css"> + <script src="chrome://resources/js/load_time_data.js"></script> <script src="foreground/js/elements_importer.js"></script> <script src="foreground/js/main_scripts.js" defer></script> </head>
diff --git a/ui/file_manager/gallery/gallery.html b/ui/file_manager/gallery/gallery.html index a693f61a..8489a02 100644 --- a/ui/file_manager/gallery/gallery.html +++ b/ui/file_manager/gallery/gallery.html
@@ -15,6 +15,7 @@ <link rel="stylesheet" href="css/gallery.css"> <script src="chrome://resources/js/assert.js"></script> + <script src="chrome://resources/js/load_time_data.js"></script> <script src="chrome://resources/js/util.js"></script> <link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
diff --git a/ui/file_manager/gallery/js/gallery_scripts.js b/ui/file_manager/gallery/js/gallery_scripts.js index 38622d0..2801379 100644 --- a/ui/file_manager/gallery/js/gallery_scripts.js +++ b/ui/file_manager/gallery/js/gallery_scripts.js
@@ -23,7 +23,6 @@ // <include src="../../../webui/resources/js/assert.js"> // <include src="../../../webui/resources/js/util.js"> // <include src="../../../webui/resources/js/event_tracker.js"> -// <include src="../../../webui/resources/js/load_time_data.js"> // <include src="../../../webui/resources/js/i18n_template_no_process.js"> // <include src="../../../webui/resources/js/cr/ui.js">
diff --git a/ui/file_manager/video_player/js/video_player_scripts.js b/ui/file_manager/video_player/js/video_player_scripts.js index 7622829..11d1489 100644 --- a/ui/file_manager/video_player/js/video_player_scripts.js +++ b/ui/file_manager/video_player/js/video_player_scripts.js
@@ -16,7 +16,6 @@ // <include src="../../../webui/resources/js/cr.js"> // <include src="../../../webui/resources/js/assert.js"> // <include src="../../../webui/resources/js/util.js"> -// <include src="../../../webui/resources/js/load_time_data.js"> // <include src="../../../webui/resources/js/event_tracker.js"> @@ -27,7 +26,6 @@ (function() { 'use strict'; -// <include src="../../../webui/resources/js/load_time_data.js"> // <include src="../../file_manager/common/js/async_util.js"> // <include src="../../file_manager/common/js/file_type.js">
diff --git a/ui/file_manager/video_player/video_player.html b/ui/file_manager/video_player/video_player.html index 864937d..471925d 100644 --- a/ui/file_manager/video_player/video_player.html +++ b/ui/file_manager/video_player/video_player.html
@@ -15,6 +15,7 @@ <link rel="import" href="chrome://resources/cr_elements/cr_toast/cr_toast.html"> + <script src="chrome://resources/js/load_time_data.js"></script> <script src="js/video_player_scripts.js"></script> </head> <body>
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc index 83635935..132b257 100644 --- a/ui/gfx/render_text_unittest.cc +++ b/ui/gfx/render_text_unittest.cc
@@ -2258,9 +2258,8 @@ // [ ...] // and not like: // [... ] - constexpr char kInputString[] = " foo"; - const std::u16string input = ASCIIToUTF16(kInputString); - render_text->SetText(input); + constexpr char16_t kInputString[] = u" foo"; + render_text->SetText(kInputString); // Choose a width based on being able to display 12 characters (one of which // will be the trailing ellipsis). @@ -2269,12 +2268,13 @@ render_text->SetDisplayRect(Rect(0, 0, kRequiredWidth, 100)); // Verify this doesn't change the full text. - EXPECT_EQ(input, render_text->text()); + EXPECT_EQ(kInputString, render_text->text()); // Verify that the string is truncated to |kDesiredChars| with the ellipsis. const std::u16string result = render_text->GetDisplayText(); const std::u16string expected = - input.substr(0, kDesiredChars - 1) + kEllipsisUTF16[0]; + std::u16string(kInputString).substr(0, kDesiredChars - 1) + + kEllipsisUTF16[0]; EXPECT_EQ(expected, result); } @@ -5819,14 +5819,14 @@ // Make sure that multiline mode ignores elide behavior. TEST_F(RenderTextTest, Multiline_IgnoreElide) { - const char kTestString[] = - "very very very long string xxxxxxxxxxxxxxxxxxxxxxxxxx"; + const char16_t kTestString[] = + u"very very very long string xxxxxxxxxxxxxxxxxxxxxxxxxx"; const char kEllipsis[] = "\u2026"; RenderText* render_text = GetRenderText(); render_text->SetElideBehavior(ELIDE_TAIL); render_text->SetDisplayRect(Rect(20, 1000)); - render_text->SetText(base::ASCIIToUTF16(kTestString)); + render_text->SetText(kTestString); EXPECT_NE(std::u16string::npos, render_text->GetDisplayText().find(base::UTF8ToUTF16(kEllipsis))); @@ -6197,10 +6197,10 @@ } TEST_F(RenderTextTest, ControlCharacterReplacement) { - static const char kTextWithControlCharacters[] = "\b\r\a\t\n\v\f"; + static const char16_t kTextWithControlCharacters[] = u"\b\r\a\t\n\v\f"; RenderText* render_text = GetRenderText(); - render_text->SetText(ASCIIToUTF16(kTextWithControlCharacters)); + render_text->SetText(kTextWithControlCharacters); // The control characters should have been replaced by their symbols. EXPECT_EQ(u"␈␍␇␉␊␋␌", render_text->GetDisplayText());
diff --git a/ui/message_center/views/notification_view_md_unittest.cc b/ui/message_center/views/notification_view_md_unittest.cc index bef957c5..2fbaba2c 100644 --- a/ui/message_center/views/notification_view_md_unittest.cc +++ b/ui/message_center/views/notification_view_md_unittest.cc
@@ -950,10 +950,10 @@ // Without doing this, inappropriate fix such as // message_view_->GetPreferredSize() returning gfx::Size() can pass. notification->set_title(std::u16string()); - notification->set_message(base::ASCIIToUTF16( - "consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore " - "et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " - "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.")); + notification->set_message( + u"consectetur adipiscing elit, sed do eiusmod tempor incididunt ut " + u"labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " + u"exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."); UpdateNotificationViews(*notification); EXPECT_FALSE(notification_view()->expanded_); @@ -1374,10 +1374,10 @@ std::unique_ptr<Notification> notification = CreateSimpleNotification(); notification->set_type(NotificationType::NOTIFICATION_TYPE_SIMPLE); notification->set_title(std::u16string()); - notification->set_message(base::ASCIIToUTF16( - "consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore " - "et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " - "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.")); + notification->set_message( + u"consectetur adipiscing elit, sed do eiusmod tempor incididunt ut " + u"labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " + u"exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."); UpdateNotificationViews(*notification); EXPECT_FALSE(notification_view()->expanded_); @@ -1406,20 +1406,20 @@ std::unique_ptr<Notification> notification = CreateSimpleNotification(); notification->set_type(NotificationType::NOTIFICATION_TYPE_SIMPLE); notification->set_title(u"title"); - notification->set_message(base::ASCIIToUTF16( - "consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore " - "et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " - "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.")); + notification->set_message( + u"consectetur adipiscing elit, sed do eiusmod tempor incididunt ut " + u"labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " + u"exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."); UpdateNotificationViews(*notification); notification_view()->ToggleExpanded(); // Get the height of the message view with a short title. const int message_height = notification_view()->message_view_->height(); - notification->set_title(base::ASCIIToUTF16( - "consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore " - "et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " - "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.")); + notification->set_title( + u"consectetur adipiscing elit, sed do eiusmod tempor incididunt ut " + u"labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " + u"exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."); UpdateNotificationViews(*notification); // The height of the message view should stay the same with a long title.
diff --git a/ui/platform_window/x11/test/os_exchange_data_provider_x11_unittest.cc b/ui/platform_window/x11/test/os_exchange_data_provider_x11_unittest.cc index f8453a22..b2da6488 100644 --- a/ui/platform_window/x11/test/os_exchange_data_provider_x11_unittest.cc +++ b/ui/platform_window/x11/test/os_exchange_data_provider_x11_unittest.cc
@@ -18,7 +18,7 @@ const char kFileURL[] = "file:///home/user/file.txt"; const char kFileName[] = "/home/user/file.txt"; -const char kGoogleTitle[] = "Google"; +const char16_t kGoogleTitle[] = u"Google"; const char kGoogleURL[] = "http://www.google.com/"; namespace ui { @@ -45,13 +45,13 @@ TEST_F(OSExchangeDataProviderX11Test, MozillaURL) { // Check that we can get titled entries. - provider.SetURL(GURL(kGoogleURL), base::ASCIIToUTF16(kGoogleTitle)); + provider.SetURL(GURL(kGoogleURL), kGoogleTitle); { GURL out_gurl; std::u16string out_str; EXPECT_TRUE(provider.GetURLAndTitle( FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, &out_gurl, &out_str)); - EXPECT_EQ(base::ASCIIToUTF16(kGoogleTitle), out_str); + EXPECT_EQ(kGoogleTitle, out_str); EXPECT_EQ(kGoogleURL, out_gurl.spec()); }
diff --git a/ui/views/animation/ink_drop_host_view.cc b/ui/views/animation/ink_drop_host_view.cc index 23d77f8..0451b76 100644 --- a/ui/views/animation/ink_drop_host_view.cc +++ b/ui/views/animation/ink_drop_host_view.cc
@@ -173,7 +173,6 @@ ink_drop_ = std::make_unique<InkDropStub>(); else ink_drop_ = CreateInkDrop(); - OnInkDropCreated(); } return ink_drop_.get(); }
diff --git a/ui/views/animation/ink_drop_host_view.h b/ui/views/animation/ink_drop_host_view.h index 8c8f77f..71a049f 100644 --- a/ui/views/animation/ink_drop_host_view.h +++ b/ui/views/animation/ink_drop_host_view.h
@@ -146,9 +146,6 @@ // Size used for the default SquareInkDropRipple. static constexpr gfx::Size kDefaultInkDropSize = gfx::Size(24, 24); - // Called after a new InkDrop instance is created. - virtual void OnInkDropCreated() {} - // Returns an InkDropImpl suitable for use with a square ink drop. // TODO(pbos): Rename to CreateDefaultSquareInkDropImpl. std::unique_ptr<InkDropImpl> CreateDefaultInkDropImpl();
diff --git a/ui/views/animation/ink_drop_host_view_unittest.cc b/ui/views/animation/ink_drop_host_view_unittest.cc index f0c503a..8c93441 100644 --- a/ui/views/animation/ink_drop_host_view_unittest.cc +++ b/ui/views/animation/ink_drop_host_view_unittest.cc
@@ -48,8 +48,6 @@ } // InkDropHostView: - void OnInkDropCreated() override { ++on_ink_drop_created_count_; } - std::unique_ptr<InkDrop> CreateInkDrop() override { last_created_inkdrop_ = new TestInkDrop(); return base::WrapUnique(last_created_inkdrop_); @@ -145,23 +143,6 @@ EXPECT_FALSE(test_api_.HasInkDrop()); } -TEST_F(InkDropHostViewTest, OnInkDropCreatedOnlyNotfiedOnCreation) { - EXPECT_EQ(0, host_view_.on_ink_drop_created_count()); - - test_api_.GetInkDrop(); - EXPECT_EQ(1, host_view_.on_ink_drop_created_count()); - - test_api_.GetInkDrop(); - EXPECT_EQ(1, host_view_.on_ink_drop_created_count()); - - test_api_.SetInkDropMode(InkDropMode::OFF); - test_api_.SetInkDropMode(InkDropMode::ON); - EXPECT_EQ(1, host_view_.on_ink_drop_created_count()); - - test_api_.GetInkDrop(); - EXPECT_EQ(2, host_view_.on_ink_drop_created_count()); -} - // Verifies that mouse events trigger ink drops when ink drop mode is ON. TEST_F(InkDropHostViewTest, MouseEventsTriggerInkDropsWhenInkDropIsOn) { MouseEventTriggersInkDropHelper(InkDropMode::ON);
diff --git a/ui/views/controls/textarea/textarea_unittest.cc b/ui/views/controls/textarea/textarea_unittest.cc index b8857f5..4ad3d7f 100644 --- a/ui/views/controls/textarea/textarea_unittest.cc +++ b/ui/views/controls/textarea/textarea_unittest.cc
@@ -92,17 +92,17 @@ SendKeyEvent(static_cast<ui::KeyboardCode>(ui::VKEY_A + i)); SendKeyEvent(ui::VKEY_RETURN); } - EXPECT_STR_EQ("a\nb\nc\nd\ne\n", textarea_->GetText()); + EXPECT_EQ(u"a\nb\nc\nd\ne\n", textarea_->GetText()); } TEST_F(TextareaTest, PasteNewlineTest) { - const std::string& kText = "abc\n \n"; - textarea_->SetText(base::ASCIIToUTF16(kText)); + const std::u16string kText = u"abc\n \n"; + textarea_->SetText(kText); textarea_->SelectAll(false); textarea_->ExecuteCommand(Textfield::kCopy, 0); textarea_->SetText(std::u16string()); textarea_->ExecuteCommand(Textfield::kPaste, 0); - EXPECT_STR_EQ(kText, textarea_->GetText()); + EXPECT_EQ(kText, textarea_->GetText()); } // Re-enable when crbug.com/1163587 is fixed. @@ -165,16 +165,16 @@ // Select line towards right. SendEndEvent(true); - EXPECT_STR_EQ("67 89", textarea_->GetSelectedText()); + EXPECT_EQ(u"67 89", textarea_->GetSelectedText()); // Select line towards left. On Mac, the existing selection should be extended // to cover the whole line. SendHomeEvent(true); if (Textarea::kLineSelectionBehavior == gfx::SELECTION_EXTEND) - EXPECT_STR_EQ("34567 89", textarea_->GetSelectedText()); + EXPECT_EQ(u"34567 89", textarea_->GetSelectedText()); else - EXPECT_STR_EQ("345", textarea_->GetSelectedText()); + EXPECT_EQ(u"345", textarea_->GetSelectedText()); EXPECT_TRUE(textarea_->GetSelectedRange().is_reversed()); @@ -182,9 +182,9 @@ SendEndEvent(true); if (Textarea::kLineSelectionBehavior == gfx::SELECTION_EXTEND) - EXPECT_STR_EQ("34567 89", textarea_->GetSelectedText()); + EXPECT_EQ(u"34567 89", textarea_->GetSelectedText()); else - EXPECT_STR_EQ("67 89", textarea_->GetSelectedText()); + EXPECT_EQ(u"67 89", textarea_->GetSelectedText()); EXPECT_FALSE(textarea_->GetSelectedRange().is_reversed()); }
diff --git a/ui/views/controls/textfield/textfield_unittest.cc b/ui/views/controls/textfield/textfield_unittest.cc index 79bbe98c..c7f5d644 100644 --- a/ui/views/controls/textfield/textfield_unittest.cc +++ b/ui/views/controls/textfield/textfield_unittest.cc
@@ -812,23 +812,23 @@ // text programmatically. last_contents_.clear(); textfield_->SetText(u"this is"); - EXPECT_STR_EQ("this is", model_->text()); - EXPECT_STR_EQ("this is", textfield_->GetText()); + EXPECT_EQ(u"this is", model_->text()); + EXPECT_EQ(u"this is", textfield_->GetText()); EXPECT_TRUE(last_contents_.empty()); textfield_->AppendText(u" a test"); - EXPECT_STR_EQ("this is a test", model_->text()); - EXPECT_STR_EQ("this is a test", textfield_->GetText()); + EXPECT_EQ(u"this is a test", model_->text()); + EXPECT_EQ(u"this is a test", textfield_->GetText()); EXPECT_TRUE(last_contents_.empty()); EXPECT_EQ(std::u16string(), textfield_->GetSelectedText()); textfield_->SelectAll(false); - EXPECT_STR_EQ("this is a test", textfield_->GetSelectedText()); + EXPECT_EQ(u"this is a test", textfield_->GetSelectedText()); EXPECT_TRUE(last_contents_.empty()); textfield_->SetTextWithoutCaretBoundsChangeNotification(u"another test", 3); - EXPECT_STR_EQ("another test", model_->text()); - EXPECT_STR_EQ("another test", textfield_->GetText()); + EXPECT_EQ(u"another test", model_->text()); + EXPECT_EQ(u"another test", textfield_->GetText()); EXPECT_EQ(textfield_->GetCursorPosition(), 3u); EXPECT_TRUE(last_contents_.empty()); } @@ -950,9 +950,9 @@ // On Mac, Caps+Shift remains uppercase. if (TestingNativeMac()) - EXPECT_STR_EQ("TeXT!1!1", textfield_->GetText()); + EXPECT_EQ(u"TeXT!1!1", textfield_->GetText()); else - EXPECT_STR_EQ("TexT!1!1", textfield_->GetText()); + EXPECT_EQ(u"TexT!1!1", textfield_->GetText()); } #if defined(OS_LINUX) || defined(OS_CHROMEOS) @@ -1014,11 +1014,11 @@ SendKeyPress(ui::VKEY_OEM_MINUS, ctrl | shift); if (TestingNativeCrOs()) - EXPECT_STR_EQ("TeTEx34", textfield_->GetText()); + EXPECT_EQ(u"TeTEx34", textfield_->GetText()); else if (TestingNativeMac()) - EXPECT_STR_EQ("TheTxE134", textfield_->GetText()); + EXPECT_EQ(u"TheTxE134", textfield_->GetText()); else - EXPECT_STR_EQ("TeTEx234", textfield_->GetText()); + EXPECT_EQ(u"TeTEx234", textfield_->GetText()); } TEST_F(TextfieldTest, ControlAndSelectTest) { @@ -1030,23 +1030,23 @@ SendKeyEvent(ui::VKEY_RIGHT, true, false); SendKeyEvent(ui::VKEY_RIGHT, true, false); - EXPECT_STR_EQ("one", textfield_->GetSelectedText()); + EXPECT_EQ(u"one", textfield_->GetSelectedText()); // Test word select. SendWordEvent(ui::VKEY_RIGHT, true); #if defined(OS_WIN) // Windows breaks on word starts and includes spaces. - EXPECT_STR_EQ("one ", textfield_->GetSelectedText()); + EXPECT_EQ(u"one ", textfield_->GetSelectedText()); SendWordEvent(ui::VKEY_RIGHT, true); - EXPECT_STR_EQ("one two ", textfield_->GetSelectedText()); + EXPECT_EQ(u"one two ", textfield_->GetSelectedText()); #else // Non-Windows breaks on word ends and does NOT include spaces. - EXPECT_STR_EQ("one two", textfield_->GetSelectedText()); + EXPECT_EQ(u"one two", textfield_->GetSelectedText()); #endif SendWordEvent(ui::VKEY_RIGHT, true); - EXPECT_STR_EQ("one two three", textfield_->GetSelectedText()); + EXPECT_EQ(u"one two three", textfield_->GetSelectedText()); SendWordEvent(ui::VKEY_LEFT, true); - EXPECT_STR_EQ("one two ", textfield_->GetSelectedText()); + EXPECT_EQ(u"one two ", textfield_->GetSelectedText()); SendWordEvent(ui::VKEY_LEFT, true); - EXPECT_STR_EQ("one ", textfield_->GetSelectedText()); + EXPECT_EQ(u"one ", textfield_->GetSelectedText()); // Replace the selected text. SendKeyEvent(ui::VKEY_Z, true, false); @@ -1054,17 +1054,17 @@ SendKeyEvent(ui::VKEY_R, true, false); SendKeyEvent(ui::VKEY_O, true, false); SendKeyEvent(ui::VKEY_SPACE, false, false); - EXPECT_STR_EQ("ZERO two three", textfield_->GetText()); + EXPECT_EQ(u"ZERO two three", textfield_->GetText()); SendEndEvent(true); - EXPECT_STR_EQ("two three", textfield_->GetSelectedText()); + EXPECT_EQ(u"two three", textfield_->GetSelectedText()); SendHomeEvent(true); // On Mac, the existing selection should be extended. #if defined(OS_MAC) - EXPECT_STR_EQ("ZERO two three", textfield_->GetSelectedText()); + EXPECT_EQ(u"ZERO two three", textfield_->GetSelectedText()); #else - EXPECT_STR_EQ("ZERO ", textfield_->GetSelectedText()); + EXPECT_EQ(u"ZERO ", textfield_->GetSelectedText()); #endif } @@ -1078,16 +1078,16 @@ // Select word towards right. SendWordEvent(ui::VKEY_RIGHT, true); #if defined(OS_WIN) // Select word right includes space/punctuation. - EXPECT_STR_EQ("67 ", textfield_->GetSelectedText()); + EXPECT_EQ(u"67 ", textfield_->GetSelectedText()); #else // Non-Win: select word right does NOT include space/punctuation. - EXPECT_STR_EQ("67", textfield_->GetSelectedText()); + EXPECT_EQ(u"67", textfield_->GetSelectedText()); #endif SendWordEvent(ui::VKEY_RIGHT, true); - EXPECT_STR_EQ("67 89", textfield_->GetSelectedText()); + EXPECT_EQ(u"67 89", textfield_->GetSelectedText()); // Select word towards left. SendWordEvent(ui::VKEY_LEFT, true); - EXPECT_STR_EQ("67 ", textfield_->GetSelectedText()); + EXPECT_EQ(u"67 ", textfield_->GetSelectedText()); SendWordEvent(ui::VKEY_LEFT, true); // On Mac, the selection should reduce to a caret when the selection direction @@ -1095,20 +1095,20 @@ #if defined(OS_MAC) EXPECT_EQ(gfx::Range(6), textfield_->GetSelectedRange()); #else - EXPECT_STR_EQ("345", textfield_->GetSelectedText()); + EXPECT_EQ(u"345", textfield_->GetSelectedText()); EXPECT_EQ(gfx::Range(6, 3), textfield_->GetSelectedRange()); #endif SendWordEvent(ui::VKEY_LEFT, true); #if defined(OS_MAC) - EXPECT_STR_EQ("345", textfield_->GetSelectedText()); + EXPECT_EQ(u"345", textfield_->GetSelectedText()); #else - EXPECT_STR_EQ("12 345", textfield_->GetSelectedText()); + EXPECT_EQ(u"12 345", textfield_->GetSelectedText()); #endif EXPECT_TRUE(textfield_->GetSelectedRange().is_reversed()); SendWordEvent(ui::VKEY_LEFT, true); - EXPECT_STR_EQ("12 345", textfield_->GetSelectedText()); + EXPECT_EQ(u"12 345", textfield_->GetSelectedText()); } TEST_F(TextfieldTest, LineSelection) { @@ -1120,7 +1120,7 @@ // Select line towards right. SendEndEvent(true); - EXPECT_STR_EQ("67 89", textfield_->GetSelectedText()); + EXPECT_EQ(u"67 89", textfield_->GetSelectedText()); // Select line towards left. On Mac, the existing selection should be extended // to cover the whole line. @@ -1128,7 +1128,7 @@ #if defined(OS_MAC) EXPECT_EQ(textfield_->GetText(), textfield_->GetSelectedText()); #else - EXPECT_STR_EQ("12 345", textfield_->GetSelectedText()); + EXPECT_EQ(u"12 345", textfield_->GetSelectedText()); #endif EXPECT_TRUE(textfield_->GetSelectedRange().is_reversed()); @@ -1137,7 +1137,7 @@ #if defined(OS_MAC) EXPECT_EQ(textfield_->GetText(), textfield_->GetSelectedText()); #else - EXPECT_STR_EQ("67 89", textfield_->GetSelectedText()); + EXPECT_EQ(u"67 89", textfield_->GetSelectedText()); #endif EXPECT_FALSE(textfield_->GetSelectedRange().is_reversed()); } @@ -1280,28 +1280,28 @@ InitTextfield(); for (size_t i = 0; i < 10; ++i) SendKeyEvent(static_cast<ui::KeyboardCode>(ui::VKEY_A + i)); - EXPECT_STR_EQ("abcdefghij", textfield_->GetText()); + EXPECT_EQ(u"abcdefghij", textfield_->GetText()); // Test the delete and backspace keys. textfield_->SetSelectedRange(gfx::Range(5)); for (size_t i = 0; i < 3; ++i) SendKeyEvent(ui::VKEY_BACK); - EXPECT_STR_EQ("abfghij", textfield_->GetText()); + EXPECT_EQ(u"abfghij", textfield_->GetText()); for (size_t i = 0; i < 3; ++i) SendKeyEvent(ui::VKEY_DELETE); - EXPECT_STR_EQ("abij", textfield_->GetText()); + EXPECT_EQ(u"abij", textfield_->GetText()); // Select all and replace with "k". textfield_->SelectAll(false); SendKeyEvent(ui::VKEY_K); - EXPECT_STR_EQ("k", textfield_->GetText()); + EXPECT_EQ(u"k", textfield_->GetText()); // Delete the previous word from cursor. bool shift = false; textfield_->SetText(u"one two three four"); SendEndEvent(shift); SendWordEvent(ui::VKEY_BACK, shift); - EXPECT_STR_EQ("one two three ", textfield_->GetText()); + EXPECT_EQ(u"one two three ", textfield_->GetText()); // Delete to a line break on Linux and ChromeOS, to a word break on Windows // and Mac. @@ -1309,9 +1309,9 @@ shift = true; SendWordEvent(ui::VKEY_BACK, shift); #if defined(OS_LINUX) || defined(OS_CHROMEOS) - EXPECT_STR_EQ("three ", textfield_->GetText()); + EXPECT_EQ(u"three ", textfield_->GetText()); #else - EXPECT_STR_EQ("one three ", textfield_->GetText()); + EXPECT_EQ(u"one three ", textfield_->GetText()); #endif // Delete the next word from cursor. @@ -1320,9 +1320,9 @@ SendHomeEvent(shift); SendWordEvent(ui::VKEY_DELETE, shift); #if defined(OS_WIN) // Delete word incldes space/punctuation. - EXPECT_STR_EQ("two three four", textfield_->GetText()); + EXPECT_EQ(u"two three four", textfield_->GetText()); #else // Non-Windows: delete word does NOT include space/punctuation. - EXPECT_STR_EQ(" two three four", textfield_->GetText()); + EXPECT_EQ(u" two three four", textfield_->GetText()); #endif // Delete to a line break on Linux and ChromeOS, to a word break on Windows // and Mac. @@ -1330,11 +1330,11 @@ shift = true; SendWordEvent(ui::VKEY_DELETE, shift); #if defined(OS_LINUX) || defined(OS_CHROMEOS) - EXPECT_STR_EQ(" two", textfield_->GetText()); + EXPECT_EQ(u" two", textfield_->GetText()); #elif defined(OS_WIN) - EXPECT_STR_EQ("two four", textfield_->GetText()); + EXPECT_EQ(u"two four", textfield_->GetText()); #else - EXPECT_STR_EQ(" two four", textfield_->GetText()); + EXPECT_EQ(u" two four", textfield_->GetText()); #endif } @@ -1360,7 +1360,7 @@ // Make selection as - on|e tw|o three. SendWordEvent(cases[i].key, cases[i].shift); // Verify state is on|o three. - EXPECT_STR_EQ("ono three", textfield_->GetText()); + EXPECT_EQ(u"ono three", textfield_->GetText()); EXPECT_EQ(gfx::Range(2), textfield_->GetSelectedRange()); } } @@ -1388,7 +1388,7 @@ textfield_->AddSecondarySelectedRange(gfx::Range(10, 12)); textfield_->AddSecondarySelectedRange(gfx::Range(1, 3)); SendWordEvent(cases[i].key, cases[i].shift); - EXPECT_STR_EQ("o the", textfield_->GetText()); + EXPECT_EQ(u"o the", textfield_->GetText()); EXPECT_EQ(gfx::Range(2), textfield_->GetSelectedRange()); EXPECT_EQ(0U, textfield_->GetSelectionModel().secondary_selections().size()); @@ -1399,12 +1399,12 @@ TEST_F(TextfieldTest, DeletionWithEditCommands) { struct { ui::TextEditCommand command; - const char* expected; + const char16_t* expected; } cases[] = { - {ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE, "two three"}, - {ui::TextEditCommand::DELETE_TO_BEGINNING_OF_PARAGRAPH, "two three"}, - {ui::TextEditCommand::DELETE_TO_END_OF_LINE, "one "}, - {ui::TextEditCommand::DELETE_TO_END_OF_PARAGRAPH, "one "}, + {ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE, u"two three"}, + {ui::TextEditCommand::DELETE_TO_BEGINNING_OF_PARAGRAPH, u"two three"}, + {ui::TextEditCommand::DELETE_TO_END_OF_LINE, u"one "}, + {ui::TextEditCommand::DELETE_TO_END_OF_PARAGRAPH, u"one "}, }; InitTextfield(); @@ -1413,7 +1413,7 @@ textfield_->SetText(u"one two three"); textfield_->SetSelectedRange(gfx::Range(4)); test_api_->ExecuteTextEditCommand(cases[i].command); - EXPECT_STR_EQ(cases[i].expected, textfield_->GetText()); + EXPECT_EQ(cases[i].expected, textfield_->GetText()); } } @@ -1427,7 +1427,7 @@ last_contents_.clear(); textfield_->SetText(u"password"); // Ensure GetText() and the callback returns the actual text instead of "*". - EXPECT_STR_EQ("password", textfield_->GetText()); + EXPECT_EQ(u"password", textfield_->GetText()); EXPECT_TRUE(last_contents_.empty()); model_->SelectAll(false); SetClipboardText(ui::ClipboardBuffer::kCopyPaste, "foo"); @@ -1440,8 +1440,8 @@ textfield_->ExecuteCommand(Textfield::kCopy, 0); SendKeyEvent(ui::VKEY_C, false, true); SendAlternateCopy(); - EXPECT_STR_EQ("foo", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("password", textfield_->GetText()); + EXPECT_EQ(u"foo", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"password", textfield_->GetText()); // [Shift]+[Delete] should just delete without copying text to the clipboard. textfield_->SelectAll(false); SendKeyEvent(ui::VKEY_DELETE, true, false); @@ -1451,8 +1451,8 @@ textfield_->ExecuteCommand(Textfield::kPaste, 0); SendKeyEvent(ui::VKEY_V, false, true); SendAlternatePaste(); - EXPECT_STR_EQ("foo", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("foofoofoo", textfield_->GetText()); + EXPECT_EQ(u"foo", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"foofoofoo", textfield_->GetText()); } // Check that text insertion works appropriately for password and read-only @@ -1593,7 +1593,7 @@ #endif SendKeyEvent(ui::VKEY_A, false, false); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); textfield_->clear(); // Undo/Redo command keys are handled by the textfield. @@ -1606,7 +1606,7 @@ SendKeyEvent(ui::VKEY_Z, true, true); EXPECT_TRUE(textfield_->key_received()); EXPECT_TRUE(textfield_->key_handled()); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); textfield_->clear(); // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch @@ -1629,34 +1629,34 @@ const bool shift = false; SendWordEvent(ui::VKEY_LEFT, shift); SendKeyEvent(ui::VKEY_T); - EXPECT_STR_EQ("one two thre ", textfield_->GetText()); - EXPECT_STR_EQ("one two thre ", last_contents_); + EXPECT_EQ(u"one two thre ", textfield_->GetText()); + EXPECT_EQ(u"one two thre ", last_contents_); #if defined(OS_WIN) // Move right by word includes space/punctuation. // Ctrl+Right should move the cursor to the end of the last word. SendWordEvent(ui::VKEY_RIGHT, shift); SendKeyEvent(ui::VKEY_E); - EXPECT_STR_EQ("one two thre e", textfield_->GetText()); - EXPECT_STR_EQ("one two thre e", last_contents_); + EXPECT_EQ(u"one two thre e", textfield_->GetText()); + EXPECT_EQ(u"one two thre e", last_contents_); // Ctrl+Right again should not move the cursor, because // it is aleady at the end. SendWordEvent(ui::VKEY_RIGHT, shift); SendKeyEvent(ui::VKEY_BACK); - EXPECT_STR_EQ("one two thre ", textfield_->GetText()); - EXPECT_STR_EQ("one two thre ", last_contents_); + EXPECT_EQ(u"one two thre ", textfield_->GetText()); + EXPECT_EQ(u"one two thre ", last_contents_); #else // Non-Windows: move right by word does NOT include space/punctuation. // Ctrl+Right should move the cursor to the end of the last word. SendWordEvent(ui::VKEY_RIGHT, shift); SendKeyEvent(ui::VKEY_E); - EXPECT_STR_EQ("one two three ", textfield_->GetText()); - EXPECT_STR_EQ("one two three ", last_contents_); + EXPECT_EQ(u"one two three ", textfield_->GetText()); + EXPECT_EQ(u"one two three ", last_contents_); // Ctrl+Right again should move the cursor to the end. SendWordEvent(ui::VKEY_RIGHT, shift); SendKeyEvent(ui::VKEY_BACK); - EXPECT_STR_EQ("one two three", textfield_->GetText()); - EXPECT_STR_EQ("one two three", last_contents_); + EXPECT_EQ(u"one two three", textfield_->GetText()); + EXPECT_EQ(u"one two three", last_contents_); #endif // Test with leading whitespace. textfield_->SetText(u" ne two"); @@ -1672,16 +1672,16 @@ #endif SendWordEvent(ui::VKEY_LEFT, shift); SendKeyEvent(ui::VKEY_O); - EXPECT_STR_EQ(" one two", textfield_->GetText()); - EXPECT_STR_EQ(" one two", last_contents_); + EXPECT_EQ(u" one two", textfield_->GetText()); + EXPECT_EQ(u" one two", last_contents_); // Ctrl+Left to move the cursor to the beginning of the first word. SendWordEvent(ui::VKEY_LEFT, shift); // Ctrl+Left again should move the cursor back to the very beginning. SendWordEvent(ui::VKEY_LEFT, shift); SendKeyEvent(ui::VKEY_DELETE); - EXPECT_STR_EQ("one two", textfield_->GetText()); - EXPECT_STR_EQ("one two", last_contents_); + EXPECT_EQ(u"one two", textfield_->GetText()); + EXPECT_EQ(u"one two", last_contents_); } TEST_F(TextfieldTest, CursorMovementWithMultipleSelections) { @@ -1807,15 +1807,15 @@ ClickLeftMouseButton(); EXPECT_TRUE(textfield_->GetSelectedText().empty()); ClickLeftMouseButton(); - EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); + EXPECT_EQ(u"hello", textfield_->GetSelectedText()); // Test for triple click. ClickLeftMouseButton(); - EXPECT_STR_EQ("hello world", textfield_->GetSelectedText()); + EXPECT_EQ(u"hello world", textfield_->GetSelectedText()); // Another click should reset back to double click. ClickLeftMouseButton(); - EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); + EXPECT_EQ(u"hello", textfield_->GetSelectedText()); } // Tests text selection behavior on a right click. @@ -1825,19 +1825,19 @@ // Verify right clicking within the selection does not alter the selection. textfield_->SetSelectedRange(gfx::Range(1, 5)); - EXPECT_STR_EQ("ello", textfield_->GetSelectedText()); + EXPECT_EQ(u"ello", textfield_->GetSelectedText()); const int cursor_y = GetCursorYForTesting(); MoveMouseTo(gfx::Point(GetCursorPositionX(3), cursor_y)); ClickRightMouseButton(); - EXPECT_STR_EQ("ello", textfield_->GetSelectedText()); + EXPECT_EQ(u"ello", textfield_->GetSelectedText()); // Verify right clicking outside the selection, selects the word under the // cursor on platforms where this is expected. MoveMouseTo(gfx::Point(GetCursorPositionX(8), cursor_y)); - const char* expected_right_click_word = - PlatformStyle::kSelectWordOnRightClick ? "world" : "ello"; + const char16_t* expected_right_click_word = + PlatformStyle::kSelectWordOnRightClick ? u"world" : u"ello"; ClickRightMouseButton(); - EXPECT_STR_EQ(expected_right_click_word, textfield_->GetSelectedText()); + EXPECT_EQ(expected_right_click_word, textfield_->GetSelectedText()); // Verify right clicking inside an unfocused textfield selects all the text on // platforms where this is expected. Else the older selection is retained. @@ -1846,11 +1846,11 @@ MoveMouseTo(gfx::Point(GetCursorPositionX(0), cursor_y)); ClickRightMouseButton(); EXPECT_TRUE(textfield_->HasFocus()); - const char* expected_right_click_unfocused = + const char16_t* expected_right_click_unfocused = PlatformStyle::kSelectAllOnRightClickWhenUnfocused - ? "hello world" + ? u"hello world" : expected_right_click_word; - EXPECT_STR_EQ(expected_right_click_unfocused, textfield_->GetSelectedText()); + EXPECT_EQ(expected_right_click_unfocused, textfield_->GetSelectedText()); } TEST_F(TextfieldTest, DragToSelect) { @@ -1869,12 +1869,12 @@ // Check that dragging left selects the beginning of the string. DragMouseTo(gfx::Point(0, cursor_y)); std::u16string text_left = textfield_->GetSelectedText(); - EXPECT_STR_EQ("hello", text_left); + EXPECT_EQ(u"hello", text_left); // Check that dragging right selects the rest of the string. DragMouseTo(end_point); std::u16string text_right = textfield_->GetSelectedText(); - EXPECT_STR_EQ(" world", text_right); + EXPECT_EQ(u" world", text_right); // Check that releasing in the same location does not alter the selection. ReleaseLeftMouseButton(); @@ -1954,7 +1954,7 @@ EXPECT_EQ(ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_MOVE, textfield_->OnDragUpdated(drop)); EXPECT_EQ(ui::mojom::DragOperation::kCopy, textfield_->OnPerformDrop(drop)); - EXPECT_STR_EQ("hello string world", textfield_->GetText()); + EXPECT_EQ(u"hello string world", textfield_->GetText()); // Ensure that textfields do not accept non-OSExchangeData::STRING types. ui::OSExchangeData bad_data; @@ -2047,22 +2047,22 @@ ui::DropTargetEvent drop_a(data, kDropPoint, kDropPoint, operations); EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_->OnDragUpdated(drop_a)); EXPECT_EQ(ui::mojom::DragOperation::kMove, textfield_->OnPerformDrop(drop_a)); - EXPECT_STR_EQ("h welloorld", textfield_->GetText()); + EXPECT_EQ(u"h welloorld", textfield_->GetText()); textfield_->OnDragDone(); // Undo/Redo the drag&drop change. SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("hello world", textfield_->GetText()); + EXPECT_EQ(u"hello world", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("hello world", textfield_->GetText()); + EXPECT_EQ(u"hello world", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("h welloorld", textfield_->GetText()); + EXPECT_EQ(u"h welloorld", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("h welloorld", textfield_->GetText()); + EXPECT_EQ(u"h welloorld", textfield_->GetText()); } TEST_F(TextfieldTest, DragAndDrop_ToTheLeft) { @@ -2098,22 +2098,22 @@ ui::DropTargetEvent drop_a(data, drop_point, drop_point, operations); EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_->OnDragUpdated(drop_a)); EXPECT_EQ(ui::mojom::DragOperation::kMove, textfield_->OnPerformDrop(drop_a)); - EXPECT_STR_EQ("h worlellod", textfield_->GetText()); + EXPECT_EQ(u"h worlellod", textfield_->GetText()); textfield_->OnDragDone(); // Undo/Redo the drag&drop change. SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("hello world", textfield_->GetText()); + EXPECT_EQ(u"hello world", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("hello world", textfield_->GetText()); + EXPECT_EQ(u"hello world", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("h worlellod", textfield_->GetText()); + EXPECT_EQ(u"h worlellod", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("h worlellod", textfield_->GetText()); + EXPECT_EQ(u"h worlellod", textfield_->GetText()); } TEST_F(TextfieldTest, DragAndDrop_Canceled) { @@ -2161,9 +2161,9 @@ shift = true; SendWordEvent(ui::VKEY_LEFT, shift); EXPECT_EQ(0U, textfield_->GetCursorPosition()); - EXPECT_STR_EQ("read ", textfield_->GetSelectedText()); + EXPECT_EQ(u"read ", textfield_->GetSelectedText()); textfield_->SelectAll(false); - EXPECT_STR_EQ("read only", textfield_->GetSelectedText()); + EXPECT_EQ(u"read only", textfield_->GetSelectedText()); // Cut should be disabled. SetClipboardText(ui::ClipboardBuffer::kCopyPaste, "Test"); @@ -2171,42 +2171,42 @@ textfield_->ExecuteCommand(Textfield::kCut, 0); SendKeyEvent(ui::VKEY_X, false, true); SendAlternateCut(); - EXPECT_STR_EQ("Test", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("read only", textfield_->GetText()); + EXPECT_EQ(u"Test", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"read only", textfield_->GetText()); // Paste should be disabled. EXPECT_FALSE(textfield_->IsCommandIdEnabled(Textfield::kPaste)); textfield_->ExecuteCommand(Textfield::kPaste, 0); SendKeyEvent(ui::VKEY_V, false, true); SendAlternatePaste(); - EXPECT_STR_EQ("read only", textfield_->GetText()); + EXPECT_EQ(u"read only", textfield_->GetText()); // Copy should work normally. SetClipboardText(ui::ClipboardBuffer::kCopyPaste, "Test"); EXPECT_TRUE(textfield_->IsCommandIdEnabled(Textfield::kCopy)); textfield_->ExecuteCommand(Textfield::kCopy, 0); - EXPECT_STR_EQ("read only", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"read only", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); SetClipboardText(ui::ClipboardBuffer::kCopyPaste, "Test"); SendKeyEvent(ui::VKEY_C, false, true); - EXPECT_STR_EQ("read only", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"read only", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); SetClipboardText(ui::ClipboardBuffer::kCopyPaste, "Test"); SendAlternateCopy(); - EXPECT_STR_EQ("read only", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"read only", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); // SetText should work even in read only mode. textfield_->SetText(u" four five six "); - EXPECT_STR_EQ(" four five six ", textfield_->GetText()); + EXPECT_EQ(u" four five six ", textfield_->GetText()); textfield_->SelectAll(false); - EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); + EXPECT_EQ(u" four five six ", textfield_->GetSelectedText()); // Text field is unmodifiable and selection shouldn't change. SendKeyEvent(ui::VKEY_DELETE); - EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); + EXPECT_EQ(u" four five six ", textfield_->GetSelectedText()); SendKeyEvent(ui::VKEY_BACK); - EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); + EXPECT_EQ(u" four five six ", textfield_->GetSelectedText()); SendKeyEvent(ui::VKEY_T); - EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); + EXPECT_EQ(u" four five six ", textfield_->GetSelectedText()); } TEST_F(TextfieldTest, TextInputClientTest) { @@ -2227,10 +2227,10 @@ std::u16string substring; EXPECT_TRUE(client->GetTextFromRange(range, &substring)); - EXPECT_STR_EQ("123", substring); + EXPECT_EQ(u"123", substring); EXPECT_TRUE(client->DeleteRange(range)); - EXPECT_STR_EQ("0456789", textfield_->GetText()); + EXPECT_EQ(u"0456789", textfield_->GetText()); ui::CompositionText composition; composition.text = u"321"; @@ -2246,7 +2246,7 @@ EXPECT_FALSE(textfield_->key_handled()); EXPECT_TRUE(client->HasCompositionText()); EXPECT_TRUE(client->GetCompositionTextRange(&range)); - EXPECT_STR_EQ("0321456789", textfield_->GetText()); + EXPECT_EQ(u"0321456789", textfield_->GetText()); EXPECT_EQ(gfx::Range(1, 4), range); EXPECT_EQ(1, on_before_user_action_); EXPECT_EQ(1, on_after_user_action_); @@ -2259,7 +2259,7 @@ EXPECT_FALSE(textfield_->key_handled()); EXPECT_FALSE(client->HasCompositionText()); EXPECT_FALSE(input_method_->cancel_composition_called()); - EXPECT_STR_EQ("0123456789", textfield_->GetText()); + EXPECT_EQ(u"0123456789", textfield_->GetText()); EXPECT_EQ(1, on_before_user_action_); EXPECT_EQ(1, on_after_user_action_); @@ -2268,7 +2268,7 @@ textfield_->clear(); DispatchMockInputMethodKeyEvent(); EXPECT_TRUE(client->HasCompositionText()); - EXPECT_STR_EQ("0123321456789", textfield_->GetText()); + EXPECT_EQ(u"0123321456789", textfield_->GetText()); on_before_user_action_ = on_after_user_action_ = 0; textfield_->clear(); @@ -2277,7 +2277,7 @@ EXPECT_TRUE(input_method_->cancel_composition_called()); EXPECT_TRUE(textfield_->key_received()); EXPECT_TRUE(textfield_->key_handled()); - EXPECT_STR_EQ("0123321456789", textfield_->GetText()); + EXPECT_EQ(u"0123321456789", textfield_->GetText()); EXPECT_EQ(8U, textfield_->GetCursorPosition()); EXPECT_EQ(1, on_before_user_action_); EXPECT_EQ(1, on_after_user_action_); @@ -2286,7 +2286,7 @@ textfield_->SetText(u"0123456789"); EXPECT_TRUE(client->SetEditableSelectionRange(gfx::Range(5, 5))); client->ExtendSelectionAndDelete(4, 2); - EXPECT_STR_EQ("0789", textfield_->GetText()); + EXPECT_EQ(u"0789", textfield_->GetText()); // On{Before,After}UserAction should be called by whatever user action // triggers clearing or setting a selection if appropriate. @@ -2321,95 +2321,95 @@ TEST_F(TextfieldTest, UndoRedoTest) { InitTextfield(); SendKeyEvent(ui::VKEY_A); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); // AppendText textfield_->AppendText(u"b"); last_contents_.clear(); // AppendText doesn't call ContentsChanged. - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); // SetText SendKeyEvent(ui::VKEY_C); // Undo'ing append moves the cursor to the end for now. // A no-op SetText won't add a new edit; see TextfieldModel::SetText. - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); textfield_->SetText(u"abc"); - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); textfield_->SetText(u"123"); textfield_->SetText(u"123"); - EXPECT_STR_EQ("123", textfield_->GetText()); + EXPECT_EQ(u"123", textfield_->GetText()); SendKeyEvent(ui::VKEY_END, false, false); SendKeyEvent(ui::VKEY_4, false, false); - EXPECT_STR_EQ("1234", textfield_->GetText()); + EXPECT_EQ(u"1234", textfield_->GetText()); last_contents_.clear(); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("123", textfield_->GetText()); + EXPECT_EQ(u"123", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); // the insert edit "c" and set edit "123" are merged to single edit, // so text becomes "ab" after undo. - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("123", textfield_->GetText()); + EXPECT_EQ(u"123", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("1234", textfield_->GetText()); + EXPECT_EQ(u"1234", textfield_->GetText()); // Undoing to the same text shouldn't call ContentsChanged. SendKeyEvent(ui::VKEY_A, false, true); // select all SendKeyEvent(ui::VKEY_A); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); SendKeyEvent(ui::VKEY_B); SendKeyEvent(ui::VKEY_C); - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("1234", textfield_->GetText()); + EXPECT_EQ(u"1234", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); // Delete/Backspace SendKeyEvent(ui::VKEY_BACK); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); SendHomeEvent(false); SendKeyEvent(ui::VKEY_DELETE); - EXPECT_STR_EQ("b", textfield_->GetText()); + EXPECT_EQ(u"b", textfield_->GetText()); SendKeyEvent(ui::VKEY_A, false, true); SendKeyEvent(ui::VKEY_DELETE); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("b", textfield_->GetText()); + EXPECT_EQ(u"b", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("b", textfield_->GetText()); + EXPECT_EQ(u"b", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); } // Most platforms support Ctrl+Y as an alternative to Ctrl+Shift+Z, but on Mac @@ -2422,15 +2422,15 @@ TEST_F(TextfieldTest, RedoWithCtrlY) { InitTextfield(); SendKeyEvent(ui::VKEY_A); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Y, false, true); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, false, true); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"", textfield_->GetText()); SendKeyEvent(ui::VKEY_Z, true, true); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); } #endif // !defined(OS_MAC) @@ -2449,26 +2449,26 @@ // Initially the kill buffer should be empty. Hence yanking should delete the // selected text. - EXPECT_STR_EQ("abef", textfield_->GetText()); + EXPECT_EQ(u"abef", textfield_->GetText()); EXPECT_EQ(gfx::Range(2), textfield_->GetSelectedRange()); // Press Ctrl+K to delete to end of paragraph. This should place the deleted // text in the kill buffer. SendKeyPress(ui::VKEY_K, ui::EF_CONTROL_DOWN); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); EXPECT_EQ(gfx::Range(2), textfield_->GetSelectedRange()); // Yank twice. SendKeyPress(ui::VKEY_Y, ui::EF_CONTROL_DOWN); SendKeyPress(ui::VKEY_Y, ui::EF_CONTROL_DOWN); - EXPECT_STR_EQ("abefef", textfield_->GetText()); + EXPECT_EQ(u"abefef", textfield_->GetText()); EXPECT_EQ(gfx::Range(6), textfield_->GetSelectedRange()); // Verify pressing backspace does not modify the kill buffer. SendKeyEvent(ui::VKEY_BACK); SendKeyPress(ui::VKEY_Y, ui::EF_CONTROL_DOWN); - EXPECT_STR_EQ("abefeef", textfield_->GetText()); + EXPECT_EQ(u"abefeef", textfield_->GetText()); EXPECT_EQ(gfx::Range(7), textfield_->GetSelectedRange()); // Move focus to next textfield. @@ -2481,7 +2481,7 @@ // into a password textfield works. textfield2->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD); SendKeyPress(ui::VKEY_Y, ui::EF_CONTROL_DOWN); - EXPECT_STR_EQ("ef", textfield2->GetText()); + EXPECT_EQ(u"ef", textfield2->GetText()); EXPECT_EQ(gfx::Range(2), textfield2->GetSelectedRange()); // Verify deletion in a password textfield does not modify the kill buffer. @@ -2493,7 +2493,7 @@ textfield_->RequestFocus(); textfield_->SetSelectedRange(gfx::Range(0)); SendKeyPress(ui::VKEY_Y, ui::EF_CONTROL_DOWN); - EXPECT_STR_EQ("efabefeef", textfield_->GetText()); + EXPECT_EQ(u"efabefeef", textfield_->GetText()); } #endif // defined(OS_MAC) @@ -2505,28 +2505,28 @@ textfield_->SelectAll(false); EXPECT_TRUE(textfield_->IsCommandIdEnabled(Textfield::kCut)); textfield_->ExecuteCommand(Textfield::kCut, 0); - EXPECT_STR_EQ("123", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"123", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"", textfield_->GetText()); EXPECT_EQ(ui::ClipboardBuffer::kCopyPaste, GetAndResetCopiedToClipboard()); // Ensure [Ctrl]+[x] cuts and [Ctrl]+[Alt][x] does nothing. textfield_->SetText(u"456"); textfield_->SelectAll(false); SendKeyEvent(ui::VKEY_X, true, false, true, false); - EXPECT_STR_EQ("123", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("456", textfield_->GetText()); + EXPECT_EQ(u"123", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"456", textfield_->GetText()); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); SendKeyEvent(ui::VKEY_X, false, true); - EXPECT_STR_EQ("456", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"456", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"", textfield_->GetText()); EXPECT_EQ(ui::ClipboardBuffer::kCopyPaste, GetAndResetCopiedToClipboard()); // Ensure [Shift]+[Delete] cuts. textfield_->SetText(u"123"); textfield_->SelectAll(false); SendAlternateCut(); - EXPECT_STR_EQ("123", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("", textfield_->GetText()); + EXPECT_EQ(u"123", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"", textfield_->GetText()); EXPECT_EQ(ui::ClipboardBuffer::kCopyPaste, GetAndResetCopiedToClipboard()); // Reset clipboard text. @@ -2536,8 +2536,8 @@ textfield_->SetText(u"123"); textfield_->SetSelectedRange(gfx::Range(0)); SendAlternateCut(); - EXPECT_STR_EQ("", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("123", textfield_->GetText()); + EXPECT_EQ(u"", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"123", textfield_->GetText()); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); // Ensure kCopy copies. @@ -2545,25 +2545,25 @@ textfield_->SelectAll(false); EXPECT_TRUE(textfield_->IsCommandIdEnabled(Textfield::kCopy)); textfield_->ExecuteCommand(Textfield::kCopy, 0); - EXPECT_STR_EQ("789", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"789", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); EXPECT_EQ(ui::ClipboardBuffer::kCopyPaste, GetAndResetCopiedToClipboard()); // Ensure [Ctrl]+[c] copies and [Ctrl]+[Alt][c] does nothing. textfield_->SetText(u"012"); textfield_->SelectAll(false); SendKeyEvent(ui::VKEY_C, true, false, true, false); - EXPECT_STR_EQ("789", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"789", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); SendKeyEvent(ui::VKEY_C, false, true); - EXPECT_STR_EQ("012", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"012", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); EXPECT_EQ(ui::ClipboardBuffer::kCopyPaste, GetAndResetCopiedToClipboard()); // Ensure [Ctrl]+[Insert] copies. textfield_->SetText(u"345"); textfield_->SelectAll(false); SendAlternateCopy(); - EXPECT_STR_EQ("345", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("345", textfield_->GetText()); + EXPECT_EQ(u"345", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"345", textfield_->GetText()); EXPECT_EQ(ui::ClipboardBuffer::kCopyPaste, GetAndResetCopiedToClipboard()); // Ensure kPaste, [Ctrl]+[V], and [Shift]+[Insert] pastes; @@ -2572,19 +2572,19 @@ textfield_->SetText(std::u16string()); EXPECT_TRUE(textfield_->IsCommandIdEnabled(Textfield::kPaste)); textfield_->ExecuteCommand(Textfield::kPaste, 0); - EXPECT_STR_EQ("abc", textfield_->GetText()); + EXPECT_EQ(u"abc", textfield_->GetText()); SendKeyEvent(ui::VKEY_V, false, true); - EXPECT_STR_EQ("abcabc", textfield_->GetText()); + EXPECT_EQ(u"abcabc", textfield_->GetText()); SendAlternatePaste(); - EXPECT_STR_EQ("abcabcabc", textfield_->GetText()); + EXPECT_EQ(u"abcabcabc", textfield_->GetText()); SendKeyEvent(ui::VKEY_V, true, false, true, false); - EXPECT_STR_EQ("abcabcabc", textfield_->GetText()); + EXPECT_EQ(u"abcabcabc", textfield_->GetText()); // Ensure [Ctrl]+[Shift]+[Insert] is a no-op. textfield_->SelectAll(false); SendKeyEvent(ui::VKEY_INSERT, true, true); - EXPECT_STR_EQ("abc", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); - EXPECT_STR_EQ("abcabcabc", textfield_->GetText()); + EXPECT_EQ(u"abc", GetClipboardText(ui::ClipboardBuffer::kCopyPaste)); + EXPECT_EQ(u"abcabcabc", textfield_->GetText()); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); } @@ -2601,14 +2601,14 @@ SendKeyEvent(ui::VKEY_A, false, true); // Select it. SendKeyEvent(ui::VKEY_C, false, true); // Copy it. SendKeyEvent(ui::VKEY_RIGHT, false, false); // Deselect and navigate to end. - EXPECT_STR_EQ("o", textfield_->GetText()); + EXPECT_EQ(u"o", textfield_->GetText()); SendKeyEvent(ui::VKEY_V, false, true); // Paste it. - EXPECT_STR_EQ("oo", textfield_->GetText()); + EXPECT_EQ(u"oo", textfield_->GetText()); SendKeyEvent(ui::VKEY_H, false, false); // Type "h". - EXPECT_STR_EQ("ooh", textfield_->GetText()); + EXPECT_EQ(u"ooh", textfield_->GetText()); SendKeyEvent(ui::VKEY_LEFT, true, false); // Select "h". SendKeyEvent(ui::VKEY_X, false, true); // Cut it. - EXPECT_STR_EQ("oo", textfield_->GetText()); + EXPECT_EQ(u"oo", textfield_->GetText()); } TEST_F(TextfieldTest, OvertypeMode) { @@ -2622,19 +2622,19 @@ // However, there's no enable-overtype equivalent key combination on OSX. SendKeyEvent(ui::VKEY_INSERT); SendKeyEvent(ui::VKEY_1, false, false); - EXPECT_STR_EQ("12", textfield_->GetText()); + EXPECT_EQ(u"12", textfield_->GetText()); } TEST_F(TextfieldTest, TextCursorDisplayTest) { InitTextfield(); // LTR-RTL string in LTR context. SendKeyEvent('a'); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); int x = GetCursorBounds().x(); int prev_x = x; SendKeyEvent('b'); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); x = GetCursorBounds().x(); EXPECT_LT(prev_x, x); prev_x = x; @@ -2690,13 +2690,13 @@ InitTextfield(); // LTR-RTL string in RTL context. SendKeyEvent('a'); - EXPECT_STR_EQ("a", textfield_->GetText()); + EXPECT_EQ(u"a", textfield_->GetText()); int x = GetCursorBounds().x(); EXPECT_EQ(GetDisplayRect().right() - 1, x); int prev_x = x; SendKeyEvent('b'); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); x = GetCursorBounds().x(); EXPECT_GE(1, std::abs(x - prev_x)); @@ -2757,7 +2757,7 @@ int text_cursor_position_prev = test_api_->GetCursorViewRect().x(); SendKeyEvent('a'); SendKeyEvent('b'); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); int text_cursor_position_new = test_api_->GetCursorViewRect().x(); // Text cursor stays at same place after inserting new charactors in RTL mode. EXPECT_EQ(text_cursor_position_prev, text_cursor_position_new); @@ -2773,7 +2773,7 @@ int text_cursor_position_prev = test_api_->GetCursorViewRect().x(); SendKeyEvent('a'); SendKeyEvent('b'); - EXPECT_STR_EQ("ab", textfield_->GetText()); + EXPECT_EQ(u"ab", textfield_->GetText()); int text_cursor_position_new = test_api_->GetCursorViewRect().x(); // Text cursor moves to right after inserting new charactors in LTR mode. EXPECT_LT(text_cursor_position_prev, text_cursor_position_new); @@ -3192,12 +3192,12 @@ ui::EF_LEFT_MOUSE_BUTTON); textfield_->OnMouseReleased(release); EXPECT_EQ(gfx::Range(1, 3), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("12", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"12", GetClipboardText(ui::ClipboardBuffer::kSelection)); // Select-all should update the selection clipboard. SendKeyEvent(ui::VKEY_A, false, true); EXPECT_EQ(gfx::Range(0, 4), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); // Shift-click selection modifications should update the clipboard. @@ -3212,24 +3212,24 @@ ui::EF_LEFT_MOUSE_BUTTON); textfield_->OnMouseReleased(release_2); EXPECT_EQ(gfx::Range(0, 2), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("01", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"01", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); // Shift-Left/Right should update the selection clipboard. SendKeyEvent(ui::VKEY_RIGHT, true, false); - EXPECT_STR_EQ("012", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"012", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); SendKeyEvent(ui::VKEY_LEFT, true, false); - EXPECT_STR_EQ("01", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"01", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); SendKeyEvent(ui::VKEY_RIGHT, true, true); - EXPECT_STR_EQ("0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); // Moving the cursor without a selection should not change the clipboard. SendKeyEvent(ui::VKEY_LEFT, false, false); EXPECT_EQ(gfx::Range(0, 0), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); // Middle clicking should paste at the mouse (not cursor) location. @@ -3238,18 +3238,18 @@ ui::EventTimeForNow(), ui::EF_MIDDLE_MOUSE_BUTTON, ui::EF_MIDDLE_MOUSE_BUTTON); textfield_->OnMousePressed(middle); - EXPECT_STR_EQ("01230123", textfield_->GetText()); + EXPECT_EQ(u"01230123", textfield_->GetText()); EXPECT_EQ(gfx::Range(8, 8), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); // Middle clicking on an unfocused textfield should focus it and paste. textfield_->GetFocusManager()->ClearFocus(); EXPECT_FALSE(textfield_->HasFocus()); textfield_->OnMousePressed(middle); EXPECT_TRUE(textfield_->HasFocus()); - EXPECT_STR_EQ("012301230123", textfield_->GetText()); + EXPECT_EQ(u"012301230123", textfield_->GetText()); EXPECT_EQ(gfx::Range(8, 8), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"0123", GetClipboardText(ui::ClipboardBuffer::kSelection)); // Middle clicking with an empty selection clipboard should still focus. SetClipboardText(ui::ClipboardBuffer::kSelection, std::string()); @@ -3257,7 +3257,7 @@ EXPECT_FALSE(textfield_->HasFocus()); textfield_->OnMousePressed(middle); EXPECT_TRUE(textfield_->HasFocus()); - EXPECT_STR_EQ("012301230123", textfield_->GetText()); + EXPECT_EQ(u"012301230123", textfield_->GetText()); EXPECT_EQ(gfx::Range(4, 4), textfield_->GetSelectedRange()); EXPECT_TRUE(GetClipboardText(ui::ClipboardBuffer::kSelection).empty()); @@ -3267,9 +3267,9 @@ SetClipboardText(ui::ClipboardBuffer::kCopyPaste, "foo"); textfield_->SetSelectedRange(gfx::Range(2, 6)); textfield_->OnMousePressed(middle); - EXPECT_STR_EQ("0123foo01230123", textfield_->GetText()); + EXPECT_EQ(u"0123foo01230123", textfield_->GetText()); EXPECT_EQ(gfx::Range(7, 7), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("foo", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"foo", GetClipboardText(ui::ClipboardBuffer::kSelection)); // Double and triple clicking should update the clipboard contents. textfield_->SetText(u"ab cd ef"); @@ -3289,24 +3289,24 @@ textfield_->OnMousePressed(double_click); textfield_->OnMouseReleased(release_word); EXPECT_EQ(gfx::Range(3, 5), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("cd", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"cd", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); textfield_->OnMousePressed(press_word); textfield_->OnMouseReleased(release_word); EXPECT_EQ(gfx::Range(0, 8), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("ab cd ef", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"ab cd ef", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); // Selecting a range of text without any user interaction should not change // the clipboard content. textfield_->SetSelectedRange(gfx::Range(0, 3)); - EXPECT_STR_EQ("ab ", textfield_->GetSelectedText()); - EXPECT_STR_EQ("ab cd ef", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"ab ", textfield_->GetSelectedText()); + EXPECT_EQ(u"ab cd ef", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); SetClipboardText(ui::ClipboardBuffer::kSelection, "other"); textfield_->SelectAll(false); - EXPECT_STR_EQ("other", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"other", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); } @@ -3320,7 +3320,7 @@ // textfield. SendKeyEvent(ui::VKEY_A, false, true); EXPECT_EQ(gfx::Range(0, 4), textfield_->GetSelectedRange()); - EXPECT_STR_EQ("abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kSelection, GetAndResetCopiedToClipboard()); // Move focus to the next textfield. @@ -3334,19 +3334,19 @@ textfield2->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD); SendKeyEvent(ui::VKEY_A, false, true); EXPECT_EQ(gfx::Range(0, 4), textfield2->GetSelectedRange()); - EXPECT_STR_EQ("abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); // Shift-Left/Right should not modify the selection clipboard for a password // textfield. SendKeyEvent(ui::VKEY_LEFT, true, false); EXPECT_EQ(gfx::Range(0, 3), textfield2->GetSelectedRange()); - EXPECT_STR_EQ("abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); SendKeyEvent(ui::VKEY_RIGHT, true, false); EXPECT_EQ(gfx::Range(0, 4), textfield2->GetSelectedRange()); - EXPECT_STR_EQ("abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); + EXPECT_EQ(u"abcd", GetClipboardText(ui::ClipboardBuffer::kSelection)); EXPECT_EQ(ui::ClipboardBuffer::kMaxValue, GetAndResetCopiedToClipboard()); } #endif @@ -3517,7 +3517,7 @@ GestureEventForTest long_press_1( x, 0, ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS)); textfield_->OnGestureEvent(&long_press_1); - EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); + EXPECT_EQ(u"hello", textfield_->GetSelectedText()); EXPECT_TRUE(test_api_->touch_selection_controller()); EXPECT_TRUE(long_press_1.handled()); @@ -3527,7 +3527,7 @@ GestureEventForTest long_press_2( x, 0, ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS)); textfield_->OnGestureEvent(&long_press_2); - EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); + EXPECT_EQ(u"hello", textfield_->GetSelectedText()); EXPECT_FALSE(test_api_->touch_selection_controller()); EXPECT_FALSE(long_press_2.handled()); @@ -3539,7 +3539,7 @@ GestureEventForTest long_press_3( x, 0, ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS)); textfield_->OnGestureEvent(&long_press_3); - EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); + EXPECT_EQ(u"hello", textfield_->GetSelectedText()); EXPECT_FALSE(test_api_->touch_selection_controller()); EXPECT_FALSE(long_press_3.handled()); }
diff --git a/ui/views/controls/textfield/textfield_unittest.h b/ui/views/controls/textfield/textfield_unittest.h index 02e1adf1..4d796ad 100644 --- a/ui/views/controls/textfield/textfield_unittest.h +++ b/ui/views/controls/textfield/textfield_unittest.h
@@ -16,8 +16,6 @@ #include "ui/views/controls/textfield/textfield_controller.h" #include "ui/views/test/views_test_base.h" -#define EXPECT_STR_EQ(ascii, utf16) EXPECT_EQ(base::ASCIIToUTF16(ascii), utf16) - namespace ui { namespace test { class EventGenerator;
diff --git a/ui/webui/resources/js/BUILD.gn b/ui/webui/resources/js/BUILD.gn index baec440..e1e8a220 100644 --- a/ui/webui/resources/js/BUILD.gn +++ b/ui/webui/resources/js/BUILD.gn
@@ -7,6 +7,7 @@ import("//tools/grit/preprocess_if_expr.gni") import("//ui/webui/resources/tools/generate_grd.gni") import("../tools/js_modulizer.gni") +import("../tools/js_unmodulizer.gni") preprocess_folder = "$root_gen_dir/ui/webui/resources/preprocessed/js" preprocess_gen_manifest = "preprocessed_gen_manifest.json" @@ -45,7 +46,7 @@ "cr.m.js", "custom_element.js", "i18n_template_no_process.js", - "load_time_data.js", + "load_time_data.m.js", "plural_string_proxy.js", "search_highlight_utils.js", "test_loader.js", @@ -95,7 +96,10 @@ } preprocess_if_expr("preprocess_generated") { - deps = [ ":modulize" ] + deps = [ + ":modulize", + ":unmodulize", + ] in_folder = target_gen_dir out_folder = "$preprocess_folder" out_manifest = "$target_gen_dir/$preprocess_gen_manifest" @@ -105,7 +109,7 @@ "cr/ui.m.js", "event_tracker.m.js", "icon.m.js", - "load_time_data.m.js", + "load_time_data.js", "parse_html_subset.m.js", "promise_resolver.m.js", "util.m.js", @@ -197,6 +201,8 @@ } js_library("load_time_data") { + sources = [ "$root_gen_dir/ui/webui/resources/js/load_time_data.js" ] + extra_deps = [ ":unmodulize" ] } js_library("parse_html_subset") { @@ -235,7 +241,6 @@ "icon.js", "i18n_behavior.js", "list_property_update_behavior.js", - "load_time_data.js", "parse_html_subset.js", "promise_resolver.js", "util.js", @@ -247,6 +252,11 @@ ] } +js_unmodulizer("unmodulize") { + input_files = [ "load_time_data.m.js" ] + output_files = [ "load_time_data.js" ] +} + group("closure_compile_modules") { deps = [ ":js_resources_modules", @@ -321,8 +331,6 @@ } js_library("load_time_data.m") { - sources = [ "$root_gen_dir/ui/webui/resources/js/load_time_data.m.js" ] - extra_deps = [ ":modulize_local" ] } js_library("parse_html_subset.m") {
diff --git a/ui/webui/resources/js/load_time_data.js b/ui/webui/resources/js/load_time_data.m.js similarity index 95% rename from ui/webui/resources/js/load_time_data.js rename to ui/webui/resources/js/load_time_data.m.js index d85136df..773f32a 100644 --- a/ui/webui/resources/js/load_time_data.js +++ b/ui/webui/resources/js/load_time_data.m.js
@@ -16,7 +16,7 @@ /** @type {!LoadTimeData} */ // eslint-disable-next-line no-var -/* #export */ var loadTimeData; +export var loadTimeData; class LoadTimeData { constructor() { @@ -207,9 +207,8 @@ expect(!loadTimeData, 'should only include this file once'); loadTimeData = new LoadTimeData; - // Expose |loadTimeData| directly on |window|. This is only necessary by the - // auto-generated load_time_data.m.js, since within a JS module the scope is - // local. + // Expose |loadTimeData| directly on |window|, since within a JS module the + // scope is local and not all files have been updated to import the exported + // |loadTimeData| explicitly. window.loadTimeData = loadTimeData; -/* #ignore */ console.warn('crbug/1173575, non-JS module files deprecated.');
diff --git a/ui/webui/resources/tools/js_unmodulizer.gni b/ui/webui/resources/tools/js_unmodulizer.gni new file mode 100644 index 0000000..1daa59e --- /dev/null +++ b/ui/webui/resources/tools/js_unmodulizer.gni
@@ -0,0 +1,26 @@ +# 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. + +template("js_unmodulizer") { + action(target_name) { + script = "//ui/webui/resources/tools/js_unmodulizer.py" + + inputs = invoker.input_files + + outputs = [] + foreach(_output, invoker.output_files) { + outputs += [ "$target_gen_dir/" + _output ] + } + + data = outputs + + args = [ + "--in_folder", + rebase_path(".", root_build_dir), + "--out_folder", + rebase_path(target_gen_dir, root_build_dir), + "--input_files", + ] + invoker.input_files + [ "--output_files" ] + invoker.output_files + } +}
diff --git a/ui/webui/resources/tools/js_unmodulizer.py b/ui/webui/resources/tools/js_unmodulizer.py new file mode 100644 index 0000000..1733c43 --- /dev/null +++ b/ui/webui/resources/tools/js_unmodulizer.py
@@ -0,0 +1,68 @@ +# 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. + +# Generates JS files that can be used as standard scripts rather than native +# JS modules, by removing module-only keywords: +# import --> Removes entire line +# export --> Removes "export" keyword only +# Appends a console warning about using pre-JS module files. +# +# This script is intentionally very simple and is intended only to support +# legacy UIs that are not served from a standard chrome:// URL and therefore +# need to inline all scripts into a single HTML file. It does not, for example, +# restore other deprecated patterns like cr.define(). + +import argparse +import io +import os +import re +import sys + +_CWD = os.getcwd() + +IMPORT_LINE_REGEX = 'import' +EXPORT_LINE_REGEX = 'export ' + + +def ProcessFile(filename, out_filename): + with io.open(filename, encoding='utf-8', mode='r') as f: + lines = f.readlines(); + + for i, line in enumerate(lines): + # Since this tool is used to generate non-module files that are expected + # to be inlined, any imported dependencies will be missing. Imports should + # not be used by files passed to this tool. + assert not re.match(IMPORT_LINE_REGEX, line), 'Unexpected import' + lines[i] = line.replace(EXPORT_LINE_REGEX, '') + + lines.append( + ' console.warn(\'crbug/1173575, non-JS module files deprecated.\');'); + + # Reconstruct file. + # Specify the newline character so that the exact same file is generated + # across platforms. + with io.open(out_filename, 'wb') as f: + for l in lines: + f.write(l.encode('utf-8')) + return + +def main(argv): + parser = argparse.ArgumentParser() + parser.add_argument('--input_files', nargs='*', required=True) + parser.add_argument('--output_files', nargs='*', required=True) + parser.add_argument('--in_folder', required=True) + parser.add_argument('--out_folder', required=True) + args = parser.parse_args(argv) + + in_folder = os.path.normpath(os.path.join(_CWD, args.in_folder)) + out_folder = os.path.normpath(os.path.join(_CWD, args.out_folder)) + + index = 0 + for f in args.input_files: + ProcessFile(os.path.join(in_folder, f), + os.path.join(out_folder, args.output_files[index])) + index = index + 1 + +if __name__ == '__main__': + main(sys.argv[1:])
diff --git a/weblayer/browser/autofill_client_impl.cc b/weblayer/browser/autofill_client_impl.cc index 879591ed..82e3e9b 100644 --- a/weblayer/browser/autofill_client_impl.cc +++ b/weblayer/browser/autofill_client_impl.cc
@@ -94,7 +94,7 @@ } translate::TranslateDriver* AutofillClientImpl::GetTranslateDriver() { - // The TranslateDriver is used by AutofillHandler to observe the page language + // The TranslateDriver is used by AutofillManager to observe the page language // and run the type-prediction heuristics with language-dependent regexps. auto* translate_client = TranslateClientImpl::FromWebContents(web_contents()); if (translate_client)
diff --git a/weblayer/browser/browser_context_impl.cc b/weblayer/browser/browser_context_impl.cc index ea8d6911..b59a73ca 100644 --- a/weblayer/browser/browser_context_impl.cc +++ b/weblayer/browser/browser_context_impl.cc
@@ -225,9 +225,8 @@ // Override this to provide a connection to the wake lock service. auto* download_manager = new download::InProgressDownloadManager( nullptr, path_, - path_.empty() - ? nullptr - : GetDefaultStoragePartition(this)->GetProtoDatabaseProvider(), + path_.empty() ? nullptr + : GetDefaultStoragePartition()->GetProtoDatabaseProvider(), base::BindRepeating(&IgnoreOriginSecurityCheck), base::BindRepeating(&content::DownloadRequestUtils::IsURLSafe), base::BindRepeating(&BindWakeLockProvider));
diff --git a/weblayer/browser/content_browser_client_impl.cc b/weblayer/browser/content_browser_client_impl.cc index ef51e002..b5951d5 100644 --- a/weblayer/browser/content_browser_client_impl.cc +++ b/weblayer/browser/content_browser_client_impl.cc
@@ -340,7 +340,8 @@ int render_process_id, int render_frame_id) { return embedder_support::AllowSharedWorker( - worker_url, site_for_cookies, top_frame_origin, + worker_url, site_for_cookies, top_frame_origin, name, storage_key, + render_process_id, render_frame_id, CookieSettingsFactory::GetForBrowserContext(context).get()); } @@ -350,7 +351,8 @@ const std::vector<content::GlobalFrameRoutingId>& render_frames, base::OnceCallback<void(bool)> callback) { std::move(callback).Run(embedder_support::AllowWorkerFileSystem( - url, CookieSettingsFactory::GetForBrowserContext(browser_context).get())); + url, render_frames, + CookieSettingsFactory::GetForBrowserContext(browser_context).get())); } bool ContentBrowserClientImpl::AllowWorkerIndexedDB( @@ -358,7 +360,8 @@ content::BrowserContext* browser_context, const std::vector<content::GlobalFrameRoutingId>& render_frames) { return embedder_support::AllowWorkerIndexedDB( - url, CookieSettingsFactory::GetForBrowserContext(browser_context).get()); + url, render_frames, + CookieSettingsFactory::GetForBrowserContext(browser_context).get()); } bool ContentBrowserClientImpl::AllowWorkerCacheStorage( @@ -366,7 +369,8 @@ content::BrowserContext* browser_context, const std::vector<content::GlobalFrameRoutingId>& render_frames) { return embedder_support::AllowWorkerCacheStorage( - url, CookieSettingsFactory::GetForBrowserContext(browser_context).get()); + url, render_frames, + CookieSettingsFactory::GetForBrowserContext(browser_context).get()); } bool ContentBrowserClientImpl::AllowWorkerWebLocks(
diff --git a/weblayer/browser/cookie_manager_impl.cc b/weblayer/browser/cookie_manager_impl.cc index 5e79d78..4c0e6937 100644 --- a/weblayer/browser/cookie_manager_impl.cc +++ b/weblayer/browser/cookie_manager_impl.cc
@@ -72,7 +72,7 @@ } void CookieManagerImpl::GetCookie(const GURL& url, GetCookieCallback callback) { - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->GetCookieList(url, net::CookieOptions::MakeAllInclusive(), base::BindOnce(&GetCookieComplete, std::move(callback))); @@ -145,7 +145,7 @@ return false; } - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->SetCanonicalCookie( *cc, url, net::CookieOptions::MakeAllInclusive(), @@ -159,7 +159,7 @@ CookieChangedCallback callback) { mojo::PendingRemote<network::mojom::CookieChangeListener> listener_remote; auto receiver = listener_remote.InitWithNewPipeAndPassReceiver(); - content::BrowserContext::GetDefaultStoragePartition(browser_context_) + browser_context_->GetDefaultStoragePartition() ->GetCookieManagerForBrowserProcess() ->AddCookieChangeListener( url, name ? base::make_optional(*name) : base::nullopt,
diff --git a/weblayer/browser/download_service_factory.cc b/weblayer/browser/download_service_factory.cc index 8727161..8526d4e 100644 --- a/weblayer/browser/download_service_factory.cc +++ b/weblayer/browser/download_service_factory.cc
@@ -168,8 +168,7 @@ {base::MayBlock(), base::TaskPriority::BEST_EFFORT}); leveldb_proto::ProtoDatabaseProvider* proto_db_provider = - content::BrowserContext::GetDefaultStoragePartition(context) - ->GetProtoDatabaseProvider(); + context->GetDefaultStoragePartition()->GetProtoDatabaseProvider(); return download::BuildDownloadService( key, std::move(clients), content::GetNetworkConnectionTracker(), storage_dir,
diff --git a/weblayer/browser/persistence/browser_persistence_common.cc b/weblayer/browser/persistence/browser_persistence_common.cc index a6406c7..fb1780a 100644 --- a/weblayer/browser/persistence/browser_persistence_common.cc +++ b/weblayer/browser/persistence/browser_persistence_common.cc
@@ -39,7 +39,7 @@ scoped_refptr<content::SessionStorageNamespace> session_storage_namespace; if (!session_tab.session_storage_persistent_id.empty()) { session_storage_namespace = - content::BrowserContext::GetDefaultStoragePartition(browser_context) + browser_context->GetDefaultStoragePartition() ->GetDOMStorageContext() ->RecreateSessionStorage( session_tab.session_storage_persistent_id);
diff --git a/weblayer/browser/profile_impl.cc b/weblayer/browser/profile_impl.cc index de85cd782..9c8ff537 100644 --- a/weblayer/browser/profile_impl.cc +++ b/weblayer/browser/profile_impl.cc
@@ -401,15 +401,13 @@ } void ProfileImpl::OnLocaleChanged() { - content::BrowserContext::ForEachStoragePartition( - GetBrowserContext(), - base::BindRepeating( - [](const std::string& accept_language, - content::StoragePartition* storage_partition) { - storage_partition->GetNetworkContext()->SetAcceptLanguage( - accept_language); - }, - i18n::GetAcceptLangs())); + GetBrowserContext()->ForEachStoragePartition(base::BindRepeating( + [](const std::string& accept_language, + content::StoragePartition* storage_partition) { + storage_partition->GetNetworkContext()->SetAcceptLanguage( + accept_language); + }, + i18n::GetAcceptLangs())); } // static
diff --git a/weblayer/browser/safe_browsing/client_side_detection_service_delegate.cc b/weblayer/browser/safe_browsing/client_side_detection_service_delegate.cc index 680f812..73dfed4f 100644 --- a/weblayer/browser/safe_browsing/client_side_detection_service_delegate.cc +++ b/weblayer/browser/safe_browsing/client_side_detection_service_delegate.cc
@@ -29,7 +29,7 @@ scoped_refptr<network::SharedURLLoaderFactory> ClientSideDetectionServiceDelegate::GetURLLoaderFactory() { - return content::BrowserContext::GetDefaultStoragePartition(browser_context_) + return browser_context_->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); }
diff --git a/weblayer/browser/tab_impl.cc b/weblayer/browser/tab_impl.cc index 38ffa81..4db332b 100644 --- a/weblayer/browser/tab_impl.cc +++ b/weblayer/browser/tab_impl.cc
@@ -1398,16 +1398,16 @@ AutofillClientImpl::CreateForWebContents(web_contents); - autofill::AutofillHandler::AutofillDownloadManagerState + autofill::AutofillManager::AutofillDownloadManagerState enable_autofill_download_manager = - autofill::AutofillHandler::DISABLE_AUTOFILL_DOWNLOAD_MANAGER; + autofill::AutofillManager::DISABLE_AUTOFILL_DOWNLOAD_MANAGER; #if defined(OS_ANDROID) if (base::FeatureList::IsEnabled( autofill::features::kAndroidAutofillQueryServerFieldTypes) && (!autofill::AutofillProvider:: is_download_manager_disabled_for_testing())) { enable_autofill_download_manager = - autofill::AutofillHandler::ENABLE_AUTOFILL_DOWNLOAD_MANAGER; + autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER; } #endif // OS_ANDROID