diff --git a/DEPS b/DEPS index 53f477f..27c1dd4 100644 --- a/DEPS +++ b/DEPS
@@ -199,11 +199,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': 'b849f7a791451bfaf7d8b9412ad241296101ceb8', + 'skia_revision': '9d171b630287cf97ec9a6014073875301fcf0508', # 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': '45ea66edc82419c79bba183762142785bb5a72e2', + 'v8_revision': 'ef6896f42d709cf53b8b4fe49cef4dedb2c81e32', # 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. @@ -250,7 +250,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. - 'freetype_revision': '2c40559609c102a934c1f0c5ee7ccb790fc887dc', + 'freetype_revision': 'c8dede7b1c632ee7f3032546856f2f92dc3bdc6c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. @@ -270,7 +270,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': 'b013189435214678a03efbccd9f191217917a8b4', + 'catapult_revision': '1549e0ea92b7a287ff185833029a6e6e044de29c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -278,7 +278,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': 'fcfa1e2cc0237111eaaae616a696767e71164090', + 'devtools_frontend_revision': 'fbf4ea6ef43e49858b16b55c058dafcae661e117', # 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. @@ -318,7 +318,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': '7e80cce1a9065d60522d470d24526394d642e6d5', + 'dawn_revision': 'aa0e1be0e8034511ba38edf9789cbbaa52888ae0', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -554,7 +554,7 @@ }, 'src/ios/third_party/material_components_ios/src': { - 'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '25c9049d5a4ee13ed9085ca01a92ed3b25867989', + 'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '6171ea2840fb0901a49c0a886c54bf048ff0e8f4', 'condition': 'checkout_ios', }, @@ -678,7 +678,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'CUNayWpb4JErvQkdCk8cchP0sY4xV9vBv35PWhtW4bcC', + 'version': 'QK9_suyla0iK8oMKDoZtiMGi1EY1hODwvOSLcJ0LSUUC', }, ], 'condition': 'checkout_android', @@ -911,7 +911,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'b0763b2c57fed430291f0f2a76ec81976118d481', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6551036772d64afb7a15e844273683123c9d501a', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1485,7 +1485,7 @@ 'src/third_party/usrsctp/usrsctplib': Var('chromium_git') + '/external/github.com/sctplab/usrsctp' + '@' + 'a6647318b57c0a05d590c8c21fc22aba87f08749', - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@4ee2104e26ffe3402587f4013eaf5019e56a47c2', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@c409714366e947b35e402ee943887b700fd60714', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'b1d65a2b3373fe12c622eaab65e5cf21b906d178', @@ -1512,7 +1512,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '66460536ee975a3e98931b7b40a661a63fd9cd57', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '8bf61a3071b7306860261eadf43c157ce3ffe4fe', + Var('webrtc_git') + '/src.git' + '@' + 'f28d7e89b7a3c985d83f59d16b9f3c3f45ef7997', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1550,7 +1550,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/linux-amd64', - 'version': 'WdexZjGxoLpK-HlIPR8kNGF7Wh1VPdS59dbI5AgEmJEC', + 'version': 'FnrTtCqUzIkttLMcUafQ-E14XeYY8Yg79UKi-yF4k-gC', }, ], 'dep_type': 'cipd', @@ -1560,7 +1560,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/windows-amd64', - 'version': 'xC87Xnbi3y7b2aSw2voaEk8MtTPrvU1peyj7NfC6ZtIC', + 'version': 'pjN_saVBekGyLe4KBiQ_-ZjYGUfDR6X9O33jfnvsZOwC', }, ], 'dep_type': 'cipd', @@ -1570,7 +1570,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/mac-amd64', - 'version': 'l8fyBvaMd0WlHgO2vdLkKnIgP93n8clqWMMYoHQWbfQC', + 'version': '33D5pMUWm9PcQ9nzgMNc-cv9Y67SNea1XX9S3h0q0zoC', }, ], 'dep_type': 'cipd', @@ -1584,7 +1584,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@35f7c5f1cc0d0e3af064e520793179e35687438d', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@c637e2ebee53eed43a146eb05d5d7b2f6a24969b', 'condition': 'checkout_src_internal', },
diff --git a/WATCHLISTS b/WATCHLISTS index 50576d1..1848d2a 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -610,6 +610,9 @@ 'blink_xml': { 'filepath': 'third_party/blink/renderer/core/xml/' }, + 'borealis': { + 'filepath': 'borealis/', + }, 'bottombar': { 'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/', }, @@ -2331,6 +2334,7 @@ 'blink_wtf': ['blink-reviews-wtf@chromium.org'], 'blink_xml': ['dominicc+watchlist@chromium.org', 'joelhockey+watch@chromium.org'], + 'borealis': ['borealis-reviews+watch@google.com'], 'bottombar': ['donnd+watch@chromium.org', 'mdjones+watch@chromium.org'], 'breve': ['breve-team-reviews@chromium.org'],
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 655058e8..8c682269 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -982,7 +982,6 @@ "system/cast/tray_cast.h", "system/cast/unified_cast_detailed_view_controller.cc", "system/cast/unified_cast_detailed_view_controller.h", - "system/dark_mode/color_mode_observer.h", "system/dark_mode/dark_mode_detailed_view.cc", "system/dark_mode/dark_mode_detailed_view.h", "system/dark_mode/dark_mode_detailed_view_controller.cc",
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn index 46cd3be..4cf1017 100644 --- a/ash/public/cpp/BUILD.gn +++ b/ash/public/cpp/BUILD.gn
@@ -269,6 +269,7 @@ "shell_window_ids.h", "shutdown_controller.cc", "shutdown_controller.h", + "style/color_mode_observer.h", "style/color_provider.cc", "style/color_provider.h", "stylus_utils.cc",
diff --git a/ash/system/dark_mode/color_mode_observer.h b/ash/public/cpp/style/color_mode_observer.h similarity index 65% rename from ash/system/dark_mode/color_mode_observer.h rename to ash/public/cpp/style/color_mode_observer.h index 578b89b1..a31688ab 100644 --- a/ash/system/dark_mode/color_mode_observer.h +++ b/ash/public/cpp/style/color_mode_observer.h
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef ASH_SYSTEM_DARK_MODE_COLOR_MODE_OBSERVER_H_ -#define ASH_SYSTEM_DARK_MODE_COLOR_MODE_OBSERVER_H_ +#ifndef ASH_PUBLIC_CPP_STYLE_COLOR_MODE_OBSERVER_H_ +#define ASH_PUBLIC_CPP_STYLE_COLOR_MODE_OBSERVER_H_ -#include "ash/ash_export.h" +#include "ash/public/cpp/ash_public_export.h" #include "base/observer_list_types.h" namespace ash { -class ASH_EXPORT ColorModeObserver : public base::CheckedObserver { +class ASH_PUBLIC_EXPORT ColorModeObserver : public base::CheckedObserver { public: // Called when the color mode changes. virtual void OnColorModeChanged(bool dark_mode_enabled) {} @@ -24,4 +24,4 @@ } // namespace ash -#endif // ASH_SYSTEM_DARK_MODE_COLOR_MODE_OBSERVER_H_ +#endif // ASH_PUBLIC_CPP_STYLE_COLOR_MODE_OBSERVER_H_
diff --git a/ash/public/cpp/style/color_provider.h b/ash/public/cpp/style/color_provider.h index 6ca25fd..a7f2d96 100644 --- a/ash/public/cpp/style/color_provider.h +++ b/ash/public/cpp/style/color_provider.h
@@ -11,6 +11,8 @@ namespace ash { +class ColorModeObserver; + // An interface implemented by Ash that provides colors for the system UI. class ASH_PUBLIC_EXPORT ColorProvider { public: @@ -149,6 +151,13 @@ virtual RippleAttributes GetRippleAttributes( SkColor bg_color = gfx::kPlaceholderColor) const = 0; + virtual void AddObserver(ColorModeObserver* observer) = 0; + virtual void RemoveObserver(ColorModeObserver* observer) = 0; + + // True if pref |kDarkModeEnabled| is true, which means the current color mode + // is dark. + virtual bool IsDarkModeEnabled() const = 0; + protected: ColorProvider(); virtual ~ColorProvider();
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_as.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_as.xtb index 6b99161..2bc3858 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_as.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_as.xtb
@@ -47,6 +47,7 @@ <translation id="2480851840841871861">Google Assistant খোলক</translation> <translation id="2488661730534396940">বাওঁফালৰ ডেস্কটো সক্রিয় কৰক</translation> <translation id="2515586267016047495">Alt</translation> +<translation id="2516999188535378855">Diagnostics এপ্টো খোলক</translation> <translation id="2530339807289914946">ৱেব পৃষ্ঠাটো তললৈ স্ক্ৰল কৰক</translation> <translation id="2530896289327917474">কেৰেট ব্ৰাউজিং অন অথবা অফ কৰক</translation> <translation id="2574014812750545982">পৃষ্ঠাটোত জুমৰ স্তৰ ৰিছেট কৰক</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_de.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_de.xtb index 9842ead4..79f044d 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_de.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_de.xtb
@@ -47,6 +47,7 @@ <translation id="2480851840841871861">Google Assistant öffnen</translation> <translation id="2488661730534396940">Nächsten Desktop links aktivieren</translation> <translation id="2515586267016047495">Alt</translation> +<translation id="2516999188535378855">Diagnose App öffnen</translation> <translation id="2530339807289914946">Auf der Webseite nach unten scrollen</translation> <translation id="2530896289327917474">Tastaturnavigation aktivieren oder deaktivieren</translation> <translation id="2574014812750545982">Zoomfaktor auf der Seite zurücksetzen</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_hi.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_hi.xtb index 8f293f45..6afe4df 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_hi.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_hi.xtb
@@ -47,6 +47,7 @@ <translation id="2480851840841871861">Google Assistant खोलें</translation> <translation id="2488661730534396940">बाईं ओर मौजूद डेस्क को चालू करें</translation> <translation id="2515586267016047495">Alt</translation> +<translation id="2516999188535378855">Diagnostics ऐप्लिकेशन खोलें</translation> <translation id="2530339807289914946">वेबपेज में नीचे स्क्रोल करें</translation> <translation id="2530896289327917474">कैरेट ब्राउज़िंग को चालू या बंद करने के लिए</translation> <translation id="2574014812750545982">पेज पर ज़ूम लेवल को रीसेट करें</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_kn.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_kn.xtb index 911c049..bcb2023 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_kn.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_kn.xtb
@@ -47,6 +47,7 @@ <translation id="2480851840841871861">Google ಅಸಿಸ್ಟೆಂಟ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="2488661730534396940">ಎಡಭಾಗದಲ್ಲಿರುವ ಡೆಸ್ಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="2515586267016047495">Alt</translation> +<translation id="2516999188535378855">Diagnostics ಆ್ಯಪ್ ತೆರೆಯಿರಿ</translation> <translation id="2530339807289914946">ವೆಬ್ ಪುಟವನ್ನು ಸ್ಕ್ರಾಲ್ ಡೌನ್ ಮಾಡಿ</translation> <translation id="2530896289327917474">ಕೆರೆಟ್ ಬ್ರೌಸಿಂಗ್ ಆನ್ ಅಥವಾ ಆಫ್ ಮಾಡಿ</translation> <translation id="2574014812750545982">ಪುಟದಲ್ಲಿನ ಝೂಮ್ ಮಟ್ಟವನ್ನು ಮರುಹೊಂದಿಸಿ</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_mr.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_mr.xtb index 7d3d5d7e..549b994 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_mr.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_mr.xtb
@@ -47,6 +47,7 @@ <translation id="2480851840841871861">Google Assistant उघडा</translation> <translation id="2488661730534396940">डावीकडील डेस्क सुरू करा</translation> <translation id="2515586267016047495">Alt</translation> +<translation id="2516999188535378855">Diagnostics अॅप उघडा</translation> <translation id="2530339807289914946">वेब पेज खालच्या दिशेला स्क्रोल करा</translation> <translation id="2530896289327917474">कॅरेट ब्राउझिंग सुरू किंवा बंद करा</translation> <translation id="2574014812750545982">पेजवर झूम स्तर रीसेट करा</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb index 41da83b..4e63900 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb
@@ -47,6 +47,7 @@ <translation id="2480851840841871861">Mở Trợ lý Google</translation> <translation id="2488661730534396940">Kích hoạt không gian làm việc ở bên trái</translation> <translation id="2515586267016047495">Alt</translation> +<translation id="2516999188535378855">Mở ứng dụng Chẩn đoán</translation> <translation id="2530339807289914946">Cuộn xuống dưới trang web</translation> <translation id="2530896289327917474">Bật hoặc tắt tính năng duyệt web có con nháy</translation> <translation id="2574014812750545982">Đặt lại mức thu phóng trên trang</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 79de747c..2a7ebe2 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -21,7 +21,7 @@ <translation id="1119348796022671382">থীমযুক্ত ৰঙৰ ম'ডটোৱে ইণ্টাৰফে’চটো পাতলকৈ ৰঙীন কৰিবলৈ আপোনাৰ ৱালপেপাৰৰ পৰা আহৰণ কৰা ৰংবোৰ ব্যৱহাৰ কৰে।</translation> <translation id="112308213915226829">শ্বেল্ফ স্বয়ংক্রিয়ভাৱে লুকুৱাওক</translation> <translation id="1153356358378277386">যোৰা লগোৱা ডিভাইচ</translation> -<translation id="1165712434476988950">আপডে'টটো প্ৰয়োগ কৰিবলৈ ডিভাইচটো ৰিষ্টাৰ্ট কৰাৰ আৱশ্যক।</translation> +<translation id="1165712434476988950">আপডে’টটো প্ৰয়োগ কৰিবলৈ ডিভাইচটো ৰিষ্টাৰ্ট কৰাৰ আৱশ্যক।</translation> <translation id="1175572348579024023">স্ক্ৰ’ল কৰক</translation> <translation id="1178581264944972037">পজ কৰক</translation> <translation id="1181037720776840403">আঁতৰাওক</translation> @@ -577,7 +577,7 @@ <translation id="5992218262414051481">উচ্চ বৈষাদৃশ্যৰ ম’ড সক্ষম কৰা হ’ল। ইয়াক ট’গল অফ কৰিবলৈ আকৌ Ctrl+Search+H টিপক।</translation> <translation id="6018164090099858612">প্ৰতিবিম্বকৰণ ম’ড বন্ধ কৰি আছে</translation> <translation id="602001110135236999">বাওঁফাললৈ স্ক্ৰ’ল কৰক</translation> -<translation id="602472752137106327">আটাইবোৰ ডেস্ক ম'ডটোৰ পৰা ৱিণ্ড' দেখুৱাওক, ৰেডিঅ'ৰ বুটাম বাছনি কৰা হ'ল</translation> +<translation id="602472752137106327">আটাইবোৰ ডেস্ক ম'ডটোৰ পৰা ৱিণ্ড' দেখুৱাওক, ৰেডিঅ’ বুটাম বাছনি কৰা হ'ল</translation> <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />, <ph name="CONNECTION_STATUS" />, ছিগনেলৰ ক্ষমতা <ph name="SIGNAL_STRENGTH" />, আপোনাৰ প্ৰশাসকে পৰিচালনা কৰে</translation> <translation id="6030495522958826102">স্ক্ৰীনখনৰ তলৰ বাওঁফালৰ কোণটোলৈ মেনুখন নিয়া হৈছে।</translation> <translation id="6032620807120418574">পূৰ্ণ স্ক্ৰীন ৰেকৰ্ড কৰিবলৈ যিকোনো ঠাইত ক্লিক কৰক</translation> @@ -694,6 +694,7 @@ <translation id="7029814467594812963">ছেশ্বনৰ পৰা প্ৰস্থান</translation> <translation id="703425375924687388"><ph name="QUERY_NAME" />, Google Assistant</translation> <translation id="7042322267639375032">বিভিন্ন স্থিতি দেখুওৱা ঠাই সংকোচন কৰক</translation> +<translation id="7055910611768509537">এসপ্তাহ ধৰি ষ্টাইলাছ ব্যৱহাৰ কৰা হোৱা নাই</translation> <translation id="7066646422045619941">এই নেটৱৰ্কটো আপোনাৰ প্ৰশাসকে অক্ষম কৰি থৈছে।</translation> <translation id="7067196344162293536">স্বয়ং-ঘূৰ্ণন</translation> <translation id="7068360136237591149">ফাইলসমূহ খোলক</translation> @@ -863,7 +864,7 @@ <translation id="8477270416194247200">বাতিল কৰিবলৈ Alt+Search বা Shift টিপক।</translation> <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />এ <ph name="SPECIFIED_RESOLUTION" /> সমৰ্থন নকৰে। ৰিজ’লিউশ্বনটো <ph name="FALLBACK_RESOLUTION" />লৈ সলনি কৰা হৈছে। সালসলনিসমূহ ৰাখিবলৈ নিশ্চিত কৰকত ক্লিক কৰক। পূৰ্বৱৰ্তী ছেটিংসমূহ <ph name="TIMEOUT_SECONDS" />ত পুনঃস্থাপন কৰা হ’ব।</translation> <translation id="8513108775083588393">স্বয়ং-ঘূৰ্ণন</translation> -<translation id="851458219935658693">বৰ্তমানৰ ডেস্ক ম'ডটোৰ পৰা ৱিণ্ড' দেখুৱাওক, ৰেডিঅ'ৰ বুটাম বাছনি কৰা হ'ল</translation> +<translation id="851458219935658693">বৰ্তমানৰ ডেস্ক ম'ডটোৰ পৰা ৱিণ্ড' দেখুৱাওক, ৰেডিঅ’ বুটাম বাছনি কৰা হ'ল</translation> <translation id="8517041960877371778">আপোনাৰ <ph name="DEVICE_TYPE" /> অন কৰি থোৱা অৱস্থাত চার্জ নহ'ব পাৰে।</translation> <translation id="8553395910833293175">ইতিমধ্যে আটাইবোৰ ডেস্কক দায়িত্ব প্ৰদান কৰা হৈছে।</translation> <translation id="8563862697512465947">জাননীৰ ছেটিংসমূহ</translation> @@ -943,7 +944,7 @@ <translation id="9089416786594320554">ইনপুট পদ্ধতি</translation> <translation id="9091626656156419976">ডিছপ্লে' <ph name="DISPLAY_NAME" /> আঁতৰোৱা হ'ল</translation> <translation id="9098969848082897657">ফ’নটো নীৰৱ কৰক</translation> -<translation id="9099154003160514616">Lacrosৰ আপডে'ট উপলব্ধ</translation> +<translation id="9099154003160514616">Lacrosৰ আপডে’ট উপলব্ধ</translation> <translation id="9133335900048457298">সুৰক্ষিত সমল ৰেকৰ্ড কৰিব নোৱাৰি</translation> <translation id="9151726767154816831">আপডে’ট কৰিবলৈ ৰিষ্টাৰ্ট আৰু পাৱাৰৱাশ্ব কৰক</translation> <translation id="9166331175924255663">নিকটৱৰ্তী শ্বেয়াৰৰ উচ্চ দৃশ্যমানতা ট’গল কৰক।</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index dc0bc8f..dd6aa89d 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -695,6 +695,7 @@ <translation id="7029814467594812963">Sitzung beenden</translation> <translation id="703425375924687388"><ph name="QUERY_NAME" />, Google Assistant</translation> <translation id="7042322267639375032">Statusbereich minimieren</translation> +<translation id="7055910611768509537">Eingabestift wurde seit über einer Woche nicht mehr verwendet</translation> <translation id="7066646422045619941">Dieses Netzwerk wurde von Ihrem Administrator deaktiviert.</translation> <translation id="7067196344162293536">Automatisch drehen</translation> <translation id="7068360136237591149">Dateien öffnen</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index c70ab8d..357792d 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -579,7 +579,7 @@ <translation id="5992218262414051481">Se habilitó el modo de contraste alto. Presiona Ctrl+Buscar+H de nuevo para desactivarlo.</translation> <translation id="6018164090099858612">Saliendo del modo de espejo</translation> <translation id="602001110135236999">Desplazar hacia la izquierda</translation> -<translation id="602472752137106327">Botón de selección que muestra las ventanas de todos los escritorios seleccionado</translation> +<translation id="602472752137106327">Está seleccionado el botón que muestra las ventanas de todos los escritorios</translation> <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />, <ph name="CONNECTION_STATUS" />, intensidad de la señal: <ph name="SIGNAL_STRENGTH" />, administrada por tu administrador</translation> <translation id="6030495522958826102">El menú se movió a la esquina inferior izquierda de la pantalla.</translation> <translation id="6032620807120418574">Haz clic en cualquier parte para grabar la pantalla completa</translation> @@ -869,7 +869,7 @@ <translation id="8477270416194247200">Presiona Alt y la tecla de búsqueda o mayúscula para cancelarlo.</translation> <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> no admite la resolución <ph name="SPECIFIED_RESOLUTION" />. Se cambió la resolución a <ph name="FALLBACK_RESOLUTION" />. Para mantener este cambio, haz clic en Confirmar. En <ph name="TIMEOUT_SECONDS" />, se restablecerá la configuración anterior.</translation> <translation id="8513108775083588393">Giro autom.</translation> -<translation id="851458219935658693">Botón de selección que muestra las ventanas del escritorio actual seleccionado</translation> +<translation id="851458219935658693">Está seleccionado el botón que muestra las ventanas del escritorio actual</translation> <translation id="8517041960877371778">Tu <ph name="DEVICE_TYPE" /> podría no cargarse si el dispositivo está encendido.</translation> <translation id="8553395910833293175">Ya se asignó a todos los escritorios.</translation> <translation id="8563862697512465947">Configuración de notificación</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb index 90ab818..c443a1f 100644 --- a/ash/strings/ash_strings_eu.xtb +++ b/ash/strings/ash_strings_eu.xtb
@@ -579,7 +579,7 @@ <translation id="5992218262414051481">Gaituta dago kontraste handiko modua. Desaktibatzeko, sakatu berriro Ktrl + Bilatu + H.</translation> <translation id="6018164090099858612">Ispilu modutik irteten</translation> <translation id="602001110135236999">Egin ezkerrera</translation> -<translation id="602472752137106327">"Erakutsi lan-eremu guztietan dauden leihoak" aukera-botoia hautatuta dago</translation> +<translation id="602472752137106327">Erakutsi lan-eremu guztietan dauden leihoak, aukera-botoia hautatuta dago</translation> <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />. <ph name="CONNECTION_STATUS" />. Seinalearen indarra: <ph name="SIGNAL_STRENGTH" />. Administratzaileak kudeatua.</translation> <translation id="6030495522958826102">Pantailaren beheko ezkerreko izkinara eraman da menua.</translation> <translation id="6032620807120418574">Egin klik edonon pantaila osoko moduan grabatzeko</translation> @@ -868,7 +868,7 @@ <translation id="8477270416194247200">Bertan behera uzteko, sakatu Alt + Bilatu edo Maius.</translation> <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> pantailak ez du onartzen <ph name="SPECIFIED_RESOLUTION" /> bereizmena. <ph name="FALLBACK_RESOLUTION" /> ezarri da pantailaren bereizmen gisa. Sakatu "Berretsi" aldaketak gordetzeko. <ph name="TIMEOUT_SECONDS" /> barru aurreko ezarpenak leheneratuko dira.</translation> <translation id="8513108775083588393">Biratu auto.</translation> -<translation id="851458219935658693">"Erakutsi uneko lan-eremuan dauden leihoak" aukera-botoia hautatuta dago</translation> +<translation id="851458219935658693">Erakutsi lan-eremu honetan dauden leihoak, aukera-botoia hautatuta dago</translation> <translation id="8517041960877371778">Baliteke <ph name="DEVICE_TYPE" /> gailua ez kargatzea piztuta dagoen bitartean.</translation> <translation id="8553395910833293175">Lan-eremu guztiei esleitu zaie dagoeneko.</translation> <translation id="8563862697512465947">Jakinarazpen-ezarpenak</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index c6687f4..4483268 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -696,6 +696,7 @@ <translation id="7029814467594812963">सत्र से बाहर निकलें</translation> <translation id="703425375924687388"><ph name="QUERY_NAME" />, Google Assistant</translation> <translation id="7042322267639375032">स्टेटस बताने वाली जगह को छोटा करें</translation> +<translation id="7055910611768509537">स्टाइलस को इस्तेमाल किए एक हफ़्ते से ज़्यादा हो गया है</translation> <translation id="7066646422045619941">यह नेटवर्क आपके व्यवस्थापक द्वारा अक्षम किया गया है.</translation> <translation id="7067196344162293536">अपने आप घूमना</translation> <translation id="7068360136237591149">फ़ाइल खोलो</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb index 209c2aa3..ec4053c3 100644 --- a/ash/strings/ash_strings_hu.xtb +++ b/ash/strings/ash_strings_hu.xtb
@@ -21,7 +21,7 @@ <translation id="1119348796022671382">A témán alapuló színmód a háttérképen alapuló színeket alkalmazva finoman kiszínezi a kezelőfelületet.</translation> <translation id="112308213915226829">Polc automatikus elrejtése</translation> <translation id="1153356358378277386">Párosított eszközök</translation> -<translation id="1165712434476988950">Újraindításra van szükség a frissítés alkalmazásához.</translation> +<translation id="1165712434476988950">A frissítés alkalmazásához az eszköz újraindítása szükséges.</translation> <translation id="1175572348579024023">Görgetés</translation> <translation id="1178581264944972037">Szünet</translation> <translation id="1181037720776840403">Eltávolítás</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index 1a1384f..8df6290 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -696,6 +696,7 @@ <translation id="7029814467594812963">ಸೆಶನ್ನಿಂದ ನಿರ್ಗಮಿಸಿ</translation> <translation id="703425375924687388"><ph name="QUERY_NAME" />, Google ಅಸಿಸ್ಟೆಂಟ್</translation> <translation id="7042322267639375032">ಸ್ಥಿತಿ ಕ್ಷೇತ್ರವನ್ನು ಕುಗ್ಗಿಸಿ</translation> +<translation id="7055910611768509537">ಒಂದು ವಾರದಿಂದ ಸ್ಟೈಲಸ್ ಅನ್ನು ಬಳಸಲಾಗಿಲ್ಲ</translation> <translation id="7066646422045619941">ಈ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ.</translation> <translation id="7067196344162293536">ಸ್ವಯಂ ತಿರುಗಿಸು</translation> <translation id="7068360136237591149">ಫೈಲ್ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index 9c3806f..3c6e72c 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -678,7 +678,7 @@ <translation id="685782768769951078">{NUM_DIGITS,plural, =1{Нэг цифр үлдсэн}other{# цифр үлдсэн}}</translation> <translation id="6878400149835617132">Товчлол унтраалттай байна</translation> <translation id="6886172995547742638">Таны <ph name="DEVICE_TYPE" />-н гүйцэтгэл буурч болзошгүй. Баталгаажсан <ph name="PREFERRED_MINIMUM_POWER" />Вт эсвэл түүнээс дээш чадалтай USB-C тэжээлийн адаптерыг ашиглана уу.</translation> -<translation id="688631446150864480">Цонхыг сэлгэхийн тулд Доош сум товчыг дарна уу</translation> +<translation id="688631446150864480">Цонхыг сэлгэхийн тулд Доош сум товчийг дарна уу</translation> <translation id="6896758677409633944">Хуулах</translation> <translation id="6910714959251846841">Тус шинэчлэлт нь таны төхөөрөмжийг үйлдвэрийн тохиргоонд буцааж оруулахыг шаарддаг. Хамгийн сүүлийн үеийн <ph name="SYSTEM_APP_NAME" /> шинэчлэлтийн талаар нэмэлт мэдээлэл авна уу.</translation> <translation id="6919251195245069855">Таны ухаалаг картыг таньж чадсангүй. Дахин оролдоно уу.</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb index c34480c..c2540c4 100644 --- a/ash/strings/ash_strings_mr.xtb +++ b/ash/strings/ash_strings_mr.xtb
@@ -578,6 +578,7 @@ <translation id="5992218262414051481">उच्च तीव्रता मोड सुरू केला आहे. तो बंदवर टॉगल करण्यासाठी Ctrl+Search+H दाबा.</translation> <translation id="6018164090099858612">मिरर मोडमधून बाहेर पडत आहे</translation> <translation id="602001110135236999">डावीकडे स्क्रोल करा</translation> +<translation id="602472752137106327">सर्व डेस्कवरील विंडो दाखवा, रेडिओ बटण निवडले</translation> <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />, <ph name="CONNECTION_STATUS" />, सिग्नल क्षमता <ph name="SIGNAL_STRENGTH" />, तुमच्या अॅडमिनिस्ट्रेटरने व्यवस्थापित केलेले</translation> <translation id="6030495522958826102">मेनू स्क्रीनच्या तळाशी डाव्या कोपर्यात हलवला.</translation> <translation id="6032620807120418574">फुल स्क्रीन रेकॉर्ड करण्यासाठी कुठेही क्लिक करा</translation> @@ -676,6 +677,7 @@ <translation id="685782768769951078">{NUM_DIGITS,plural, =1{एक अंक शिल्लक आहे}other{# अंक शिल्लक आहेत}}</translation> <translation id="6878400149835617132">शॉर्टकट बंद केला आहे</translation> <translation id="6886172995547742638">तुमच्या <ph name="DEVICE_TYPE" /> चा परफॉर्मन्स कमी होऊ शकतो. प्रमाणित <ph name="PREFERRED_MINIMUM_POWER" />W किंवा त्यावरील USB-C पॉवर अडॅप्टर वापरा.</translation> +<translation id="688631446150864480">विंडो स्विच करण्यासाठी डाउन अॅरो की दाबा</translation> <translation id="6896758677409633944">कॉपी करा</translation> <translation id="6910714959251846841">या अपडेटसाठी तुमचे डिव्हाइस Powerwash करणे आवश्यक आहे. <ph name="SYSTEM_APP_NAME" /> च्या नवीनतम अपडेटबाबत अधिक जाणून घ्या.</translation> <translation id="6919251195245069855">तुमचे स्मार्ट कार्ड ओळखू शकलो नाही. पुन्हा प्रयत्न करा.</translation> @@ -693,6 +695,7 @@ <translation id="7029814467594812963">सेशनमधून बाहेर पडा</translation> <translation id="703425375924687388"><ph name="QUERY_NAME" />, Google Assistant</translation> <translation id="7042322267639375032">स्थिती क्षेत्र कोलॅप्स करा</translation> +<translation id="7055910611768509537">एका आठवड्यापेक्षा जास्त वेळापासून स्टायलस वापरले नाही</translation> <translation id="7066646422045619941">हे नेटवर्क तुमच्या ॲडमिनिस्ट्रेटरने अक्षम केले आहे.</translation> <translation id="7067196344162293536">स्वयं फिरवा</translation> <translation id="7068360136237591149">फाइल उघडा</translation> @@ -841,6 +844,7 @@ <translation id="8297006494302853456">कमकुवत</translation> <translation id="8308637677604853869">मागील मेनू</translation> <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /> <ph name="GET_STARTED" /></translation> +<translation id="8345019317483336363"><ph name="WINDOW_TITLE" /> विंडो निवडली</translation> <translation id="8351131234907093545">टीप तयार करा</translation> <translation id="8371779926711439835">एक अक्षर पुढे जा</translation> <translation id="8375916635258623388">हे <ph name="DEVICE_NAME" />आणि तुमचा फोन आपोआप कनेक्ट होतील</translation> @@ -864,6 +868,7 @@ <translation id="8477270416194247200">रद्द करण्यासाठी Alt+Search किंवा Shift दाबा.</translation> <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> ला सपोर्ट करत नाही. रेझोल्यूशन <ph name="FALLBACK_RESOLUTION" /> वर बदलले. बदल ठेवण्यासाठी खात्री करा वर क्लिक करा. मागील सेटिंग्ज <ph name="TIMEOUT_SECONDS" /> मध्ये रिस्टोअर केली जातील.</translation> <translation id="8513108775083588393">ऑटो-रोटेट</translation> +<translation id="851458219935658693">सध्याच्या डेस्कवरील विंडो दाखवा, रेडिओ बटण निवडले</translation> <translation id="8517041960877371778">तुमचे <ph name="DEVICE_TYPE" /> सुरू केले असताना कदाचित चार्ज होणार नाही.</translation> <translation id="8553395910833293175">सर्व डेस्कना आधीपासून असाइन केले आहे.</translation> <translation id="8563862697512465947">सूचना सेटिंग्ज</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 1ff41fa..7f6674e 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -578,6 +578,7 @@ <translation id="5992218262414051481">ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ ମୋଡ୍ ସକ୍ଷମ କରାଗଲା। ଏହାକୁ ବନ୍ଦରେ ଟୋଗଲ୍ କରିବା ପାଇଁ ପୁଣିଥରେ Ctrl+Search+D ଦବାନ୍ତୁ</translation> <translation id="6018164090099858612">ମିରର୍ ମୋଡ୍ରୁ ପ୍ରସ୍ଥାନ କରୁଛି</translation> <translation id="602001110135236999">ବାମକୁ ସ୍କ୍ରୋଲ୍ କରନ୍ତୁ</translation> +<translation id="602472752137106327">ସମସ୍ତ ଡେସ୍କରୁ ୱିଣ୍ଡୋଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ, ରେଡିଓ ବଟନକୁ ଚୟନ କରାଯାଇଛି</translation> <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />, <ph name="CONNECTION_STATUS" />, ସିଗ୍ନାଲ୍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />, ଆପଣଙ୍କର ଆଡ୍ମିନିଷ୍ଟ୍ରେଟର୍ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ</translation> <translation id="6030495522958826102">ସ୍କ୍ରିନର ନିମ୍ନ-ବାମ କୋଣକୁ ମେନୁ ମୁଭ୍ କରାଯାଇଛି।</translation> <translation id="6032620807120418574">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ ରେକର୍ଡ କରିବାକୁ ସ୍କ୍ରିନର ଯେ କୌଣସି ସ୍ଥାନରେ କ୍ଲିକ୍ କରନ୍ତୁ</translation> @@ -676,6 +677,7 @@ <translation id="685782768769951078">{NUM_DIGITS,plural, =1{ଗୋଟିଏ ଅଙ୍କ ବାକି ଅଛି}other{#ଟି ଅଙ୍କ ବାକି ଅଛି}}</translation> <translation id="6878400149835617132">ସର୍ଟକଟ୍ ବନ୍ଦ କରାଯାଇଛି</translation> <translation id="6886172995547742638">ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />ର କାର୍ଯ୍ୟଦକ୍ଷତା କମ୍ ହୋଇପାରେ। ଏକ ସ୍ୱୀକୃତିପ୍ରାପ୍ତ <ph name="PREFERRED_MINIMUM_POWER" />W କିମ୍ବା ଉଚ୍ଚତର USB-C ପାୱାର ଆଡପ୍ଟର୍ ବ୍ୟବହାର କରନ୍ତୁ।</translation> +<translation id="688631446150864480">ୱିଣ୍ଡୋଗୁଡ଼ିକୁ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ଡାଉନ୍ ତୀର କୀ'କୁ ଦବାନ୍ତୁ</translation> <translation id="6896758677409633944">କପି କରନ୍ତୁ</translation> <translation id="6910714959251846841">ଏହି ଅପ୍ଡେଟ୍ ଆପଣଙ୍କ ଡିଭାଇସ୍କୁ ପାୱାର୍ୱାସ୍ ଦେବାକୁ ଆବଶ୍ୟକ କରେ। ନବୀନତମ <ph name="SYSTEM_APP_NAME" /> ଅପ୍ଡେଟ୍ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ।</translation> <translation id="6919251195245069855">ଆପଣଙ୍କର ସ୍ମାର୍ଟ କାର୍ଡକୁ ଚିହ୍ନଟ କରିପାରୁ ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> @@ -841,6 +843,7 @@ <translation id="8297006494302853456">ଦୁର୍ବଳ</translation> <translation id="8308637677604853869">ପୂର୍ବବର୍ତ୍ତୀ ମେନୁ</translation> <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /> <ph name="GET_STARTED" /></translation> +<translation id="8345019317483336363"><ph name="WINDOW_TITLE" /> ୱିଣ୍ଡୋକୁ ଚୟନ କରାଯାଇଛି</translation> <translation id="8351131234907093545">ନୋଟ୍ ତିଆରି କରନ୍ତୁ</translation> <translation id="8371779926711439835">ଗୋଟିଏ ଅକ୍ଷର ଆଗକୁ ଯାଆନ୍ତୁ</translation> <translation id="8375916635258623388">ଏହି <ph name="DEVICE_NAME" /> ଏବଂ ଆପଣଙ୍କର ଫୋନ୍ ସ୍ୱଚାଳିତ ଭାବେ ସଂଯୋଗ ହେବ</translation> @@ -864,6 +867,7 @@ <translation id="8477270416194247200">Alt+Search ଦବାନ୍ତୁ କିମ୍ବା ବାତିଲ୍କୁ ଶିଫ୍ଟ କରନ୍ତୁ।</translation> <translation id="8492573885090281069"><ph name="DISPLAY_NAME" />, <ph name="SPECIFIED_RESOLUTION" />କୁ ସମର୍ଥନ କରେ ନାହିଁ। ରିଜୋଲ୍ୟୁସନକୁ <ph name="FALLBACK_RESOLUTION" />ରେ ବଦଳା ଯାଇଥିଲା। ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ରଖିବା ପାଇଁ ସୁନିଶ୍ଚିତ କରନ୍ତୁରେ କ୍ଲିକ୍ କରନ୍ତୁ। ପୂର୍ବବର୍ତ୍ତୀ ସେଟିଂସ୍ <ph name="TIMEOUT_SECONDS" />ରେ ରିଷ୍ଟୋର୍ କରାଯିବ।</translation> <translation id="8513108775083588393">ସ୍ୱତଃ-ଘୂର୍ଣ୍ଣନ</translation> +<translation id="851458219935658693">ବର୍ତ୍ତମାନର ଡେସ୍କରୁ ୱିଣ୍ଡୋଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ, ରେଡିଓ ବଟନକୁ ଚୟନ କରାଯାଇଛି</translation> <translation id="8517041960877371778">ଯେତେବେଳେ ଏହା ଚାଲୁ ଅଛି, ସେତେବେଳେ ଆପଣଙ୍କର <ph name="DEVICE_TYPE" /> ଚାର୍ଜ ହୋଇନପାରେ।</translation> <translation id="8553395910833293175">ସମସ୍ତ ଡେସ୍କକୁ ପୂର୍ବରୁ ଆସାଇନ୍ କରାଯାଇଛି।</translation> <translation id="8563862697512465947">ବିଜ୍ଞପ୍ତି ସେଟିଂସ୍</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 1e6612a..e7c4183 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -21,6 +21,7 @@ <translation id="1119348796022671382">ਥੀਮਡ ਰੰਗ ਮੋਡ ਇੰਟਰਫੇਸ ਨੂੰ ਹਲਕਾ ਰੰਗੀਨ ਕਰਨ ਲਈ ਅਜਿਹੇ ਰੰਗਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਵਾਲਪੇਪਰ ਤੋਂ ਐਕਸਟ੍ਰੈਕਟ ਕੀਤੇ ਗਏ ਹਨ।</translation> <translation id="112308213915226829">ਸ਼ੈਲਫ ਆਟੋਲੁਕਾਓ</translation> <translation id="1153356358378277386">ਜੋੜਾਬੱਧ ਕੀਤੀਆਂ ਡੀਵਾਈਸਾਂ</translation> +<translation id="1165712434476988950">ਅੱਪਡੇਟ ਲਾਗੂ ਕਰਨ ਲਈ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।</translation> <translation id="1175572348579024023">ਸਕ੍ਰੋਲ</translation> <translation id="1178581264944972037">ਰੋਕੋ</translation> <translation id="1181037720776840403">ਹਟਾਓ</translation> @@ -126,6 +127,7 @@ <translation id="1989113344093894667">ਸਮੱਗਰੀ ਨੂੰ ਕੈਪਚਰ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <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> @@ -946,6 +948,7 @@ <translation id="9089416786594320554">ਇਨਪੁਟ ਵਿਧੀਆਂ</translation> <translation id="9091626656156419976">ਡਿਲਪਲੇ <ph name="DISPLAY_NAME" /> ਨੂੰ ਹਟਾਇਆ ਗਿਆ</translation> <translation id="9098969848082897657">ਫ਼ੋਨ ਖਮੋਸ਼ ਕਰੋ</translation> +<translation id="9099154003160514616">Lacros ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ</translation> <translation id="9133335900048457298">ਸੁਰੱਖਿਅਤ ਸਮੱਗਰੀ ਨੂੰ ਰਿਕਾਰਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="9151726767154816831">ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਮੁੜ-ਸ਼ੁਰੂ ਅਤੇ ਪਾਵਰਵਾਸ਼ ਕਰੋ</translation> <translation id="9166331175924255663">ਨਜ਼ਦੀਕੀ ਸਾਂਝ ਉੱਚ ਦਿਖਣਯੋਗਤਾ ਨੂੰ ਟੌਗਲ ਕਰੋ।</translation> @@ -957,6 +960,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" /> ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਨੂੰ <ph name="RESOLUTION" /> 'ਤੇ ਬਦਲ ਦਿੱਤਾ ਗਿਆ। ਤਬਦੀਲੀਆਂ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਲਈ 'ਤਸਦੀਕ ਕਰੋ' 'ਤੇ ਕਲਿੱਕ ਕਰੋ। ਪਿਛਲੀਆਂ ਸੈਟਿੰਗਾਂ ਨੂੰ <ph name="TIMEOUT_SECONDS" /> ਵਿੱਚ ਮੁੜ-ਬਹਾਲ ਕੀਤਾ ਜਾਵੇਗਾ।</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation> <translation id="9210037371811586452">'ਯੂਨੀਫਾਈਡ ਡੈਸਕਟਾਪ ਮੋਡ' ਤੋਂ ਬਾਹਰ ਜਾ ਰਿਹਾ ਹੈ</translation> +<translation id="9211490828691860325">ਸਾਰੇ ਡੈਸਕ</translation> <translation id="9211681782751733685">ਬੈਟਰੀ ਦੇ ਪੂਰਾ ਚਾਰਜ ਹੋਣ ਵਿੱਚ <ph name="TIME_REMAINING" /> ਬਾਕੀ।</translation> <translation id="9215934040295798075">ਵਾਲਪੇਪਰ ਸੈੱਟ ਕਰੋ</translation> <translation id="921989828232331238">ਤੁਹਾਡੇ ਮਾਂ-ਪਿਓ ਨੇ ਅੱਜ ਦੇ ਦਿਨ ਲਈ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਲਾਕ ਕਰ ਦਿੱਤਾ ਹੈ</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb index 1d91f18..f370afde 100644 --- a/ash/strings/ash_strings_uk.xtb +++ b/ash/strings/ash_strings_uk.xtb
@@ -578,7 +578,7 @@ <translation id="5992218262414051481">Увімкнено режим високого контрасту. Щоб вимкнути його, знову натисніть Ctrl+Search+H.</translation> <translation id="6018164090099858612">Вихід із режиму віддзеркалення</translation> <translation id="602001110135236999">Прокрутити ліворуч</translation> -<translation id="602472752137106327">Показ вікон з усіх робочих столів, перемикач вибрано</translation> +<translation id="602472752137106327">Показувати вікна з усіх робочих столів, перемикач вибрано</translation> <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />, <ph name="CONNECTION_STATUS" />, рівень сигналу –<ph name="SIGNAL_STRENGTH" />. Мережею керує адміністратор</translation> <translation id="6030495522958826102">Меню переміщено в нижній лівий кут екрана.</translation> <translation id="6032620807120418574">Натисніть будь-де, щоб записати весь екран</translation> @@ -867,7 +867,7 @@ <translation id="8477270416194247200">Щоб скасувати, натисніть Alt+Search або Shift.</translation> <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> не підтримує роздільну здатність <ph name="SPECIFIED_RESOLUTION" />. Роздільну здатність змінено на <ph name="FALLBACK_RESOLUTION" />. Щоб зберегти зміни, натисніть "Підтвердити". Попередні налаштування відновляться через <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="8513108775083588393">Автообертання</translation> -<translation id="851458219935658693">Показ вікон із поточного робочого столу, перемикач вибрано</translation> +<translation id="851458219935658693">Показувати вікна з поточного робочого столу, перемикач вибрано</translation> <translation id="8517041960877371778">Пристрій <ph name="DEVICE_TYPE" /> може не заряджатися, коли він увімкнений.</translation> <translation id="8553395910833293175">Уже призначено для всіх робочих столів.</translation> <translation id="8563862697512465947">Налаштування сповіщення</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb index 0303e10..d61b6cc 100644 --- a/ash/strings/ash_strings_vi.xtb +++ b/ash/strings/ash_strings_vi.xtb
@@ -695,6 +695,7 @@ <translation id="7029814467594812963">Thoát khỏi phiên</translation> <translation id="703425375924687388"><ph name="QUERY_NAME" />, Trợ lý Google</translation> <translation id="7042322267639375032">Thu gọn khu vực trạng thái</translation> +<translation id="7055910611768509537">Bút cảm ứng chưa được sử dụng hơn một tuần nay</translation> <translation id="7066646422045619941">Mạng này bị quản trị viên của bạn tắt.</translation> <translation id="7067196344162293536">Tự động xoay</translation> <translation id="7068360136237591149">Mở tệp</translation>
diff --git a/ash/style/ash_color_provider.cc b/ash/style/ash_color_provider.cc index 1603942..e49e221 100644 --- a/ash/style/ash_color_provider.cc +++ b/ash/style/ash_color_provider.cc
@@ -9,9 +9,9 @@ #include "ash/public/cpp/ash_constants.h" #include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/ash_pref_names.h" +#include "ash/public/cpp/style/color_mode_observer.h" #include "ash/session/session_controller_impl.h" #include "ash/shell.h" -#include "ash/system/dark_mode/color_mode_observer.h" #include "ash/wallpaper/wallpaper_controller_impl.h" #include "base/bind.h" #include "base/check_op.h"
diff --git a/ash/style/ash_color_provider.h b/ash/style/ash_color_provider.h index 820ae56b..0580e7e 100644 --- a/ash/style/ash_color_provider.h +++ b/ash/style/ash_color_provider.h
@@ -66,6 +66,9 @@ SkColor GetContentLayerColor(ContentLayerType type) const override; RippleAttributes GetRippleAttributes( SkColor bg_color = gfx::kPlaceholderColor) const override; + void AddObserver(ColorModeObserver* observer) override; + void RemoveObserver(ColorModeObserver* observer) override; + bool IsDarkModeEnabled() const override; // Gets the background color that can be applied on any layer. The returned // color will be different based on color mode and color theme (see @@ -87,13 +90,6 @@ void DecorateFloatingIconButton(views::ImageButton* button, const gfx::VectorIcon& icon); - void AddObserver(ColorModeObserver* observer); - void RemoveObserver(ColorModeObserver* observer); - - // True if pref |kDarkModeEnabled| is true, which means the current color mode - // is dark. - bool IsDarkModeEnabled() const; - // Whether the system color mode is themed, by default is true. If true, the // background color will be calculated based on extracted wallpaper color. bool IsThemed() const;
diff --git a/ash/system/dark_mode/dark_mode_detailed_view_controller.h b/ash/system/dark_mode/dark_mode_detailed_view_controller.h index a5206f7bb..4685f84 100644 --- a/ash/system/dark_mode/dark_mode_detailed_view_controller.h +++ b/ash/system/dark_mode/dark_mode_detailed_view_controller.h
@@ -5,7 +5,7 @@ #ifndef ASH_SYSTEM_DARK_MODE_DARK_MODE_DETAILED_VIEW_CONTROLLER_H_ #define ASH_SYSTEM_DARK_MODE_DARK_MODE_DETAILED_VIEW_CONTROLLER_H_ -#include "ash/system/dark_mode/color_mode_observer.h" +#include "ash/public/cpp/style/color_mode_observer.h" #include "ash/system/unified/detailed_view_controller.h" namespace ash {
diff --git a/ash/system/dark_mode/dark_mode_feature_pod_controller.h b/ash/system/dark_mode/dark_mode_feature_pod_controller.h index 0111641..29a85db1 100644 --- a/ash/system/dark_mode/dark_mode_feature_pod_controller.h +++ b/ash/system/dark_mode/dark_mode_feature_pod_controller.h
@@ -5,7 +5,7 @@ #ifndef ASH_SYSTEM_DARK_MODE_DARK_MODE_FEATURE_POD_CONTROLLER_H_ #define ASH_SYSTEM_DARK_MODE_DARK_MODE_FEATURE_POD_CONTROLLER_H_ -#include "ash/system/dark_mode/color_mode_observer.h" +#include "ash/public/cpp/style/color_mode_observer.h" #include "ash/system/unified/feature_pod_controller_base.h" #include "base/macros.h"
diff --git a/ash/system/phonehub/OWNERS b/ash/system/phonehub/OWNERS index af912742..cda073f 100644 --- a/ash/system/phonehub/OWNERS +++ b/ash/system/phonehub/OWNERS
@@ -1,2 +1,2 @@ tengs@chromium.org -khorimoto@chromium.org +file://chromeos/components/phonehub/OWNERS
diff --git a/ash/utility/layer_util_unittest.cc b/ash/utility/layer_util_unittest.cc index b6c864b..2f39e22 100644 --- a/ash/utility/layer_util_unittest.cc +++ b/ash/utility/layer_util_unittest.cc
@@ -63,7 +63,8 @@ } // namespace -TEST_F(LayerUtilTest, CopyContentToExistingLayer) { +// TODO(crbug.com/1177129) Re-enable test +TEST_F(LayerUtilTest, DISABLED_CopyContentToExistingLayer) { ui::Layer layer1; layer1.SetBounds(gfx::Rect(100, 100)); root_layer()->Add(&layer1);
diff --git a/base/base_switches.cc b/base/base_switches.cc index dc6993f9..972bfb2d 100644 --- a/base/base_switches.cc +++ b/base/base_switches.cc
@@ -162,6 +162,11 @@ // // This flag requires the BPF sandbox to be disabled. const char kEnableThreadInstructionCount[] = "enable-thread-instruction-count"; + +// TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when +// Crashpad is fully enabled on Linux. Indicates that Crashpad should be +// enabled. +extern const char kEnableCrashpad[] = "enable-crashpad"; #endif #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/base/base_switches.h b/base/base_switches.h index 2f11e27..af22c5118 100644 --- a/base/base_switches.h +++ b/base/base_switches.h
@@ -60,6 +60,10 @@ #if defined(OS_LINUX) || defined(OS_CHROMEOS) extern const char kEnableThreadInstructionCount[]; + +// TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when +// Crashpad is fully enabled on Linux. +extern const char kEnableCrashpad[]; #endif #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index a88e36b..7cc8754 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20210210.1.1 +0.20210210.2.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index a88e36b..7cc8754 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20210210.1.1 +0.20210210.2.1
diff --git a/cc/metrics/compositor_frame_reporter.cc b/cc/metrics/compositor_frame_reporter.cc index 7a4c0f6c..607cbd7 100644 --- a/cc/metrics/compositor_frame_reporter.cc +++ b/cc/metrics/compositor_frame_reporter.cc
@@ -702,34 +702,23 @@ case FrameTerminationStatus::kReplacedByNewReporter: EnableReportType(FrameReportType::kDroppedFrame); break; - case FrameTerminationStatus::kDidNotProduceFrame: { - const bool no_update_from_main = - frame_skip_reason_.has_value() && - frame_skip_reason() == FrameSkippedReason::kNoDamage; - const bool no_update_from_compositor = - !has_partial_update_ && frame_skip_reason_.has_value() && - frame_skip_reason() == FrameSkippedReason::kWaitingOnMain; - - if (no_update_from_main) { - // If this reporter was cloned, and the cloned reporter was marked as + case FrameTerminationStatus::kDidNotProduceFrame: + if (frame_skip_reason_.has_value() && + frame_skip_reason() == FrameSkippedReason::kNoDamage) { + // If this reporter was cloned, and the cloned repoter was marked as // containing 'partial update' (i.e. missing desired updates from the // main-thread), but this reporter terminated with 'no damage', then - // reset the 'partial update' flag from the cloned reporter (as well as - // other depending reporters). - while (!partial_update_dependents_.empty()) { - auto dependent = partial_update_dependents_.front(); + // reset the 'partial update' flag from the cloned reporter. + for (auto dependent : partial_update_dependents_) { if (dependent) dependent->set_has_partial_update(false); - partial_update_dependents_.pop(); } - } else if (!no_update_from_compositor) { - // If rather main thread has damage or compositor thread has partial - // damage, then it's a dropped frame. + } else { + // If no frames were produced, it was not due to no-damage, then it is a + // dropped frame. EnableReportType(FrameReportType::kDroppedFrame); } - break; - } case FrameTerminationStatus::kUnknown: break; } @@ -766,11 +755,6 @@ dropped_frame_counter_->OnEndFrame(args_, IsDroppedFrameAffectingSmoothness()); } - - if (discarded_partial_update_dependents_count_ > 0) - UMA_HISTOGRAM_CUSTOM_COUNTS( - "Graphics.Smoothness.Diagnostic.DiscardedDependentCount", - discarded_partial_update_dependents_count_, 1, 1000, 50); } void CompositorFrameReporter::EndCurrentStage(base::TimeTicks end_time) { @@ -1348,9 +1332,18 @@ // If |this| reporter is dependent on another reporter to decide about partial // update, then |this| should not have any such dependents. DCHECK(!partial_update_decider_); + DCHECK(!partial_update_dependents_.empty()); - owned_partial_update_dependents_.push(std::move(reporter)); - DiscardOldPartialUpdateReporters(); +#if DCHECK_IS_ON() + auto f = std::find_if(partial_update_dependents_.begin(), + partial_update_dependents_.end(), + [target = reporter.get()](const auto& weak_ptr) { + return target == weak_ptr.get(); + }); + DCHECK(f != partial_update_dependents_.end()); +#endif + owned_partial_update_dependents_.push_back(std::move(reporter)); + DCHECK_LT(owned_partial_update_dependents_.size(), 300u); } void CompositorFrameReporter::SetPartialUpdateDecider( @@ -1358,20 +1351,8 @@ DCHECK(decider); has_partial_update_ = true; partial_update_decider_ = decider; - decider->partial_update_dependents_.push(GetWeakPtr()); - DCHECK(partial_update_dependents_.empty()); -} - -void CompositorFrameReporter::DiscardOldPartialUpdateReporters() { - DCHECK_LE(owned_partial_update_dependents_.size(), - partial_update_dependents_.size()); - while (owned_partial_update_dependents_.size() > 300u) { - auto& dependent = owned_partial_update_dependents_.front(); - dependent->set_has_partial_update(false); - partial_update_dependents_.pop(); - owned_partial_update_dependents_.pop(); - discarded_partial_update_dependents_count_++; - } + decider->partial_update_dependents_.push_back(GetWeakPtr()); + DCHECK_LT(partial_update_dependents_.size(), 300u); } bool CompositorFrameReporter::MightHavePartialUpdate() const {
diff --git a/cc/metrics/compositor_frame_reporter.h b/cc/metrics/compositor_frame_reporter.h index 2cbb51b..94acb45 100644 --- a/cc/metrics/compositor_frame_reporter.h +++ b/cc/metrics/compositor_frame_reporter.h
@@ -7,7 +7,6 @@ #include <bitset> #include <memory> -#include <queue> #include <string> #include <utility> #include <vector> @@ -357,9 +356,6 @@ // This method is only used for DCheck base::TimeDelta SumOfStageHistory() const; - // Terminating reporters in partial_update_dependents_ after a limit. - void DiscardOldPartialUpdateReporters(); - base::TimeTicks Now() const; bool IsDroppedFrameAffectingSmoothness() const; @@ -425,15 +421,15 @@ // In such cases, |partial_update_dependents_| for A contains all the frames // that depend on A for deciding whether they had partial updates or not, and // |partial_update_decider_| is set to A for all these reporters. - std::queue<base::WeakPtr<CompositorFrameReporter>> partial_update_dependents_; + std::vector<base::WeakPtr<CompositorFrameReporter>> + partial_update_dependents_; base::WeakPtr<CompositorFrameReporter> partial_update_decider_; - uint32_t discarded_partial_update_dependents_count_; // From the above example, it may be necessary for A to keep all the // dependents alive until A terminates, so that the dependents can set their // |has_partial_update_| flags correctly. This is done by passing ownership of // these reporters (using |AdoptReporter()|). - std::queue<std::unique_ptr<CompositorFrameReporter>> + std::vector<std::unique_ptr<CompositorFrameReporter>> owned_partial_update_dependents_; base::WeakPtrFactory<CompositorFrameReporter> weak_factory_{this};
diff --git a/cc/metrics/compositor_frame_reporting_controller.cc b/cc/metrics/compositor_frame_reporting_controller.cc index 6713366..6d477af 100644 --- a/cc/metrics/compositor_frame_reporting_controller.cc +++ b/cc/metrics/compositor_frame_reporting_controller.cc
@@ -307,40 +307,20 @@ // BeginMain stage, but the main-thread can make updates, which can be // submitted with the next frame. stage_reporter->OnDidNotProduceFrame(skip_reason); - if (skip_reason == FrameSkippedReason::kWaitingOnMain) - SetPartialUpdateDeciderWhenWaitingOnMain(stage_reporter); - break; } } -} -void CompositorFrameReportingController:: - SetPartialUpdateDeciderWhenWaitingOnMain( - std::unique_ptr<CompositorFrameReporter>& stage_reporter) { - // If the compositor has no updates, and the main-thread has not responded - // to the begin-main-frame yet, then depending on main thread having - // update or not this would be a NoFrameProduced or a DroppedFrame. To - // handle this case , keep the reporter for the main-thread, but recreate - // a reporter for the current frame and link it to the reporter it depends - // on. - auto reporter = RestoreReporterAtBeginImpl(stage_reporter->frame_id()); - if (reporter) { - reporter->OnDidNotProduceFrame(FrameSkippedReason::kWaitingOnMain); - reporter->TerminateFrame(FrameTerminationStatus::kDidNotProduceFrame, - Now()); - stage_reporter->AdoptReporter(std::move(reporter)); - } else { - // The stage_reporter in this case was waiting for main, so needs to - // be adopted by the reporter which is waiting on Main thread's work - auto partial_update_decider = - HasOutstandingUpdatesFromMain(stage_reporter->frame_id()); - if (partial_update_decider) { - stage_reporter->SetPartialUpdateDecider(partial_update_decider); - stage_reporter->OnDidNotProduceFrame(FrameSkippedReason::kWaitingOnMain); - stage_reporter->TerminateFrame( - FrameTerminationStatus::kDidNotProduceFrame, Now()); - partial_update_decider->AdoptReporter(std::move(stage_reporter)); + // If the compositor has no updates, and the main-thread has not responded to + // the begin-main-frame yet, then it is essentially a dropped frame. To handle + // this case, keep the reporter for the main-thread, but recreate a reporter + // for the dropped-frame. + if (skip_reason == FrameSkippedReason::kWaitingOnMain) { + auto reporter = RestoreReporterAtBeginImpl(id); + if (reporter) { + reporter->OnDidNotProduceFrame(skip_reason); + reporter->TerminateFrame(FrameTerminationStatus::kDidNotProduceFrame, + Now()); } } }
diff --git a/cc/metrics/compositor_frame_reporting_controller.h b/cc/metrics/compositor_frame_reporting_controller.h index 7aecb39..bdfe6e8 100644 --- a/cc/metrics/compositor_frame_reporting_controller.h +++ b/cc/metrics/compositor_frame_reporting_controller.h
@@ -138,11 +138,6 @@ const viz::BeginFrameArgs& old_args, const viz::BeginFrameArgs& new_args) const; - // The arg is a reference to the unique_ptr, because depending on the state - // that reporter is in, its ownership might be pass or not. - void SetPartialUpdateDeciderWhenWaitingOnMain( - std::unique_ptr<CompositorFrameReporter>& reporter); - const bool should_report_metrics_; const int layer_tree_host_id_;
diff --git a/cc/metrics/compositor_frame_reporting_controller_unittest.cc b/cc/metrics/compositor_frame_reporting_controller_unittest.cc index d0bffcb..acd8e4b9 100644 --- a/cc/metrics/compositor_frame_reporting_controller_unittest.cc +++ b/cc/metrics/compositor_frame_reporting_controller_unittest.cc
@@ -446,6 +446,31 @@ "CompositorLatency.DroppedFrame.EndActivateToSubmitCompositorFrame", 0); } +TEST_F(CompositorFrameReportingControllerTest, ImplFrameCausedNoDamage) { + base::HistogramTester histogram_tester; + + SimulateBeginImplFrame(); + reporting_controller_.OnFinishImplFrame(args_.frame_id); + reporting_controller_.DidNotProduceFrame(args_.frame_id, + FrameSkippedReason::kNoDamage); + SimulateBeginImplFrame(); + histogram_tester.ExpectTotalCount( + "CompositorLatency.DroppedFrame.BeginImplFrameToSendBeginMainFrame", 0); + histogram_tester.ExpectBucketCount( + "CompositorLatency.Type", + CompositorFrameReporter::FrameReportType::kDroppedFrame, 0); + + reporting_controller_.OnFinishImplFrame(args_.frame_id); + reporting_controller_.DidNotProduceFrame(args_.frame_id, + FrameSkippedReason::kWaitingOnMain); + SimulateBeginImplFrame(); + histogram_tester.ExpectTotalCount( + "CompositorLatency.DroppedFrame.BeginImplFrameToSendBeginMainFrame", 1); + histogram_tester.ExpectBucketCount( + "CompositorLatency.Type", + CompositorFrameReporter::FrameReportType::kDroppedFrame, 1); +} + TEST_F(CompositorFrameReportingControllerTest, MainFrameCausedNoDamage) { base::HistogramTester histogram_tester; viz::BeginFrameId current_id_1(1, 1); @@ -1496,59 +1521,6 @@ } TEST_F(CompositorFrameReportingControllerTest, - CompositorFrameBlockedOnMainFrameWithNoDamage) { - viz::BeginFrameId current_id_1(1, 1); - viz::BeginFrameArgs args_1 = SimulateBeginFrameArgs(current_id_1); - - viz::BeginFrameId current_id_2(1, 2); - viz::BeginFrameArgs args_2 = SimulateBeginFrameArgs(current_id_2); - - viz::BeginFrameId current_id_3(1, 3); - viz::BeginFrameArgs args_3 = SimulateBeginFrameArgs(current_id_3); - - viz::BeginFrameId current_id_4(1, 4); - viz::BeginFrameArgs args_4 = SimulateBeginFrameArgs(current_id_4); - - reporting_controller_.WillBeginImplFrame(args_1); - reporting_controller_.WillBeginMainFrame(args_1); - reporting_controller_.OnFinishImplFrame(current_id_1); - EXPECT_EQ(0u, dropped_counter.total_compositor_dropped()); - reporting_controller_.DidNotProduceFrame(args_1.frame_id, - FrameSkippedReason::kWaitingOnMain); - - reporting_controller_.WillBeginImplFrame(args_2); - reporting_controller_.OnFinishImplFrame(args_2.frame_id); - reporting_controller_.DidNotProduceFrame(args_2.frame_id, - FrameSkippedReason::kWaitingOnMain); - - reporting_controller_.WillBeginImplFrame(args_3); - reporting_controller_.OnFinishImplFrame(args_3.frame_id); - reporting_controller_.DidNotProduceFrame(args_3.frame_id, - FrameSkippedReason::kWaitingOnMain); - - EXPECT_EQ(1u, reporting_controller_.GetBlockingReportersCount()); - EXPECT_EQ(3u, reporting_controller_.GetBlockedReportersCount()); - - // All frames are waiting for the main frame - EXPECT_EQ(0u, dropped_counter.total_main_dropped()); - EXPECT_EQ(0u, dropped_counter.total_compositor_dropped()); - EXPECT_EQ(0u, dropped_counter.total_frames()); - - reporting_controller_.BeginMainFrameAborted(args_1.frame_id); - reporting_controller_.DidNotProduceFrame(args_1.frame_id, - FrameSkippedReason::kNoDamage); - EXPECT_EQ(0u, dropped_counter.total_compositor_dropped()); - - // New reporters replace older reporters - reporting_controller_.WillBeginImplFrame(args_4); - reporting_controller_.WillBeginMainFrame(args_4); - - EXPECT_EQ(4u, dropped_counter.total_frames()); - EXPECT_EQ(0u, dropped_counter.total_main_dropped()); - EXPECT_EQ(0u, dropped_counter.total_compositor_dropped()); -} - -TEST_F(CompositorFrameReportingControllerTest, SkippedFramesFromDisplayCompositorHaveSmoothThread) { auto thread_type_compositor = FrameSequenceMetrics::ThreadType::kCompositor; reporting_controller_.SetThreadAffectsSmoothness(thread_type_compositor,
diff --git a/chrome/VERSION b/chrome/VERSION index c41e3bc..61d34485 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=90 MINOR=0 -BUILD=4415 +BUILD=4416 PATCH=0
diff --git a/chrome/android/features/autofill_assistant/BUILD.gn b/chrome/android/features/autofill_assistant/BUILD.gn index 1d2efc6..27e903f4 100644 --- a/chrome/android/features/autofill_assistant/BUILD.gn +++ b/chrome/android/features/autofill_assistant/BUILD.gn
@@ -312,7 +312,7 @@ "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTestUtil.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureParameters.java", - "javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureSingleRunTest.java", + "javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTestUtils.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/TestingAutofillAssistantModuleEntryProvider.java", ]
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureSingleRunTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTest.java similarity index 98% rename from chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureSingleRunTest.java rename to chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTest.java index 01e32ed..302515f 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureSingleRunTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTest.java
@@ -52,8 +52,7 @@ */ @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @RunWith(ChromeJUnit4ClassRunner.class) -public class PasswordChangeFixtureSingleRunTest - implements PasswordStoreBridge.PasswordStoreObserver { +public class PasswordChangeFixtureTest implements PasswordStoreBridge.PasswordStoreObserver { @Rule public CustomTabActivityTestRule mTestRule = new CustomTabActivityTestRule();
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTestUtils.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTestUtils.java index 163babc..bb1e119 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTestUtils.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/PasswordChangeFixtureTestUtils.java
@@ -28,7 +28,7 @@ */ public final class PasswordChangeFixtureTestUtils { /** The default maximum time to wait for a criteria to become valid. */ - public static final long MAX_WAIT_TIME_IN_MS = 30000; + public static final long MAX_WAIT_TIME_IN_MS = 60000; /** Default tag to log password change integration tests information. */ public static final String TAG = "PasswordChangeTest";
diff --git a/chrome/android/java/res/drawable/google_pay_plex.xml b/chrome/android/java/res/drawable/google_pay_plex.xml index 101f253..ce75376 100644 --- a/chrome/android/java/res/drawable/google_pay_plex.xml +++ b/chrome/android/java/res/drawable/google_pay_plex.xml
@@ -4,37 +4,30 @@ found in the LICENSE file. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="38dp" - android:height="24dp" - android:viewportWidth="38" - android:viewportHeight="24"> + android:width="32dp" + android:height="20dp" + android:viewportWidth="32" + android:viewportHeight="20"> <path - android:strokeWidth="1" - android:pathData="M3,0.5C1.6193,0.5 0.5,1.6193 0.5,3V21C0.5,22.3807 1.6193,23.5 3,23.5H35C36.3807,23.5 37.5,22.3807 37.5,21V3C37.5,1.6193 36.3807,0.5 35,0.5H3Z" - android:fillColor="#ffffff" - android:strokeColor="#DADCE0"/> + android:pathData="M2,0L30,0A2,2 0,0 1,32 2L32,18A2,2 0,0 1,30 20L2,20A2,2 0,0 1,0 18L0,2A2,2 0,0 1,2 0z" + android:fillColor="#ffffff"/> <path - android:strokeWidth="1" - android:pathData="M3,0.5C1.6193,0.5 0.5,1.6193 0.5,3V21C0.5,22.3807 1.6193,23.5 3,23.5H35C36.3807,23.5 37.5,22.3807 37.5,21V3C37.5,1.6193 36.3807,0.5 35,0.5H3Z" - android:fillColor="#ffffff" - android:strokeColor="#ffffff"/> - <path - android:pathData="M22.4548,8.4904L23.5308,9.1103C24.389,9.6042 24.6835,10.7019 24.1873,11.559L21.3938,16.3841L22.5591,17.0556C23.4185,17.5506 24.5162,17.2561 25.0135,16.3978L27.7234,11.7171C28.632,10.1473 28.0958,8.1421 26.5271,7.2311C25.1372,6.4394 23.3669,6.916 22.566,8.2991L22.4548,8.4904Z" + android:pathData="M18.8265,7.1284L19.7068,7.6356C20.409,8.0397 20.6499,8.9378 20.244,9.6391L17.9584,13.5869L18.9118,14.1363C19.6149,14.5413 20.5131,14.3003 20.9199,13.5981L23.1371,9.7684C23.8806,8.484 23.4418,6.8434 22.1584,6.0981C21.0212,5.4503 19.5728,5.8403 18.9174,6.9719L18.8265,7.1284Z" android:strokeWidth="1.5" android:fillColor="#00000000" android:strokeColor="#EA4335"/> <path - android:pathData="M23.5342,9.1114L22.8524,8.7184C22.6336,8.5924 22.354,8.6668 22.2268,8.8857L18.6896,14.9953C18.1201,15.9796 16.862,16.3165 15.8766,15.7493L14.9439,15.2119C14.1246,16.6499 14.5589,18.4638 15.9179,19.377C17.4876,20.2478 19.4734,19.7047 20.3751,18.1475L24.1908,11.5566C24.6846,10.7007 24.3913,9.6053 23.5342,9.1114Z" + android:pathData="M19.7097,7.6364L19.1519,7.3148C18.9728,7.2117 18.7441,7.2726 18.64,7.4517L15.746,12.4504C15.28,13.2558 14.2506,13.5314 13.4444,13.0673L12.6813,12.6276C12.011,13.8042 12.3663,15.2883 13.4781,16.0355C14.7625,16.748 16.3872,16.3036 17.125,15.0295L20.2469,9.637C20.651,8.9367 20.411,8.0404 19.7097,7.6364Z" android:strokeWidth="1.5" android:fillColor="#00000000" android:strokeColor="#FBBC04"/> <path - android:pathData="M15.1674,15.3424L15.8732,15.7492C16.8598,16.3175 18.1202,15.9795 18.6908,14.9941L22.5672,8.299C23.3704,6.9114 25.1487,6.4359 26.5398,7.2368L24.0212,5.7862L22.2383,4.7595C20.2663,3.624 17.7455,4.2978 16.6065,6.264L15.9981,7.3147L17.0878,7.9404C17.9472,8.4342 18.2416,9.5262 17.7455,10.381L15.0723,14.9872C15.0012,15.1121 15.0436,15.2702 15.1674,15.3424Z" + android:pathData="M12.864,12.7346L13.4415,13.0674C14.2487,13.5324 15.28,13.2558 15.7468,12.4496L18.9184,6.9718C19.5756,5.8365 21.0306,5.4474 22.1687,6.1027L20.1081,4.9159L18.6493,4.0759C17.0359,3.1468 14.9734,3.6981 14.0415,5.3068L13.5437,6.1665L14.4353,6.6783C15.1384,7.0824 15.3793,7.9758 14.9734,8.6752L12.7862,12.4439C12.7281,12.5461 12.7628,12.6755 12.864,12.7346Z" android:strokeWidth="1.5" android:fillColor="#00000000" android:strokeColor="#34A853"/> <path - android:pathData="M17.0888,7.9415L15.1615,6.8346C14.3022,6.3407 13.2045,6.6341 12.7083,7.4889L10.396,11.4729C9.2582,13.4346 9.9331,15.9428 11.9051,17.0749L13.3729,17.9182L15.1524,18.9403L15.9247,19.3826C14.5531,18.4671 14.1188,16.6337 14.9564,15.19L15.5546,14.1587L17.7465,10.3809C18.2415,9.5273 17.9482,8.4342 17.0888,7.9415Z" + android:pathData="M14.4362,6.6793L12.8594,5.7736C12.1562,5.3696 11.2581,5.6096 10.8522,6.3089L8.9603,9.5686C8.0294,11.1736 8.5816,13.2258 10.195,14.1521L11.3959,14.8421L12.8519,15.6783L13.4837,16.0402C12.3616,15.2911 12.0062,13.7911 12.6916,12.6099L13.1809,11.7661L14.9744,8.6752C15.3794,7.9768 15.1394,7.0824 14.4362,6.6793Z" android:strokeWidth="1.5" android:fillColor="#00000000" android:strokeColor="#4285F4"/>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 5b86f21..610945e 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -1634,6 +1634,7 @@ <translation id="2804043232879091219">Die alternatiewe blaaier kon nie oopgemaak word nie</translation> <translation id="2804667941345577550">Jy sal by hierdie werf afgemeld word, insluitend in oop oortjies</translation> <translation id="2804680522274557040">Kamera is afgeskakel</translation> +<translation id="2805539617243680210">Jy's gereed!</translation> <translation id="2805646850212350655">Microsoft-enkripterende lêerstelsel</translation> <translation id="2805756323405976993">Programme</translation> <translation id="2805760958323556153">Die beleidwaarde vir ExtensionInstallForcelist is ongeldig. Kontak jou administrateur.</translation> @@ -4024,6 +4025,7 @@ <translation id="5582839680698949063">Hoofkieslys</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">Stoor gebruikernaam?</translation> +<translation id="5584091888252706332">Met afskop</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Dit is algemene inligting oor jou toestel en hoe jy dit gebruik (soos batteryvlak, stelsel- en programaktiwiteit, en foute). Die data sal gebruik word om Android te verbeter, en van die saamgestelde inligting sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help om hul programme en produkte beter te maak.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />As hierdie kenmerk afgeskakel word, beïnvloed dit nie jou toestel se vermoë om die inligting te stuur wat vir noodsaaklike dienste soos stelselopdaterings en sekuriteit benodig word nie.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Die eienaar kan hierdie kenmerk beheer in Instellings > Gevorderd > Stuur diagnostiese en gebruiksdata outomaties na Google.<ph name="END_PARAGRAPH3" />
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 20f3ca6..e020c825 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">ተለዋጩ አሳሽ ሊከፈት አይችልም</translation> <translation id="2804667941345577550">ክፍት ትሮችን ጨምሮ፣ ከዚህ ጣቢያ ዘግተው እንዲወጡ ይደረጋሉ</translation> <translation id="2804680522274557040">ካሜራ ጠፍቷል</translation> +<translation id="2805539617243680210">በሙሉ ተዘጋጅተዋል!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">መተግበሪያዎች</translation> <translation id="2805760958323556153">የExtensionInstallForcelist የመመሪያ ዋጋ ልክ ያልሆነ ነው። እባክዎ አስተዳዳሪዎን ያነጋግሩ።</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index b62cee7..969252e 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1635,6 +1635,7 @@ <translation id="2804043232879091219">تعذَّر فتح المتصفّح البديل</translation> <translation id="2804667941345577550">سيتم تسجيل خروجك من هذا الموقع الإلكتروني، بما في ذلك ضمن علامات التبويب المفتوحة.</translation> <translation id="2804680522274557040">تم إيقاف الكاميرا</translation> +<translation id="2805539617243680210">انتهت عملية الإعداد.</translation> <translation id="2805646850212350655">نظام ترميز الملفات لـ Microsoft</translation> <translation id="2805756323405976993">التطبيقات</translation> <translation id="2805760958323556153">قيمة السياسة ExtensionInstallForcelist غير صالحة. يُرجى التواصل مع المشرف.</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 4e12b5c..2443dff 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -1627,6 +1627,7 @@ <translation id="2804043232879091219">বিকল্প ব্ৰাউজাৰটো খুলিব পৰা নগ'ল</translation> <translation id="2804667941345577550">খোলা থকা টেবসমূহকে ধৰি আপুনি এই ছাইটটোৰ পৰা ছাইন আউট হৈ যাব</translation> <translation id="2804680522274557040">কেমেৰা অফ কৰা আছে</translation> +<translation id="2805539617243680210">আপুনি সম্পূৰ্ণ সাজু!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">এপ্</translation> <translation id="2805760958323556153">ExtensionInstallForcelistৰ নীতিৰ মানটো অমান্য। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation> @@ -3123,6 +3124,7 @@ <translation id="4538417792467843292">শব্দ মচক</translation> <translation id="4538684596480161368"><ph name="HOST" />ত সদায় আনছেণ্ডবক্স কৰা প্লাগইন অৱৰোধ কৰক</translation> <translation id="4538792345715658285">এণ্টাৰপ্ৰাইজৰ নীতিয়ে ইনষ্টল কৰিছে।</translation> +<translation id="4541123282641193691">আপোনাৰ একাউণ্টটো সত্যাপন কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক অথবা আপোনাৰ Chromebook ৰিষ্টাৰ্ট কৰক।</translation> <translation id="4541662893742891060">এই প্ৰ'ফাইলটোৰ সৈতে সংযোগ কৰিবলৈ সক্ষম নহ'ল। কাৰিকৰী সহায়ৰ বাবে অনুগ্ৰহ কৰি আপোনাৰ বাহকৰ সৈতে যোগাযোগ কৰক।</translation> <translation id="4542520061254486227">আপোনাৰ ডেটা <ph name="WEBSITE_1" /> আৰু <ph name="WEBSITE_2" />ত পঢ়ক</translation> <translation id="4543778593405494224">প্ৰমাণপত্ৰৰ পৰিচালক</translation> @@ -4144,6 +4146,7 @@ <translation id="574209121243317957">পিচ্চ</translation> <translation id="5742505912938664543">আপুনি ইয়াত এটা গৌণ একাউণ্ট যোগ দিলে, সেই একাউণ্টটো ব্যৱহাৰ কৰি আপুনি ৱেব ব্ৰাউজ কৰিব পাৰিব, এপ্ ডাউনল’ড কৰিব পাৰিব, নিজৰ Gmail আৰু অন্য Google সেৱাসমূহ ব্যৱহাৰ কৰিব পাৰিব।</translation> <translation id="5746169159649715125">PDF হিচাপে ছেভ কৰক</translation> +<translation id="5746261205461426123">ছেট আপৰ গাইড খোলক</translation> <translation id="5747552184818312860">এই সময়ত ম্যাদ উকলিব</translation> <translation id="5747785204778348146">বিকাশকৰ্তা - বিকাশ সম্পূৰ্ণ হোৱা নাই</translation> <translation id="5747809636523347288">পে&ষ্ট কৰি <ph name="URL" />লৈ যাওক</translation> @@ -5292,6 +5295,7 @@ <translation id="708278670402572152">স্কেনিং সক্ষম কৰিবলৈ সংযোগ বিচ্ছিন্ন কৰক</translation> <translation id="7084321615353200053">ছাইটসমূহে আপোনাৰ কেমেৰা ব্যৱহাৰ কৰিবলৈ বিচাৰিব পাৰে (চুপাৰিছ কৰা)</translation> <translation id="7085389578340536476">Chromeক অডিঅ’ ৰেকৰ্ড কৰাৰ অনুমতি দিবনে?</translation> +<translation id="7085805695634549980">Googleৰ সেৱাৰ সৈতে সংযোগ কৰিব পৰা নগ’ল। আসোঁৱাহ ক’ড: <ph name="ERROR_CODE" />।</translation> <translation id="7086672505018440886">আৰ্কাইভটোত Chromeৰ লগ ফাইলসমূহ অন্তৰ্ভুক্ত কৰক।</translation> <translation id="7088434364990739311">আপডে‘টৰ পৰীক্ষণ কৰিব পৰা নগ‘ল (আসোঁৱাহ ক‘ড <ph name="ERROR" />)।</translation> <translation id="7088561041432335295">Zip Archiver - Files এপত জিপ ফাইলসমূহ খোলক আৰু পেক কৰক।</translation> @@ -5529,6 +5533,7 @@ <translation id="7374376573160927383">ইউএছবি ডিভাইচসমূহ পৰিচালনা কৰক</translation> <translation id="7375235221357833624">{0,plural, =1{এঘণ্টাৰ ভিতৰত ডিভাইচটো আপডে’ট কৰক}one{# ঘণ্টাৰ ভিতৰত ডিভাইচটো আপডে’ট কৰক}other{# ঘণ্টাৰ ভিতৰত ডিভাইচটো আপডে’ট কৰক}}</translation> <translation id="7376553024552204454">গতি কৰিলে মাউছৰ কাৰ্ছৰ হাইলাইট কৰক</translation> +<translation id="737728204345822099">আপুনি এই ছাইটটোলৈ যোৱাৰ এটা ৰেকৰ্ড আপোনাৰ সুৰক্ষা চাবিত ৰখা হ’ব পাৰে।</translation> <translation id="7377451353532943397">ছেন্সৰৰ এক্সেছ অৱৰোধ কৰাটো অব্যাহত ৰাখক</translation> <translation id="7378611153938412599">দুৰ্বল পাছৱৰ্ডসমূহ অনুমান কৰিবলৈ সহজ। আপুনি শক্তিশালী পাছৱৰ্ড সৃষ্টি কৰি আছে বুলি নিশ্চিত হৈ লওক। <ph name="BEGIN_LINK" />সুৰক্ষা সম্পৰ্কীয় অধিক কিটিপ চাওক।<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome Web Store খোলক</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index e922afa4..e37efe7a 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -1620,6 +1620,7 @@ <translation id="2804043232879091219">Alternativ brauzeri açmaq mümkün olmadı</translation> <translation id="2804667941345577550">Açıq tablar da daxil olmaqla, bu saytdan çıxmış olacaqsınız</translation> <translation id="2804680522274557040">Kamera deaktivdir</translation> +<translation id="2805539617243680210">Hər şey hazırdır!</translation> <translation id="2805646850212350655">Microsoft Şifrələmə Fayl Sistemi</translation> <translation id="2805756323405976993">Tətbiq</translation> <translation id="2805760958323556153">Bu siyasət dəyəri (ExtensionInstallForcelist) yanlışdır. İnzibatçınız ilə əlaqə saxlayın.</translation> @@ -5520,6 +5521,7 @@ <translation id="7374376573160927383">USB cihazlarını idarə edin</translation> <translation id="7375235221357833624">{0,plural, =1{Cihazı 1 saat ərzində güncəlləyin}other{Cihazı # saat ərzində güncəlləyin}}</translation> <translation id="7376553024552204454">Hərəkətdə olarkən maus kursorunu vurğulayın</translation> +<translation id="737728204345822099">Bu sayta girişinizin yazısı təhlükəsizlik açarınızda saxlanıla bilər.</translation> <translation id="7377451353532943397">Sensor girişini blok etməyə davam edin</translation> <translation id="7378611153938412599">Zəif parolları tapmaq asandır. Güclü parol yaratdığınıza əmin olun. <ph name="BEGIN_LINK" />Daha çox təhlükəsizlik məsləhətinə baxın.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome Veb Mağazanı Açın</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 8458e2f..d791411 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1632,6 +1632,7 @@ <translation id="2804043232879091219">Не ўдалося адкрыць альтэрнатыўны браўзер</translation> <translation id="2804667941345577550">Будзе выкананы выхад з гэтага сайта, у тым ліку на адкрытых укладках</translation> <translation id="2804680522274557040">Камера выключана</translation> +<translation id="2805539617243680210">Усё гатова!</translation> <translation id="2805646850212350655">Шыфраваная файлавая сістэма Microsoft</translation> <translation id="2805756323405976993">Праграмы</translation> <translation id="2805760958323556153">Значэнне палітыкі ExtensionInstallForcelist несапраўднае. Звярніцеся да адміністратара.</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index 5eedfbd..510d9c1 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">Алтернативният браузър не можа да се отвори</translation> <translation id="2804667941345577550">Ще излезете от профила си в този сайт, включително в отворените раздели</translation> <translation id="2804680522274557040">Камерата е изключена</translation> +<translation id="2805539617243680210">Всичко е готово!</translation> <translation id="2805646850212350655">Шифроване на файлова система от Microsoft</translation> <translation id="2805756323405976993">Приложения</translation> <translation id="2805760958323556153">Стойността на правилото ExtensionInstallForcelist е невалидна. Моля, обърнете се към администратора си.</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index d4a4236..1857c79 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">অন্য ব্রাউজারটি খোলা যায়নি</translation> <translation id="2804667941345577550">খোলা ট্যাবগুলি ছাড়াও এই সাইট থেকে সাইন-আউট হয়ে যাবেন</translation> <translation id="2804680522274557040">ক্যামেরা বন্ধ করা আছে</translation> +<translation id="2805539617243680210">এবার আপনি লগ-ইন করে ডিভাইসটি ব্যবহার করতে পারবেন!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">অ্যাপ্স</translation> <translation id="2805760958323556153">ExtensionInstallForcelist-এর নীতির মান ভুল। অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation> @@ -3998,7 +3999,7 @@ <translation id="5582839680698949063">প্রধান মেনু</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">ব্যবহারকারীর নাম সেভ করবেন?</translation> -<translation id="5584091888252706332">প্রারম্ভে:</translation> +<translation id="5584091888252706332">স্টার্টআপে</translation> <translation id="5584915726528712820"><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" /> @@ -5529,6 +5530,7 @@ <translation id="7374376573160927383">USB ডিভাইসগুলি ম্যানেজ করুন</translation> <translation id="7375235221357833624">{0,plural, =1{১ ঘণ্টার মধ্যে ডিভাইস আপডেট করুন}one{# ঘণ্টার মধ্যে ডিভাইস আপডেট করুন}other{# ঘণ্টার মধ্যে ডিভাইস আপডেট করুন}}</translation> <translation id="7376553024552204454">মাউস কার্সারটি যখন নড়াচড়া করে তখন একে হাইলাইট করুন</translation> +<translation id="737728204345822099">আপনার এই সাইটে যাওয়ার রেকর্ড নিরাপত্তা কীয়ে সেভ করা থাকবে।</translation> <translation id="7377451353532943397">সেন্সর অ্যাক্সেস ব্লক করা চালিয়ে যান</translation> <translation id="7378611153938412599">দুর্বল পাসওয়ার্ড সহজেই অনুমান করা যায়। আপনি শক্তিশালী পাসওয়ার্ড তৈরি করছেন কিনা তা ভাল করে দেখে নিন। <ph name="BEGIN_LINK" />নিরাপত্তা সংক্রান্ত আরও পরামর্শ দেখুন।<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome ওয়েব স্টোর খুলুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index dddff8d..6dcdd91e 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -1636,6 +1636,7 @@ <translation id="2804043232879091219">Otvaranje alternativnog preglednika nije uspjelo</translation> <translation id="2804667941345577550">Odjavit ćete se s ove web lokacije, uključujući otvorene kartice</translation> <translation id="2804680522274557040">Kamera je isključena</translation> +<translation id="2805539617243680210">Sve je spremno!</translation> <translation id="2805646850212350655">Microsoft sistem za šifriranje fajlova</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805760958323556153">Vrijednost pravila ExtensionInstallForcelist je nevažeća. Kontaktirajte administratora.</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 8254b6e1..45b6a3d0 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">No s'ha pogut obrir el navegador alternatiu</translation> <translation id="2804667941345577550">Se't tancarà la sessió d'aquest lloc web, també de les pestanyes obertes</translation> <translation id="2804680522274557040">La càmera està desactivada</translation> +<translation id="2805539617243680210">Ja està tot a punt</translation> <translation id="2805646850212350655">Sistema de xifratge de fitxers de Microsoft</translation> <translation id="2805756323405976993">Aplicacions</translation> <translation id="2805760958323556153">El valor de la política ExtensionInstallForcelist no és vàlid. Contacta amb l'administrador.</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 47eef67..6d8c026 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -1635,6 +1635,7 @@ <translation id="2804043232879091219">Alternativní prohlížeč se nepodařilo otevřít</translation> <translation id="2804667941345577550">Z tohoto webu budete odhlášení (i na otevřených kartách)</translation> <translation id="2804680522274557040">Kamera je vypnutá</translation> +<translation id="2805539617243680210">Vše je nastaveno.</translation> <translation id="2805646850212350655">Systém souborů Microsoft EFS</translation> <translation id="2805756323405976993">Aplikace</translation> <translation id="2805760958323556153">Hodnota zásady ExtensionInstallForcelist není platná. Obraťte se na administrátora.</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 05063d88..4346af0 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1635,6 +1635,7 @@ <translation id="2804043232879091219">Den alternative browser kunne ikke åbnes</translation> <translation id="2804667941345577550">Du logges ud af dette website, også i åbne faner.</translation> <translation id="2804680522274557040">Kameraet er deaktiveret</translation> +<translation id="2805539617243680210">Nu er du klar.</translation> <translation id="2805646850212350655">Filsystem til Microsoft-kryptering</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805760958323556153">Politikkens værdi for ExtensionInstallForcelist er ugyldig. Kontakt din administrator.</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 9c1d36c..91090841 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1626,6 +1626,7 @@ <translation id="2804043232879091219">Der alternative Browser konnte nicht geöffnet werden</translation> <translation id="2804667941345577550">Sie werden von dieser Website abgemeldet, auch in offenen Tabs</translation> <translation id="2804680522274557040">Kamera ausgeschaltet</translation> +<translation id="2805539617243680210">Fertig!</translation> <translation id="2805646850212350655">Verschlüsselndes Microsoft-Dateisystem</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805760958323556153">Der Wert von „ExtensionInstallForcelist“ ist ungültig. Bitte an den Administrator wenden.</translation> @@ -3126,6 +3127,7 @@ <translation id="4538417792467843292">Wort löschen</translation> <translation id="4538684596480161368">Plug-ins ohne Sandbox auf <ph name="HOST" /> immer blockieren</translation> <translation id="4538792345715658285">Durch Unternehmensrichtlinie installiert</translation> +<translation id="4541123282641193691">Ihr Konto konnte nicht bestätigt werden. Bitte versuchen Sie es noch einmal oder starten Sie Ihr Chromebook neu.</translation> <translation id="4541662893742891060">Es kann keine Verbindung zu diesem Profil hergestellt werden. Wenden Sie sich für technischen Support an Ihren Mobilfunkanbieter.</translation> <translation id="4542520061254486227">Ihre Daten auf <ph name="WEBSITE_1" /> und <ph name="WEBSITE_2" /> lesen</translation> <translation id="4543778593405494224">Zertifikat-Manager</translation> @@ -4148,6 +4150,7 @@ <translation id="574209121243317957">Tonhöhe</translation> <translation id="5742505912938664543">Wenn Sie hier ein sekundäres Konto hinzufügen, können Sie damit im Internet surfen, Apps herunterladen, E-Mails in Gmail lesen und andere Google-Dienste nutzen.</translation> <translation id="5746169159649715125">Als PDF speichern</translation> +<translation id="5746261205461426123">Einrichtungsanleitung öffnen</translation> <translation id="5747552184818312860">Ablaufdatum</translation> <translation id="5747785204778348146">Entwickler – instabil</translation> <translation id="5747809636523347288">Einfügen und <ph name="URL" /> aufrufen</translation> @@ -5300,6 +5303,7 @@ <translation id="708278670402572152">Zum Scannen Verbindung trennen</translation> <translation id="7084321615353200053">Websites dürfen nachfragen, wenn sie meine Kamera verwenden möchten (empfohlen)</translation> <translation id="7085389578340536476">Chrome die Aufzeichnung von Audioinhalten gestatten?</translation> +<translation id="7085805695634549980">Keine Verbindung mit Google-Diensten möglich. Fehlercode: <ph name="ERROR_CODE" />.</translation> <translation id="7086672505018440886">Chrome-Protokolldateien im Archiv einbeziehen.</translation> <translation id="7088434364990739311">Update-Prüfung konnte nicht gestartet werden. Fehlercode: <ph name="ERROR" /></translation> <translation id="7088561041432335295">Zip Archiver: Öffnen und packen Sie ZIP-Dateien in der App "Dateien".</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index d328d28ca..6589a81 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1634,6 +1634,7 @@ <translation id="2804043232879091219">Δεν ήταν δυνατό το άνοιγμα του εναλλακτικού προγράμματος περιήγησης</translation> <translation id="2804667941345577550">Θα αποσυνδεθείτε από αυτόν τον ιστότοπο, συμπεριλαμβανομένων όσων εμφανίζονται σε ανοικτές καρτέλες</translation> <translation id="2804680522274557040">Απενεργοποιημένη κάμερα</translation> +<translation id="2805539617243680210">Είστε έτοιμοι!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Εφαρμογές </translation> <translation id="2805760958323556153">Η τιμή πολιτικής ExtensionInstallForcelist δεν είναι έγκυρη. Επικοινωνήστε με τον διαχειριστή.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 74408e6..c5f6128 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">The alternative browser could not be opened</translation> <translation id="2804667941345577550">You’ll be signed out of this site, including in open tabs</translation> <translation id="2804680522274557040">Camera turned off</translation> +<translation id="2805539617243680210">You're ready!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805760958323556153">The policy value of ExtensionInstallForcelist is invalid. Please contact your administrator.</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index 3cbeed1..cb9d63a 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -1627,6 +1627,7 @@ <translation id="2804043232879091219">No se pudo abrir el otro navegador</translation> <translation id="2804667941345577550">Saldrás de este sitio y de las pestañas abiertas</translation> <translation id="2804680522274557040">Se desactivó la cámara</translation> +<translation id="2805539617243680210">¡Todo listo!</translation> <translation id="2805646850212350655">Sistema de encriptación de archivos de Microsoft</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2805760958323556153">El valor de la política ExtensionInstallForcelist no es válido. Comunícate con tu administrador.</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 1837e14c..8ae9f7112 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">No se ha podido abrir el navegador alternativo</translation> <translation id="2804667941345577550">Se cerrará tu sesión en este sitio web (también en las pestañas abiertas)</translation> <translation id="2804680522274557040">Cámara desactivada</translation> +<translation id="2805539617243680210">¡Todo listo!</translation> <translation id="2805646850212350655">Sistema de archivos de cifrado de Microsoft</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2805760958323556153">El valor de la política ExtensionInstallForcelist no es válido. Ponte en contacto con tu administrador.</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 4d67d71..fbf2421 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">Alternatiivset brauserit ei õnnestunud avada</translation> <translation id="2804667941345577550">Teid logitakse sellelt saidilt (sh avatud vahelehtedel) välja</translation> <translation id="2804680522274557040">Kaamera on välja lülitatud</translation> +<translation id="2805539617243680210">Kõik on valmis!</translation> <translation id="2805646850212350655">Microsofti failisüsteemi krüptimine</translation> <translation id="2805756323405976993">Rakendused</translation> <translation id="2805760958323556153">Atribuudi ExtensionInstallForcelist reegli väärtus on sobimatu. Võtke ühendust administraatoriga.</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index d443dc85..90c7c26a 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1634,6 +1634,7 @@ <translation id="2804043232879091219">Ezin izan da ireki beste arakatzaile bat</translation> <translation id="2804667941345577550">Webguneko saioa amaituko da, baita irekita dauden fitxetakoa ere</translation> <translation id="2804680522274557040">Kamera erabiltzeko baimena desaktibatuta dago</translation> +<translation id="2805539617243680210">Dena prest!</translation> <translation id="2805646850212350655">Fitxategiak enkriptatzeko Microsoft sistema (EFS)</translation> <translation id="2805756323405976993">Aplikazioak</translation> <translation id="2805760958323556153">Ez du balio ExtensionInstallForcelist gidalerro-balioak. Jarri administratzailearekin harremanetan.</translation> @@ -4024,6 +4025,7 @@ <translation id="5582839680698949063">Menu nagusia</translation> <translation id="5583640892426849032">Atzera tekla</translation> <translation id="5584088138253955452">Erabiltzaile-izena gorde nahi duzu?</translation> +<translation id="5584091888252706332">Abioan</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Gailuari eta hura erabiltzeko moduari buruzko informazio orokorra da hori (adibidez, bateria-maila, sistemako eta aplikazioetako jarduerak, eta erroreak). Android hobetzeko erabiliko dira datuok. Gainera, multzokatutako datu batzuk oso baliagarriak dira Google-ren aplikazioak hobetzeko eta bazkideei (adibidez, Android garatzaileei) euren aplikazio eta produktuak hobetzen laguntzeko.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Eginbidea desaktibatuta ere, gailuak beharrezko informazioa bidaltzen jarraitu ahal izango du funtsezko zerbitzuak jasotzeko, hala nola sistemaren eguneratzeak eta segurtasun-neurriak.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Jabeak kontrolatu nahi badu, atal honetara joan beharko du: Ezarpenak > Aurreratuak > Bidali Google-ri diagnostikoak eta erabilera-datuak automatikoki.<ph name="END_PARAGRAPH3" />
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 0f9c9f7..28ad115 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1627,6 +1627,7 @@ <translation id="2804043232879091219">مرورگر جایگزین باز نشد</translation> <translation id="2804667941345577550">از سیستم این سایت (ازجمله در برگههای باز) خارج خواهید شد</translation> <translation id="2804680522274557040">دوربین خاموش است</translation> +<translation id="2805539617243680210">همه چیز آماده است!</translation> <translation id="2805646850212350655">سیستم فایل رمزگذاری Microsoft</translation> <translation id="2805756323405976993">برنامهها</translation> <translation id="2805760958323556153">مقدار خطمشی ExtensionInstallForcelist نامعتبر است. لطفاً با سرپرست تماس بگیرید.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 97a8df0..dbc7907 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">Toisen selaimen avaaminen epäonnistui</translation> <translation id="2804667941345577550">Sinut kirjataan ulos tältä sivustolta, myös avoimilta välilehdiltä.</translation> <translation id="2804680522274557040">Kamera poistettiin käytöstä</translation> +<translation id="2805539617243680210">Kaikki on valmista.</translation> <translation id="2805646850212350655">Microsoftin tietojärjestelmän salaus</translation> <translation id="2805756323405976993">Sovellukset</translation> <translation id="2805760958323556153">ExtensionInstallForcelist-käytännön arvo on virheellinen. Ota yhteyttä järjestelmänvalvojaasi.</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 3e24585..b207453a 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">Hindi mabuksan ang alternatibong browser</translation> <translation id="2804667941345577550">Masa-sign out ka sa site na ito, pati na rin sa mga nakabukas na tab</translation> <translation id="2804680522274557040">Naka-off ang camera</translation> +<translation id="2805539617243680210">Handa ka na!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Mga App</translation> <translation id="2805760958323556153">Invalid ang value ng patakaran ng ExtensionInstallForcelist. Makipag-ugnayan sa iyong administrator.</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index cd78d30..c8837c9 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -1632,6 +1632,7 @@ <translation id="2804043232879091219">Impossible d'ouvrir le navigateur secondaire</translation> <translation id="2804667941345577550">Vous serez déconnecté de ce site, y compris dans les onglets ouverts</translation> <translation id="2804680522274557040">Appareil photo désactivé</translation> +<translation id="2805539617243680210">Tout est en ordre!</translation> <translation id="2805646850212350655">Système de fichiers de chiffrement Microsoft</translation> <translation id="2805756323405976993">Applications</translation> <translation id="2805760958323556153">La valeur définie pour la politique ExtensionInstallForcelist est incorrecte. Veuillez communiquer avec votre administrateur.</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 8403763..3f25400 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">Impossible d'ouvrir le navigateur secondaire</translation> <translation id="2804667941345577550">Vous allez être déconnecté de ce site, y compris dans les onglets ouverts</translation> <translation id="2804680522274557040">Caméra désactivée</translation> +<translation id="2805539617243680210">Tout est prêt !</translation> <translation id="2805646850212350655">Système de fichiers de chiffrement Microsoft </translation> <translation id="2805756323405976993">Applications</translation> <translation id="2805760958323556153">La valeur de la règle "ExtensionInstallForcelist" n'est pas valide. Veuillez contacter votre administrateur.</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index dee72a5..93bf544 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">Non se puido abrir o navegador alternativo</translation> <translation id="2804667941345577550">Pecharase sesión neste sitio, aínda que o teñas aberto en pestanas</translation> <translation id="2804680522274557040">Desactivouse a cámara</translation> +<translation id="2805539617243680210">Todo listo</translation> <translation id="2805646850212350655">Sistema de ficheiros de cifrado de Microsoft</translation> <translation id="2805756323405976993">Aplicacións</translation> <translation id="2805760958323556153">O valor da política ExtensionInstallForcelist non é válido. Ponte en contacto co teu administrador.</translation> @@ -4023,6 +4024,7 @@ <translation id="5582839680698949063">Menú principal</translation> <translation id="5583640892426849032">Retroceso</translation> <translation id="5584088138253955452">Queres gardar o nome de usuario?</translation> +<translation id="5584091888252706332">No inicio</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Trátase de información xeral acerca do teu dispositivo e do seu uso, como o nivel de batería, a actividade da aplicación e do sistema, e os erros. Os datos utilizaranse coa finalidade de mellorar Android e algunha información adicional tamén axudará ás aplicacións de Google e aos socios, como os programadores de Android, a mellorar as súas aplicacións e os produtos.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />A desactivación desta función non afecta á capacidade do teu dispositivo de enviar a información necesaria para os servizos esenciais, como a seguranza e as actualizacións do sistema.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />O propietario pode controlar esta función desde Configuración > Avanzada > Enviar de forma automática datos de uso e diagnóstico a Google.<ph name="END_PARAGRAPH3" />
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 3f6855d..d3c48970 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -1622,6 +1622,7 @@ <translation id="2804043232879091219">વૈકલ્પિક બ્રાઉઝર ખોલી શકાયું નથી</translation> <translation id="2804667941345577550">ખુલ્લા ટૅબ સહિત, આ સાઇટમાંથી તમને સાઇન આઉટ કરવામાં આવશે</translation> <translation id="2804680522274557040">કૅમેરા બંધ કર્યો</translation> +<translation id="2805539617243680210">આગળ વધવા માટે તમે સંપૂર્ણ રીતે સજ્જ છો!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">એપ્સ</translation> <translation id="2805760958323556153">ExtensionInstallForcelistનું નીતિ મૂલ્ય અમાન્ય છે. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation> @@ -3995,7 +3996,7 @@ <translation id="5582839680698949063">મુખ્ય મેનૂ</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">વપરાશકર્તા નામ સાચવવું છે?</translation> -<translation id="5584091888252706332">સ્ટાર્ટઅપ પર</translation> +<translation id="5584091888252706332">સ્ટાર્ટઅપ થવા પર</translation> <translation id="5584915726528712820"><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" /> @@ -5525,6 +5526,7 @@ <translation id="7374376573160927383">USB ડિવાઇસને મેનેજ કરો</translation> <translation id="7375235221357833624">{0,plural, =1{એક કલાકની અંદર ડિવાઇસ અપડેટ કરો}one{# કલાકની અંદર ડિવાઇસ અપડેટ કરો}other{# કલાકની અંદર ડિવાઇસ અપડેટ કરો}}</translation> <translation id="7376553024552204454">માઉસ કર્સર જ્યારે ગતિમાન હોય ત્યારે તેને હાઇલાઇટ કરો</translation> +<translation id="737728204345822099">આ સાઇટની તમારી મુલાકાતનો રેકોર્ડ તમારી સિક્યુરિટી કી પર રાખવામાં આવી શકે છે.</translation> <translation id="7377451353532943397">સેન્સર ઍક્સેસ બ્લૉક કરવાનું ચાલુ રાખો</translation> <translation id="7378611153938412599">નબળા પાસવર્ડનું અનુમાન કરવું સરળ હોય છે. તમે સશક્ત પાસવર્ડ બનાવવાની ખાતરી કરો. <ph name="BEGIN_LINK" />સુરક્ષા સંબંધિત વધુ ટિપ જુઓ.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome વેબ દુકાન ખોલો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index d655b83..5e7a349 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">वैकल्पिक ब्राउज़र नहीं खोला जा सका</translation> <translation id="2804667941345577550">आपको इस साइट और खुले हुए टैब से साइन आउट कर दिया जाएगा</translation> <translation id="2804680522274557040">कैमरा बंद किया गया</translation> +<translation id="2805539617243680210">अब आप बिल्कुल तैयार हैं!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ऐप्स</translation> <translation id="2805760958323556153">नीति का ExtensionInstallForcelist मान अमान्य है. कृपया अपने एडमिन से संपर्क करें.</translation> @@ -3130,6 +3131,7 @@ <translation id="4538417792467843292">शब्द मिटाएं</translation> <translation id="4538684596480161368">सैंडबॉक्स नहीं किए गए प्लग इन को <ph name="HOST" /> पर हमेशा ब्लॉक करें</translation> <translation id="4538792345715658285">एंटरप्राइज़ नीति द्वारा इंस्टॉल किया गया.</translation> +<translation id="4541123282641193691">आपके खाते की पुष्टि नहीं हो सकी. कृपया फिर से कोशिश करें या अपना Chromebook रीस्टार्ट करें.</translation> <translation id="4541662893742891060">इस प्रोफ़ाइल से कनेक्ट नहीं किया जा सकता. तकनीकी सहायता के लिए, कृपया मोबाइल और इंटरनेट सेवा देने वाली अपनी कंपनी से संपर्क करें.</translation> <translation id="4542520061254486227"><ph name="WEBSITE_1" /> और <ph name="WEBSITE_2" /> पर अपना डेटा पढ़ें</translation> <translation id="4543778593405494224">प्रमाणपत्र मैनेजर</translation> @@ -4152,6 +4154,7 @@ <translation id="574209121243317957">पिच</translation> <translation id="5742505912938664543">जब आप दूसरा खाता जोड़ते हैं, तब आप उस खाते से वेब को ब्राउज़ कर सकते हैं, ऐप्लिकेशन डाउनलोड कर सकते हैं, और Gmail और अन्य Google सेवाओं का इस्तेमाल कर सकते हैं.</translation> <translation id="5746169159649715125">PDF के रूप में सेव करें</translation> +<translation id="5746261205461426123">सेट अप गाइड खाेलें</translation> <translation id="5747552184818312860">समय सीमा समाप्ति तारीख</translation> <translation id="5747785204778348146">डेवलपर - अस्थिर</translation> <translation id="5747809636523347288"><ph name="URL" /> चिपकाएं और इस पर जाएं</translation> @@ -5304,6 +5307,7 @@ <translation id="708278670402572152">स्कैन करना चालू करने के लिए डिसकनेक्ट करें</translation> <translation id="7084321615353200053">साइटें आपके कैमरे का इस्तेमाल करने के लिए पूछ सकती हैं (हम इस सेटिंग को चालू रखने का सुझाव देते हैं)</translation> <translation id="7085389578340536476">Chrome को ऑडियो रिकॉर्ड करने दें?</translation> +<translation id="7085805695634549980">Google की सेवाओं से कनेक्ट नहीं किया जा सका. गड़बड़ी कोड: <ph name="ERROR_CODE" />.</translation> <translation id="7086672505018440886">संग्रह में Chrome लॉग फ़ाइलों को शामिल करें.</translation> <translation id="7088434364990739311">अपडेट की जाँच शुरू नहीं की जा सकी (गड़बड़ी कोड <ph name="ERROR" />).</translation> <translation id="7088561041432335295">Zip Archiver - Files ऐप्लिकेशन में ZIP फ़ाइलें खोलें और पैक करें.</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index 108d950..2049897 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -568,6 +568,7 @@ <translation id="1618268899808219593">Centar za pomoć</translation> <translation id="1620307519959413822">Zaporka je pogrešna. Pokušajte ponovo ili kliknite "Zaboravili ste zaporku?" da biste je poništili.</translation> <translation id="1620510694547887537">Fotoaparat</translation> +<translation id="1621485112342885423">Vaše košarice</translation> <translation id="1621729191093924223">Značajke kojima je potreban mikrofon neće raditi</translation> <translation id="1621831347985899379">Izbrisat će se podaci uređaja <ph name="DEVICE_TYPE" /></translation> <translation id="1622054403950683339">Zaboravljanje Wi-Fi mreže</translation> @@ -1634,6 +1635,7 @@ <translation id="2804043232879091219">Nije bilo moguće otvoriti zamjenski preglednik</translation> <translation id="2804667941345577550">Odjavit ćete se s ove stranice, uključujući i prijave na otvorenim karticama</translation> <translation id="2804680522274557040">Kamera je isključena</translation> +<translation id="2805539617243680210">Spremni ste!</translation> <translation id="2805646850212350655">Microsoftov sustav šifriranja datoteke</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805760958323556153">Vrijednost pravila ExtensionInstallForcelist nije valjana. Obratite se administratoru.</translation> @@ -5671,6 +5673,7 @@ <translation id="7494694779888133066"><ph name="WIDTH" /> x <ph name="HEIGHT" /></translation> <translation id="7495778526395737099">Jeste li zaboravili staru zaporku?</translation> <translation id="7497981768003291373">Nemate nedavno snimljenih WebRTC tekstnih zapisnika.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> traži vaše dopuštenje za snimanje sadržaja ove kartice.</translation> <translation id="7503191893372251637">Vrsta Netscape certifikata</translation> <translation id="7503985202154027481">Na sigurnosnom ključu zadržat će se evidencija vašeg posjeta toj web-lokaciji.</translation> <translation id="750509436279396091">Otvori mapu preuzimanja</translation> @@ -6620,6 +6623,7 @@ <translation id="8584280235376696778">&Otvori video na novoj kartici</translation> <translation id="8584427708066927472">Zaporka je izbrisana s ovog uređaja</translation> <translation id="8585480574870650651">Uklanjanje Crostinija</translation> +<translation id="8585841788766257444">Web-lokacije navedene u nastavku imaju prilagođenu postavku umjesto zadane</translation> <translation id="8588866096426746242">Prikaži statističke podatke o profilu</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> – VR se prikazuje u masci</translation> <translation id="8590375307970699841">Postavi automatsko ažuriranje</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index ba6b2ce..135fe13 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -1634,6 +1634,7 @@ <translation id="2804043232879091219">Nem sikerült megnyitni a másik böngészőt</translation> <translation id="2804667941345577550">A rendszer kijelentkezteti erről a webhelyről (a megnyitott lapok esetében is)</translation> <translation id="2804680522274557040">Kamera kikapcsolva</translation> +<translation id="2805539617243680210">Készen is van!</translation> <translation id="2805646850212350655">Microsoft - fájlrendszer titkosítása</translation> <translation id="2805756323405976993">Alkalmazások</translation> <translation id="2805760958323556153">Az ExtensionInstallForcelist házirend értéke érvénytelen. Forduljon a rendszergazdához.</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 77b83f3..3cbb6a4 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -1636,6 +1636,7 @@ <translation id="2804043232879091219">Չհաջողվեց բացել այլընտրանքային դիտարկիչը</translation> <translation id="2804667941345577550">Դուք դուրս կգրվեք հաշվից այս կայքում և բաց ներդիրներում</translation> <translation id="2804680522274557040">Տեսախցիկն անջատած է</translation> +<translation id="2805539617243680210">Պատրաստ է</translation> <translation id="2805646850212350655">Microsoft-ի գաղտնագրված ֆայլային համակարգ</translation> <translation id="2805756323405976993">Հավելվածներ</translation> <translation id="2805760958323556153">ExtensionInstallForcelist կանոնի արժեքն անվավեր է։ Դիմեք ձեր ադմինիստրատորին։</translation> @@ -4029,6 +4030,7 @@ <translation id="5582839680698949063">Հիմնական ընտրացանկ</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">Պահե՞լ օգտանունը</translation> +<translation id="5584091888252706332">Մեկնարկի ժամանակ</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Սրանք ընդհանուր տեղեկություններ են ձեր սարքի և դրա օգտագործման (օրինակ՝ մարտկոցի լիցքի, համակարգի ու հավելվածների օգտագործման և սխալների) մասին: Տեղեկություններն օգտագործվելու են Android-ի ծառայությունների աշխատանքը բարելավելու համար: Տվյալների մի մասը օգտակար կլինի մեր գործընկերների, օրինակ, Android ծրագրավորողների համար և կօգնի բարելավել նաև նրանց հավելվածներն ու արտադրանքները:<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Այս գործառույթն անջատելու դեպքում ձեր սարքը նախկինի պես կուղարկի տվյալներ, որոնք անհրաժեշտ են հիմնական ծառայություններին (օրինակ՝ համակարգային թարմացումներին ու անվտանգությանը):<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Սարքի օգտատերը կարող է կառավարել այս գործառույթը՝ անցնելով Կարգավորումներ > Լրացուցիչ > Ավտոմատ ուղարկել ախտորոշման և օգտագործման տվյալները Google-ին:<ph name="END_PARAGRAPH3" />
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 36fb408..eadd0c9a 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">Browser alternatif tidak dapat dibuka</translation> <translation id="2804667941345577550">Anda akan logout dari situs ini, termasuk di tab yang terbuka</translation> <translation id="2804680522274557040">Kamera dinonaktifkan</translation> +<translation id="2805539617243680210">Anda sudah siap.</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2805760958323556153">Nilai kebijakan ExtensionInstallForcelist tidak valid. Harap hubungi administrator Anda.</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 18402ec..3ca2f7f 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -1635,6 +1635,7 @@ <translation id="2804043232879091219">Ekki var hægt að opna hinn vafrann</translation> <translation id="2804667941345577550">Þú verður skráð(ur) út af þessu vefsvæði, þar á meðal opnum flipum</translation> <translation id="2804680522274557040">Slökkt á myndavél</translation> +<translation id="2805539617243680210">Allt til reiðu!</translation> <translation id="2805646850212350655">Dulkóðunarskráakerfi Microsoft</translation> <translation id="2805756323405976993">Forrit</translation> <translation id="2805760958323556153">Gildi reglu ExtensionInstallForcelist er ógilt. Hafðu samband við kerfisstjórann.</translation> @@ -4025,6 +4026,7 @@ <translation id="5582839680698949063">Aðalvalmynd</translation> <translation id="5583640892426849032">Bakklykill</translation> <translation id="5584088138253955452">Vista notandanafn?</translation> +<translation id="5584091888252706332">Við ræsingu</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Þetta eru almennar upplýsingar um tækið þitt og notkun þína á því (til dæmis stöðu rafhlöðunnar, virkni kerfis og forrita og villur). Gögnin verða notuð til að betrumbæta Android stýrikerfið og sumar uppsafnaðar upplýsingar geta gagnast samstarfsaðilum okkar, svo sem þróunaraðilum fyrir Android, við að bæta forrit og vörur.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Ef slökkt er á þessum eiginleika hefur það ekki áhrif á getu tækisins til að senda þær upplýsingar sem þarf fyrir nauðsynlega þjónustu á borð við uppfærslur á stýrikerfi og öryggisráðstafanir.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Eigandinn getur stjórnað þessum eiginleika með því að fara í Stillingar > Ítarlegt > Senda greiningar- og notkunargögn sjálfkrafa til Google.<ph name="END_PARAGRAPH3" />
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 2471c22..ae8dd88 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">Impossibile aprire il browser alternativo</translation> <translation id="2804667941345577550">Uscirai da questo sito (schede aperte incluse)</translation> <translation id="2804680522274557040">Fotocamera disattivata</translation> +<translation id="2805539617243680210">Ecco fatto.</translation> <translation id="2805646850212350655">Crittografia file system Microsoft</translation> <translation id="2805756323405976993">App</translation> <translation id="2805760958323556153">Il valore del criterio di ExtensionInstallForcelist non è valido. Contatta l'amministratore.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 4eb53fdd..749efcc5 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">לא ניתן לפתוח את הדפדפן החלופי</translation> <translation id="2804667941345577550">המערכת תוציא אותך מהאתר הזה, כולל בכרטיסיות הפתוחות</translation> <translation id="2804680522274557040">המצלמה מושבתת</translation> +<translation id="2805539617243680210">הכול מוכן!</translation> <translation id="2805646850212350655">מערכת קבצים מצפינה של Microsoft</translation> <translation id="2805756323405976993">אפליקציות</translation> <translation id="2805760958323556153">ערך המדיניות של ExtensionInstallForcelist אינו תקין. יש לפנות למנהל המערכת.</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 547db3f..a95ee923 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">代替ブラウザを開けませんでした</translation> <translation id="2804667941345577550">開いているすべてのタブで、このサイトからログアウトします</translation> <translation id="2804680522274557040">カメラがオフになっています</translation> +<translation id="2805539617243680210">これで準備完了です。</translation> <translation id="2805646850212350655">Microsoft 暗号化ファイル システム</translation> <translation id="2805756323405976993">アプリ</translation> <translation id="2805760958323556153">ExtensionInstallForcelist ポリシーの値が無効です。管理者にお問い合わせください。</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index 09178b3..4bf5c3dd 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">ალტერნატიული ბრაუზერის გახსნა ვერ მოხერხდა</translation> <translation id="2804667941345577550">თქვენ გამოხვალთ ამ საიტიდან, მათ შორის, გახსნილ ჩანართებზე</translation> <translation id="2804680522274557040">კამერა გამორთულია</translation> +<translation id="2805539617243680210">ყველაფერი მზადაა!</translation> <translation id="2805646850212350655">Microsoft დაშიფვრის ფაილის სისტემა</translation> <translation id="2805756323405976993">პროგრამები</translation> <translation id="2805760958323556153">ამ წესების მნიშვნელობა „ExtensionInstallForcelist“ არასწორია. მიმართეთ თქვენს ადმინისტრატორს.</translation> @@ -4023,6 +4024,7 @@ <translation id="5582839680698949063">მთავარი მენიუ</translation> <translation id="5583640892426849032">უკუშლა</translation> <translation id="5584088138253955452">გსურთ მომხმარებლის სახელის შენახვა?</translation> +<translation id="5584091888252706332">გაშვებისას</translation> <translation id="5584915726528712820"><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" />
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index c62e35b..6d77c40 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -1622,6 +1622,7 @@ <translation id="2804043232879091219">Балама браузер ашылмады.</translation> <translation id="2804667941345577550">Осы сайттан, оның ішінде ашық қойындылардан шығып кетесіз.</translation> <translation id="2804680522274557040">Камера өшірулі</translation> +<translation id="2805539617243680210">Барлығы дайын!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Қолданбалар</translation> <translation id="2805760958323556153">ExtensionInstallForcelist саясат мәні жарамсыз. Әкімшіге хабарласыңыз.</translation> @@ -5522,6 +5523,7 @@ <translation id="7374376573160927383">USB құрылғыларын басқару</translation> <translation id="7375235221357833624">{0,plural, =1{Құрылғыны 1 сағат ішінде жаңарту керек}other{Құрылғыны # сағат ішінде жаңарту керек}}</translation> <translation id="7376553024552204454">Тінтуір курсорын қозғалыс барысында бөлектеу</translation> +<translation id="737728204345822099">Осы сайтқа кіргеніңіз туралы жазба қауіпсіздік кілтінде сақталуы мүмкін.</translation> <translation id="7377451353532943397">Датчиктерді пайдалануға тыйым салуды тоқтатпау</translation> <translation id="7378611153938412599">Құпия сөзіңіз оңай болса, оны табу да оңай. Күрделі құпия сөз орнатыңыз. <ph name="BEGIN_LINK" />Қауіпсіздікке қатысты басқа кеңестерді де көріңіз.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome Web Store қызметін ашу</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 2e0f00b..b97127c 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">មិនអាចបើកកម្មវិធីរុករកតាមអ៊ីនធឺណិតផ្សេងបានទេ</translation> <translation id="2804667941345577550">អ្នកនឹងត្រូវនាំចេញពីគេហទំព័រនេះ រួមទាំងនៅក្នុងផ្ទាំងបើកផងដែរ</translation> <translation id="2804680522274557040">បានបិទកាមេរ៉ា</translation> +<translation id="2805539617243680210">រួចរាល់អស់ហើយ!</translation> <translation id="2805646850212350655">ប្រព័ន្ធឯកសារអ៊ីនគ្រីប Microsoft</translation> <translation id="2805756323405976993">កម្មវិធី</translation> <translation id="2805760958323556153">តម្លៃគោលការណ៍ ExtensionInstallForcelist គ្មានសុពលភាពទេ។ សូមទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នក។</translation> @@ -4013,6 +4014,7 @@ <translation id="5582839680698949063">ម៉ឺនុយមេ</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">រក្សាទុកឈ្មោះអ្នកប្រើប្រាស់?</translation> +<translation id="5584091888252706332">នៅពេលចាប់ផ្តើម</translation> <translation id="5584915726528712820"><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" />
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index ef13b51..713a279 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -1635,6 +1635,7 @@ <translation id="2804043232879091219">ಪರ್ಯಾಯ ಬ್ರೌಸರ್ ಅನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> <translation id="2804667941345577550">ತೆರೆದ ಟ್ಯಾಬ್ಗಳಲ್ಲೂ ಸೇರಿದಂತೆ, ಈ ಸೈಟ್ನಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ</translation> <translation id="2804680522274557040">ಕ್ಯಾಮರಾವನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ</translation> +<translation id="2805539617243680210">ನೀವು ಸಿದ್ಧರಾಗಿರುವಿರಿ!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ಆಪ್ಸ್</translation> <translation id="2805760958323556153">ExtensionInstallForcelist ನ ಕಾರ್ಯನೈತಿಕ ಮೌಲ್ಯ ಅಮಾನ್ಯವಾಗಿದೆ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation> @@ -3143,6 +3144,7 @@ <translation id="4538417792467843292">ಪದವನ್ನು ಅಳಿಸಿ</translation> <translation id="4538684596480161368"><ph name="HOST" /> ನಲ್ಲಿ ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಲಾಗಿರುವ ಪ್ಲಗ್-ಇನ್ಗಳನ್ನು ಯಾವಾಗಲೂ ನಿರ್ಬಂಧಿಸು</translation> <translation id="4538792345715658285">ಎಂಟರ್ಪ್ರೈಸ್ ನೀತಿಯಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.</translation> +<translation id="4541123282641193691">ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ನಿಮ್ಮ Chromebook ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ.</translation> <translation id="4541662893742891060">ಈ ಪ್ರೊಫೈಲ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ತಾಂತ್ರಿಕ ಬೆಂಬಲಕ್ಕಾಗಿ, ನಿಮ್ಮ ಕ್ಯಾರಿಯರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation> <translation id="4541810033354695636">ಆಗ್ಮೆಂಟೆಡ್ ರಿಯಾಲಿಟಿ</translation> <translation id="4542520061254486227">ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="WEBSITE_1" /> ಮತ್ತು <ph name="WEBSITE_2" /> ನಲ್ಲಿ ಓದಿ</translation> @@ -4026,7 +4028,7 @@ <translation id="5582839680698949063">ಮುಖ್ಯ ಮೆನು</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ಉಳಿಸುವುದೇ?</translation> -<translation id="5584091888252706332">ಸ್ಟಾರ್ಟ್ಅಪ್ ನಲ್ಲಿ</translation> +<translation id="5584091888252706332">ಸ್ಟಾರ್ಟ್ಅಪ್ ಸಮಯದಲ್ಲಿ</translation> <translation id="5584915726528712820"><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" /> @@ -4170,6 +4172,7 @@ <translation id="574209121243317957">ಪಿಚ್</translation> <translation id="5742505912938664543">ನೀವು ಇಲ್ಲಿ ದ್ವಿತೀಯ ಖಾತೆಯನ್ನು ಸೇರಿಸಿದಾಗ, ನೀವು ವೆಬ್ ಬ್ರೌಸ್ ಮಾಡಲು, ಆ್ಯಪ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಮತ್ತು Gmail ಪರಿಶೀಲಿಸಲು ಹಾಗೂ ಇತರ Google ಸೇವೆಗಳನ್ನು ಬಳಸಲು ಆ ಖಾತೆಯನ್ನು ಬಳಸಬಹುದು.</translation> <translation id="5746169159649715125">PDF ನಂತೆ ಉಳಿಸಿ</translation> +<translation id="5746261205461426123">ಸೆಟಪ್ ಗೈಡ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="5747552184818312860">ಅವಧಿ ಮೀರುವುದು</translation> <translation id="5747785204778348146">ಡೆವಲಪರ್ - ಅಸ್ಥಿರ</translation> <translation id="5747809636523347288">ಅಂ&ಟಿಸಿ ಮತ್ತು <ph name="URL" /> ಗೆ ಹೋಗಿ</translation> @@ -5330,6 +5333,7 @@ <translation id="708278670402572152">ಸ್ಕ್ಯಾನಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ</translation> <translation id="7084321615353200053">ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಬಳಸಲು ಸೈಟ್ಗಳು ಕೇಳಬಹುದು (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> <translation id="7085389578340536476">ಆಡಿಯೋ ರೆಕಾರ್ಡ್ ಮಾಡಲು Chrome ಗೆ ಅನುಮತಿಸಬೇಕೆ?</translation> +<translation id="7085805695634549980">Google ಸೇವೆಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದೋಷ ಕೋಡ್: <ph name="ERROR_CODE" />.</translation> <translation id="7086672505018440886">ಆರ್ಕೈವ್ನಲ್ಲಿರುವ Chrome ಲಾಗ್ ಫೈಲ್ಗಳನ್ನು ಸೇರಿಸಿ</translation> <translation id="7088434364990739311">ಅಪ್ಡೇಟ್ ಪರಿಶೀಲನೆಯು ಪ್ರಾರಂಭಿಸಲು ವಿಫಲವಾಗಿದೆ (ದೋಷ ಕೋಡ್ <ph name="ERROR" />).</translation> <translation id="7088561041432335295">Zip ಆರ್ಕೈವರ್ - ಫೈಲ್ಗಳ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ZIP ಫೈಲ್ಗಳನ್ನು ತೆರೆಯಿರಿ ಮತ್ತು ಪ್ಯಾಕ್ ಮಾಡಿ .</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 3e32505..a5addc80 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">대체 브라우저를 열 수 없습니다.</translation> <translation id="2804667941345577550">열려 있는 탭을 포함하여 이 사이트에서 로그아웃됩니다.</translation> <translation id="2804680522274557040">카메라 사용 중지됨</translation> +<translation id="2805539617243680210">설정 완료</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">앱</translation> <translation id="2805760958323556153">ExtensionInstallForcelist 정책 값이 잘못되었습니다. 관리자에게 문의해 주세요.</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index 292a8b32..31c425f 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">Кошумча серепчи ачылган жок</translation> <translation id="2804667941345577550">Сиз бул сайттан, анын ичинде ачылып турган өтмөктөрдөн чыгарыласыз.</translation> <translation id="2804680522274557040">Камера өчүк</translation> +<translation id="2805539617243680210">Баары даяр!</translation> <translation id="2805646850212350655">Microsoft Шифрлөө файл тутуму</translation> <translation id="2805756323405976993">Колдонмолор</translation> <translation id="2805760958323556153">ExtensionInstallForcelist саясат мааниси жараксыз. Администраторуңузга кайрылыңыз.</translation> @@ -5525,6 +5526,7 @@ <translation id="7374376573160927383">USB түзмөктөрдү башкаруу</translation> <translation id="7375235221357833624">{0,plural, =1{Түзмөктү бир сааттын ичинде жаңыртыңыз}other{Түзмөктү # сааттын ичинде жаңыртыңыз}}</translation> <translation id="7376553024552204454">Чычкан курсору жылып жатканда баса белгиленсин</translation> +<translation id="737728204345822099">Бул вебсайтка киргениңиз тууралуу маалымат коопсуздук ачкычыңызга жазылышы мүмкүн.</translation> <translation id="7377451353532943397">Сенсорду колдонуу мүмкүнчүлүгү бөгөттөлө берсин</translation> <translation id="7378611153938412599">Начар сырсөздөрдү билип алуу оңой. Татаал сырсөздөрдү түзүңүз. <ph name="BEGIN_LINK" />Дагы башка коопсуздук кеңештерин алуу.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome Интернет дүкөнүн ачуу</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 9efa55f..206b3b5 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -1628,6 +1628,7 @@ <translation id="2804043232879091219">ບໍ່ສາມາດເປີດໂປຣແກຣມທ່ອງເວັບສຳຮອງໄດ້</translation> <translation id="2804667941345577550">ທ່ານຈະຖືກນຳອອກຈາກລະບົບເວັບໄຊນີ້, ຮວມທັງໃນແຖບທີ່ເປີດຢູ່</translation> <translation id="2804680522274557040">ປິດກ້ອງຖ່າຍຮູບແລ້ວ</translation> +<translation id="2805539617243680210">ທ່ານພ້ອມໝົດແລ້ວ!</translation> <translation id="2805646850212350655">ລະບົບໄຟລ໌ການໃສ່ລະຫັດ Microsoft</translation> <translation id="2805756323405976993">ແອັບ</translation> <translation id="2805760958323556153">ຄ່ານະໂຍບາຍ ExtensionInstallForcelist ບໍ່ຖືກຕ້ອງ. ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ.</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index cd6ec85..26ca214 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1637,6 +1637,7 @@ <translation id="2804043232879091219">Nepavyko atidaryti alternatyvios naršyklės</translation> <translation id="2804667941345577550">Būsite atjungti nuo šios svetainės, įskaitant atidarytus skirtukus</translation> <translation id="2804680522274557040">Fotoaparatas išjungtas</translation> +<translation id="2805539617243680210">Viskas nustatyta!</translation> <translation id="2805646850212350655">„Microsoft“ koduojamųjų failų sistema</translation> <translation id="2805756323405976993">Taikomosios programos</translation> <translation id="2805760958323556153">„ExtensionInstallForcelist“ politikos vertė netinkama. Susisiekite su administratoriumi.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index e2ade2cc..16271cac 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1627,6 +1627,7 @@ <translation id="2804043232879091219">Nevarēja atvērt citu pārlūkprogrammu</translation> <translation id="2804667941345577550">Jūs tiksiet izrakstīts no šīs vietnes, tostarp atvērtajās cilnēs</translation> <translation id="2804680522274557040">Kamera ir izslēgta</translation> +<translation id="2805539617243680210">Viss ir iestatīts!</translation> <translation id="2805646850212350655">Microsoft šīfrēšanas failu sistēma</translation> <translation id="2805756323405976993">Lietotnes</translation> <translation id="2805760958323556153">Politikas ExtensionInstallForcelist vērtība ir nederīga. Lūdzu, sazinieties ar administratoru.</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index eabf71b..d3aa37c 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -1635,6 +1635,7 @@ <translation id="2804043232879091219">Алтернативниот прелистувач не може да се отвори</translation> <translation id="2804667941345577550">Ќе ве одјавиме од сајтов, вклучително и од отворените картички</translation> <translation id="2804680522274557040">Камерата е исклучена</translation> +<translation id="2805539617243680210">Подготвени сте!</translation> <translation id="2805646850212350655">Систем за шифрирање датотеки на Microsoft</translation> <translation id="2805756323405976993">Апликации</translation> <translation id="2805760958323556153">Вредноста на правилото ExtensionInstallForcelist е неважечка. Контактирајте со администраторот.</translation> @@ -4025,6 +4026,7 @@ <translation id="5582839680698949063">Главно мени</translation> <translation id="5583640892426849032">Backspace-копче</translation> <translation id="5584088138253955452">Да се зачува корисничкото име?</translation> +<translation id="5584091888252706332">При стартување</translation> <translation id="5584915726528712820"><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" />
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 111ae65..6bb969a 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1622,6 +1622,7 @@ <translation id="2804043232879091219">ഇതര ബ്രൗസർ തുറക്കാനായില്ല</translation> <translation id="2804667941345577550">തുറന്നിരിക്കുന്ന ടാബുകളിൽ നിന്ന് ഉൾപ്പെടെ ഈ സൈറ്റിൽ നിന്ന് നിങ്ങൾ സൈൻ ഔട്ട് ചെയ്യപ്പെടും.</translation> <translation id="2804680522274557040">ക്യാമറ ഓഫാക്കി</translation> +<translation id="2805539617243680210">നിങ്ങൾ തയ്യാറായിക്കഴിഞ്ഞു!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ആപ്സ്</translation> <translation id="2805760958323556153">ExtensionInstallForcelist എന്നതിന്റെ നയ മൂല്യം അസാധുവാണ്. നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക.</translation> @@ -5527,6 +5528,7 @@ <translation id="7374376573160927383">USB ഉപകരണങ്ങൾ മാനേജ് ചെയ്യുക</translation> <translation id="7375235221357833624">{0,plural, =1{ഒരു മണിക്കൂറിനുള്ളിൽ ഉപകരണം അപ്ഡേറ്റ് ചെയ്യുക}other{# മണിക്കൂറിനുള്ളിൽ ഉപകരണം അപ്ഡേറ്റ് ചെയ്യുക}}</translation> <translation id="7376553024552204454">മൗസ് കഴ്സർ നീക്കുമ്പോൾ അത് ഹൈലൈറ്റ് ചെയ്യുക</translation> +<translation id="737728204345822099">നിങ്ങൾ ഈ സൈറ്റ് സന്ദർശിച്ചതിൻ്റെ റെക്കോർഡ് നിങ്ങളുടെ സുരക്ഷാ കീയിൽ സൂക്ഷിച്ചേക്കാം.</translation> <translation id="7377451353532943397">സെൻസർ ആക്സസ് ബ്ലോക്ക് ചെയ്യുന്നത് തുടരുക</translation> <translation id="7378611153938412599">ദുർബലമായ പാസ്വേഡുകൾ ഊഹിക്കാൻ എളുപ്പമാണ്. നിങ്ങൾ സൃഷ്ടിക്കുന്നത് ശക്തമായ പാസ്വേഡുകളാണെന്ന് ഉറപ്പാക്കുക. <ph name="BEGIN_LINK" />കൂടുതൽ സുരക്ഷാ നുറുങ്ങുകൾ കാണുക.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome വെബ് സ്റ്റോർ തുറക്കുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 9f397708..c158fd3 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -1620,6 +1620,7 @@ <translation id="2804043232879091219">Өөр хөтчийг нээж чадсангүй</translation> <translation id="2804667941345577550">Та энэ сайтаас гарах бөгөөд үүнд нээлттэй табын сайт мөн багтана</translation> <translation id="2804680522274557040">Камерыг унтраасан</translation> +<translation id="2805539617243680210">Тохируулж дууслаа!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Програм</translation> <translation id="2805760958323556153">ExtensionInstallForcelist бодлогын утга буруу байна. Администратортайгаа холбогдоно уу.</translation> @@ -3992,6 +3993,7 @@ <translation id="5582839680698949063">Үндсэн цэс</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">Хэрэглэгчийн нэрийг хадгалах уу?</translation> +<translation id="5584091888252706332">Эхлүүлэх</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Энэ нь таны төхөөрөмж болон үүнийг хэрхэн ашигладаг (батарейны түвшин, систем болон аппын үйл ажиллагаа, алдаа гэх мэт) талаарх ерөнхий мэдээлэл юм. Өгөгдлийг Android-г сайжруулах зорилгоор ашиглах бөгөөд зарим хуримтлуулсан мэдээллийг Android хөгжүүлэгч зэрэг Google аппууд болон түншүүдийн апп, бүтээгдэхүүнийг сайжруулахад мөн адил ашиглана.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Энэ онцлогийг унтрааснаар таны төхөөрөмжийн системийн шинэчлэлт болон аюулгүй байдал зэрэг зайлшгүй шаардлагатай үйлчилгээнд мэдээлэл илгээх чадамжид нөлөөлөхгүй.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Эзэмшигч нь энэ онцлогийг Тохиргоо > Дэвшилтэт > Оношилгоо болон ашиглалтын өгөгдлийг Google-д автоматаар илгээх хэсэгт хянаж болно.<ph name="END_PARAGRAPH3" />
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index ad4499d..167f410 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1622,6 +1622,7 @@ <translation id="2804043232879091219">पर्यायी ब्राउझर उघडता आला नाही</translation> <translation id="2804667941345577550">उघड्या असलेल्या टॅबच्या समावेशासह तुम्हाला या साइटमधून साइन आउट केले जाईल.</translation> <translation id="2804680522274557040">कॅमेरा बंद केला आहे</translation> +<translation id="2805539617243680210">तुम्ही पूर्णपणे तयार आहात!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ॲप्लिकेशन</translation> <translation id="2805760958323556153">ExtensionInstallForcelist चे धोरण मूल्य चुकीचे आहे. कृपया तुमच्या अॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation> @@ -3114,6 +3115,7 @@ <translation id="4538417792467843292">शब्द हटवा </translation> <translation id="4538684596480161368">नेहमी सॅन्डबॉक्स नसलेल्या प्लगिन <ph name="HOST" /> वर अवरोधित करा</translation> <translation id="4538792345715658285">एंटरप्राइज धोरणाद्वारे इंस्टॉल केले.</translation> +<translation id="4541123282641193691">तुमच्या खात्याची पडताळणी करता आली नाही. कृपया पुन्हा प्रयत्न करा किंवा तुमचे Chromebook रीस्टार्ट करा.</translation> <translation id="4541662893742891060">या प्रोफाइलशी कनेक्ट करता आले नाही. तांत्रिक सपोर्टसाठी, कृपया तुमच्या वाहकाशी संपर्क साधा.</translation> <translation id="4542520061254486227"><ph name="WEBSITE_1" /> आणि <ph name="WEBSITE_2" /> वर तुमचा डेटा वाचा</translation> <translation id="4543778593405494224">सर्टिफिकेट व्यवस्थापक</translation> @@ -3992,7 +3994,7 @@ <translation id="5582839680698949063">मुख्य मेनू</translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584088138253955452">वापरकर्ता नाव सेव्ह करायचे?</translation> -<translation id="5584091888252706332">स्टार्टअप वर</translation> +<translation id="5584091888252706332">सुरू केल्यावर</translation> <translation id="5584915726528712820"><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" /> @@ -4131,6 +4133,7 @@ <translation id="574209121243317957">पिच</translation> <translation id="5742505912938664543">तुम्ही येथे दुय्यम खाते जोडल्यावर, ते खाते वापरून तुम्ही वेब ब्राउझ करू शकता, अॅप्स डाउनलोड करू शकता, तुमचे Gmail आणि इतर Google सेवा तपासू शकता.</translation> <translation id="5746169159649715125">पीडीएफ म्हणून सेव्ह करा</translation> +<translation id="5746261205461426123">सेटअप मार्गदर्शक उघडा</translation> <translation id="5747552184818312860">कालबाह्य होईल</translation> <translation id="5747785204778348146">डेव्हलपर - अस्थिर</translation> <translation id="5747809636523347288">पेस्ट करा आणि <ph name="URL" /> वर जा</translation> @@ -5281,6 +5284,7 @@ <translation id="708278670402572152">स्कॅनिंग सुरू करण्यासाठी डिस्कनेक्ट करा</translation> <translation id="7084321615353200053">साइट तुमचा कॅमेरा वापरण्यासाठी विचारू शकतात (शिफारस केलेले)</translation> <translation id="7085389578340536476">Chrome ला ऑडिओ रेकॉर्ड करण्याची अनुमती द्यायची का?</translation> +<translation id="7085805695634549980">Google सेवांशी कनेक्ट करता आले नाही. एरर कोड: <ph name="ERROR_CODE" />.</translation> <translation id="7086672505018440886">संग्रहणामध्ये Chrome लॉग फाइलचा समावेश करा.</translation> <translation id="7088434364990739311">अपडेट तपासणी सुरू होण्यात अयशस्वी (एरर कोड <ph name="ERROR" />).</translation> <translation id="7088561041432335295">Zip Archiver - Files ॲपमध्ये झिप फाइल उघडा आणि पॅक करा.</translation> @@ -5997,6 +6001,7 @@ <translation id="7904526211178107182">तुमच्या नेटवर्कवरील इतर डिव्हाइसना Linux पोर्ट उपलब्ध करून द्या.</translation> <translation id="7907837847548254634">फोकस केलेल्या ऑब्जेक्टवर झटपट हायलाइट दाखवा</translation> <translation id="7908378463497120834">सॉरी, तुमच्या बाह्य डिव्हाइस स्टोरेजमधील कमीत कमी एक विभाग बसविला जाऊ शकत नाही.</translation> +<translation id="7909324225945368569">तुमच्या प्रोफाइलचे नाव बदला</translation> <translation id="7909969815743704077">गुप्त मध्ये डाउनलोड केले</translation> <translation id="7910768399700579500">&नवीन फोल्डर</translation> <translation id="7911118814695487383">Linux</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 0f761169..dbe3cd8 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">Penyemak imbas alternatif tidak boleh dibuka</translation> <translation id="2804667941345577550">Anda akan dilog keluar daripada tapak ini, termasuk dalam tab yang terbuka</translation> <translation id="2804680522274557040">Kamera dimatikan</translation> +<translation id="2805539617243680210">Anda sudah bersedia!</translation> <translation id="2805646850212350655">Sistem Fail Penyulitan Microsoft</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2805760958323556153">Nilai dasar ExtensionInstallForcelist tidak sah. Sila hubungi pentadbir anda.</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index f024101b1..1568f25 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">အရန်ဘရောင်ဇာ ဖွင့်၍မရပါ</translation> <translation id="2804667941345577550">ဖွင့်ထားသည့်တဘ်များအပါအဝင် ဤဝဘ်ဆိုက်မှ သင်ထွက်သွားပါမည်</translation> <translation id="2804680522274557040">ကင်မရာ ပိတ်ထားပါသည်</translation> +<translation id="2805539617243680210">အဆင်သင့် ဖြစ်ပါပြီ။</translation> <translation id="2805646850212350655">Microsoft လျှို့ဝှက်ကုဒ်သွင်းရေး ဖိုင် စနစ်</translation> <translation id="2805756323405976993">အက်ပ်များ</translation> <translation id="2805760958323556153">ExtensionInstallForcelist ၏ မူဝါဒတန်ဖိုး မမှန်ကန်ပါ။ သင့်စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။</translation> @@ -4013,6 +4014,7 @@ <translation id="5582839680698949063">ပင်မမီနူး</translation> <translation id="5583640892426849032">နောက်ပြန်</translation> <translation id="5584088138253955452">အသုံးပြုသူအမည် သိမ်းမလား။</translation> +<translation id="5584091888252706332">စတင်ချိန်တွင်</translation> <translation id="5584915726528712820"><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" />
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 63cd23f..f39bf52 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1626,6 +1626,7 @@ <translation id="2804043232879091219">वैकल्पिक ब्राउजर खोल्न सकिएन</translation> <translation id="2804667941345577550">तपाईंलाई खुला ट्याबहरूलगायत यस साइटबाट साइन आउट गरिने छ</translation> <translation id="2804680522274557040">क्यामेरा निष्क्रिय पारियो</translation> +<translation id="2805539617243680210">तपाईं पूर्ण रूपमा तयार हुनुहुन्छ!</translation> <translation id="2805646850212350655">Microsoft गुप्तिकरण फाइल प्रणाली</translation> <translation id="2805756323405976993">एप्स</translation> <translation id="2805760958323556153">नीतिको ExtensionInstallForcelist मान अवैध छ। कृपया आफ्ना एड्मिनलाई सम्पर्क गर्नुहोस्।</translation> @@ -4006,6 +4007,7 @@ <translation id="5582839680698949063">मुख्य मेनु</translation> <translation id="5583640892426849032">ब्याकस्पेस</translation> <translation id="5584088138253955452">युजरनेम सुरक्षित गर्ने हो?</translation> +<translation id="5584091888252706332">सुरुवातमा</translation> <translation id="5584915726528712820"><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" /> @@ -5539,6 +5541,7 @@ <translation id="7374376573160927383">USB हरू व्यवस्थापन गर्नुहोस्</translation> <translation id="7375235221357833624">{0,plural, =1{एक घन्टाभित्र यन्त्र अपडेट गर्नुहोस्}other{# घन्टाभित्र यन्त्र अपडेट गर्नुहोस्}}</translation> <translation id="7376553024552204454">गतिशील हुँदा माउसको कर्सरलाई हाइलाइट गर्नुहोस्</translation> +<translation id="737728204345822099">तपाईंको सुरक्षा साँचोमा तपाईं यो साइटमा जानुभएको कुराको रेकर्ड राखिन सक्छ।</translation> <translation id="7377451353532943397">सेन्सरको पहुँचमाथि रोक लगाउन जारी राख्नुहोस्</translation> <translation id="7378611153938412599">कमजोर पासवर्डहरू सजिलै अनुमान लगाउन सकिन्छ। त्यसैले भरपर्दा पासवर्डहरू राख्न नबिर्सनुहोला। <ph name="BEGIN_LINK" />सुरक्षासम्बन्धी थप सुझावहरू हेर्नुहोस्।<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome वेब स्टोर खोल्नुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 7e6c6628..00f3768 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">De alternatieve browser kan niet worden geopend</translation> <translation id="2804667941345577550">Je wordt uitgelogd bij deze site, ook in geopende tabbladen</translation> <translation id="2804680522274557040">Camera is uitgeschakeld</translation> +<translation id="2805539617243680210">Je bent helemaal klaar</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805760958323556153">De beleidswaarde voor ExtensionInstallForcelist is ongeldig. Neem contact op met je beheerder.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 3a1f3d6..e1ad95d5 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">Kunne ikke åpne den alternative nettleseren</translation> <translation id="2804667941345577550">Du blir logget av dette nettstedet, også i faner som er åpne</translation> <translation id="2804680522274557040">Kameraet er slått av</translation> +<translation id="2805539617243680210">Du er klar!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apper</translation> <translation id="2805760958323556153">Regelverdien for ExtensionInstallForcelist er ugyldig. Kontakt administratoren din.</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index e26c034..4b0c021 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -1621,6 +1621,7 @@ <translation id="2804043232879091219">ବିକଳ୍ପ ବ୍ରାଉଜର୍ ଖୋଲାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="2804667941345577550">ଖୋଲାଥିବା ଟାବ୍ଗୁଡ଼ିକ ସମେତ ଆପଣ ଏହି ସାଇଟ୍ରୁ ସାଇନ୍ ଆଉଟ୍ ହୋଇଯିବେ।</translation> <translation id="2804680522274557040">କ୍ୟାମେରା ବନ୍ଦ କରାଯାଇଛି</translation> +<translation id="2805539617243680210">ଆପଣ ସମ୍ପୂର୍ଣ୍ଣ ଭାବେ ପ୍ରସ୍ତୁତ ଅଛନ୍ତି!</translation> <translation id="2805646850212350655">Microsoft ଏନ୍କ୍ରିପ୍ଟିଂ ଫାଇଲ୍ ସିଷ୍ଟମ୍</translation> <translation id="2805756323405976993">ଆପ୍ସ</translation> <translation id="2805760958323556153">ExtensionInstallForcelistର ନୀତିର ମୂଲ୍ୟ ଅବୈଧ ଅଟେ। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation> @@ -5529,6 +5530,7 @@ <translation id="7374376573160927383">USB ଡିଭାଇସଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="7375235221357833624">{0,plural, =1{ଏକ ଘଣ୍ଟା ଭିତରେ ଡିଭାଇସ୍ ଅପଡେଟ୍ କରନ୍ତୁ}other{# ଘଣ୍ଟା ଭିତରେ ଡିଭାଇସ୍ ଅପଡେଟ୍ କରନ୍ତୁ}}</translation> <translation id="7376553024552204454">ମାଉସ୍ କର୍ସର୍ ଚାଲୁଥିବା ବେଳେ ଏହାକୁ ହାଇଲାଇଟ୍ କରନ୍ତୁ</translation> +<translation id="737728204345822099">ଏହି ସାଇଟକୁ ଆପଣ କରିଥିବା ଭିଜିଟର ଏକ ରେକର୍ଡ ଆପଣଙ୍କ ସୁରକ୍ଷା କୀ'ରେ ରଖାଯାଇପାରେ।</translation> <translation id="7377451353532943397">ସମ୍ବେଦନଶୀଳ ଆକ୍ସେସ୍ ଅବରୋଧ କରିବା ଜାରି ରଖନ୍ତୁ</translation> <translation id="7378611153938412599">ଦୁର୍ବଳ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଅନୁମାନ କରିବା ସହଜ ଅଟେ। ଆପଣ ଜଟିଳ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ତିଆରି କରିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ। <ph name="BEGIN_LINK" />ଅଧିକ ସୁରକ୍ଷା ଟିପ୍ସ ଦେଖନ୍ତୁ।<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome ୱେବ୍ ଷ୍ଟୋର୍ ଖୋଲନ୍ତୁ</translation> @@ -6010,6 +6012,7 @@ <translation id="7904526211178107182">ଆପଣଙ୍କ ନେଟୱାର୍କରେ ଅନ୍ୟ ଡିଭାଇସଗୁଡ଼ିକ ପାଇଁ Linux ପୋର୍ଟଗୁଡ଼ିକ ଉପଲବ୍ଧ କରାନ୍ତୁ।</translation> <translation id="7907837847548254634">ଫୋକସ୍ କରାଯାଇଥିବା ଅବଜେକ୍ଟ ଉପରେ ଏକ ଦ୍ରୁତ ହାଇଲାଇଟ୍ ଦେଖାନ୍ତୁ</translation> <translation id="7908378463497120834">ଆମେ ଦୁଃଖିତ, ଆପଣଙ୍କର ଏକ୍ସଟର୍ନଲ୍ ଷ୍ଟୋରେଜ୍ ଡିଭାଇସ୍ର ଅତି କମ୍ରେ ଗୋଟିଏ ଭାଗ ମାଉଣ୍ଟ କରାଯାଇପାରିଲା ନାହିଁ।</translation> +<translation id="7909324225945368569">ଆପଣଙ୍କ ପ୍ରୋଫାଇଲର ନାମ ବଦଳାନ୍ତୁ</translation> <translation id="7909969815743704077">ଇନ୍କଗ୍ନିଟୋରେ ଡାଉନ୍ଲୋଡ୍ କରନ୍ତୁ</translation> <translation id="7910768399700579500">&ନୂତନ ଫୋଲ୍ଡର</translation> <translation id="7911118814695487383">Linux</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 6af3084..a2357b5 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">ਵਿਕਲਪਿਕ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</translation> <translation id="2804667941345577550">ਖੁੱਲ੍ਹੀਆਂ ਟੈਬਾਂ ਸਮੇਤ, ਤੁਹਾਨੂੰ ਇਸ ਸਾਈਟ ਤੋਂ ਸਾਈਨ-ਆਊਟ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ</translation> <translation id="2804680522274557040">ਕੈਮਰਾ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ</translation> +<translation id="2805539617243680210">ਤੁਸੀਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ ਹੋ!</translation> <translation id="2805646850212350655">Microsoft ਐਨਕ੍ਰਿਪਟਿੰਗ ਫਾਈਲ ਸਿਸਟਮ</translation> <translation id="2805756323405976993">ਐਪਸ</translation> <translation id="2805760958323556153">ExtensionInstallForcelist ਦਾ ਨੀਤੀ ਮੁੱਲ ਅਵੈਧ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</translation> @@ -4009,6 +4010,7 @@ <translation id="5582839680698949063">ਮੁੱਖ ਮੀਨੂ</translation> <translation id="5583640892426849032">ਬੈਕਸਪੇਸ</translation> <translation id="5584088138253955452">ਕੀ ਵਰਤੋਂਕਾਰ ਨਾਮ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?</translation> +<translation id="5584091888252706332">ਸ਼ੁਰੂਆਤ ਵੇਲੇ</translation> <translation id="5584915726528712820"><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" /> @@ -5543,6 +5545,7 @@ <translation id="7374376573160927383">USB ਡੀਵਾਈਸਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="7375235221357833624">{0,plural, =1{ਡੀਵਾਈਸ ਨੂੰ ਇੱਕ ਘੰਟੇ ਦੇ ਅੰਦਰ ਅੱਪਡੇਟ ਕਰੋ}one{ਡੀਵਾਈਸ ਨੂੰ # ਘੰਟੇ ਦੇ ਅੰਦਰ ਅੱਪਡੇਟ ਕਰੋ}other{ਡੀਵਾਈਸ ਨੂੰ # ਘੰਟਿਆਂ ਦੇ ਅੰਦਰ ਅੱਪਡੇਟ ਕਰੋ}}</translation> <translation id="7376553024552204454">ਮਾਊਸ ਕਰਸਰ ਨੂੰ ਉਸ ਵੱਲੋਂ ਜਗ੍ਹਾ ਬਦਲੇ ਜਾਣ ਦੋਰਾਨ ਉਜਾਗਰ ਕਰੋ</translation> +<translation id="737728204345822099">ਇਸ ਸਾਈਟ 'ਤੇ ਤੁਹਾਡੇ ਜਾਣ ਦਾ ਰਿਕਾਰਡ ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਵਿੱਚ ਰੱਖਿਆ ਜਾ ਸਕਦਾ ਹੈ।</translation> <translation id="7377451353532943397">ਸੈਂਸਰ ਤੱਕ ਪਹੁੰਚ ਨੂੰ ਬਲਾਕ ਕਰਦੇ ਰਹੋ</translation> <translation id="7378611153938412599">ਕਮਜ਼ੋਰ ਪਾਸਵਰਡਾਂ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ। ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਮਜ਼ਬੂਤ ਪਾਸਵਰਡ ਬਣਾ ਰਹੇ ਹੋ। <ph name="BEGIN_LINK" />ਹੋਰ ਸੁਰੱਖਿਆ ਨੁਕਤੇ ਦੇਖੋ।<ph name="END_LINK" /></translation> <translation id="73786666777299047">'Chrome ਵੈੱਬ ਸਟੋਰ' ਖੋਲ੍ਹੋ</translation> @@ -7166,6 +7169,7 @@ <translation id="9209563766569767417">Linux ਕੰਟੇਨਰ ਦੇ ਸੈੱਟਅੱਪ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ</translation> <translation id="9209689095351280025">ਸਾਈਟਾਂ ਉਹਨਾਂ ਕੁਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ ਜੋ ਵੈੱਬ 'ਤੇ ਤੁਹਾਨੂੰ ਟਰੈਕ ਕਰਦੀਆਂ ਹਨ</translation> <translation id="9211177926627870898">ਅੱਪਡੇਟ ਲੋੜੀਂਦਾ ਹੈ</translation> +<translation id="9211490828691860325">ਸਾਰੇ ਡੈਸਕ</translation> <translation id="9214520840402538427">ਓਹੋ! ਸਥਾਪਨਾ-ਸਮਾਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਸ਼ੁਰੂ ਹੋਣ ਦਾ ਸਮਾਂ ਸਮਾਪਤ ਹੋ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸਹਾਇਤਾ ਪ੍ਰਤੀਨਿਧੀ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</translation> <translation id="9214695392875603905">Cupcake</translation> <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" ਜੋੜਿਆ ਗਿਆ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 0af3afc..1c359fb 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">Nie udało się otworzyć alternatywnej przeglądarki</translation> <translation id="2804667941345577550">Wylogujemy Cię z tej strony, także na otwartych kartach</translation> <translation id="2804680522274557040">Kamera wyłączona</translation> +<translation id="2805539617243680210">Wszystko gotowe</translation> <translation id="2805646850212350655">System szyfrowania plików firmy Microsoft</translation> <translation id="2805756323405976993">Aplikacje</translation> <translation id="2805760958323556153">Wartość zasady ExtensionInstallForcelist jest nieprawidłowa. Skontaktuj się z administratorem.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 3009d6a..8f810a5 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">Não foi possível abrir o navegador alternativo</translation> <translation id="2804667941345577550">Sua conta será desconectada desse site, inclusive nas guias abertas</translation> <translation id="2804680522274557040">Câmera desativada</translation> +<translation id="2805539617243680210">Tudo pronto</translation> <translation id="2805646850212350655">Sistema de arquivos com criptografia da Microsoft</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805760958323556153">O valor da política ExtensionInstallForcelist não é válido. Entre em contato com o administrador.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index bad3978..06b443f 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">Não foi possível abrir o navegador alternativo.</translation> <translation id="2804667941345577550">A sua sessão neste site será terminada, incluindo em separadores abertos.</translation> <translation id="2804680522274557040">A câmara está desativada</translation> +<translation id="2805539617243680210">Está tudo pronto!</translation> <translation id="2805646850212350655">Sistema de encriptação de ficheiros Microsoft</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805760958323556153">O valor da política de ExtensionInstallForcelist é inválido. Contacte o seu administrador.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index e7d4440..7a5663da 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -1626,6 +1626,7 @@ <translation id="2804043232879091219">Browserul secundar nu a putut fi deschis</translation> <translation id="2804667941345577550">Te vei deconecta de la acest site, inclusiv din filele deschise</translation> <translation id="2804680522274557040">Camera foto este dezactivată</translation> +<translation id="2805539617243680210">Gata!</translation> <translation id="2805646850212350655">Sistem Microsoft de criptare a fișierelor</translation> <translation id="2805756323405976993">Aplicații</translation> <translation id="2805760958323556153">Valoarea ExtensionInstallForcelist a politicii nu este validă. Contactează administratorul.</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 0757947..40d3df2 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">Не удалось открыть альтернативный браузер.</translation> <translation id="2804667941345577550">Вы автоматически выйдете из аккаунта на этом сайте (в том числе на открытых вкладках).</translation> <translation id="2804680522274557040">Камера отключена</translation> +<translation id="2805539617243680210">Все готово!</translation> <translation id="2805646850212350655">Зашифрованная файловая система (EFS) Microsoft</translation> <translation id="2805756323405976993">Сервисы</translation> <translation id="2805760958323556153">Для правила ExtensionInstallForcelist указано недопустимое значение. Обратитесь к администратору.</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index 610a691..f497b11 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -1632,6 +1632,7 @@ <translation id="2804043232879091219">වෛකල්පික බ්රවුසරය විවෘත කළ නොහැකි විය</translation> <translation id="2804667941345577550">ඔබ විවෘත පටිති ඇතුළුව මෙම වෙබ් අඩවියෙන් වරනු ලැබේ.</translation> <translation id="2804680522274557040">කැමරාව අක්රියයි</translation> +<translation id="2805539617243680210">ඔබ සියල්ලම සකසා ඇත!</translation> <translation id="2805646850212350655">Microsoft සංකේතනය කිරීමේ ගොනු පද්ධතිය</translation> <translation id="2805756323405976993">යෙදුම්</translation> <translation id="2805760958323556153">ExtensionInstallForcelist හි ප්රතිපත්ති අගය වලංගු නැත. කරුණාකර ඔබගේ පරිපාලක සම්බන්ධ කර ගන්න.</translation> @@ -4023,6 +4024,7 @@ <translation id="5582839680698949063">ප්රධාන මෙනුව</translation> <translation id="5583640892426849032">ආපසුයවනය</translation> <translation id="5584088138253955452">පරිශීලක නාමය සුරකින්නද?</translation> +<translation id="5584091888252706332">පණ ගැන්වීමේ දී</translation> <translation id="5584915726528712820"><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" />
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 928cf68..b7631f9 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">Alternatívny prehliadač sa nepodarilo otvoriť</translation> <translation id="2804667941345577550">Systém vás odhlási z tohto webu (aj v otvorených kartách)</translation> <translation id="2804680522274557040">Kamera je vypnutá</translation> +<translation id="2805539617243680210">Všetko je nastavené.</translation> <translation id="2805646850212350655">Systém šifrovania súborov spoločnosti Microsoft</translation> <translation id="2805756323405976993">Aplikácie</translation> <translation id="2805760958323556153">Hodnota pravidla ExtensionInstallForcelist je neplatná. Kontaktujte správcu.</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index ce264b2..fe9e9f4 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -1632,6 +1632,7 @@ <translation id="2804043232879091219">Nadomestnega brskalnika ni bilo mogoče odpreti</translation> <translation id="2804667941345577550">Odjavljeni boste s tega spletnega mesta, vključno s tistim na odprtih zavihkih</translation> <translation id="2804680522274557040">Fotoaparat je izklopljen</translation> +<translation id="2805539617243680210">Pripravljeni ste.</translation> <translation id="2805646850212350655">Microsoftov šifrirni datotečni sistem</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805760958323556153">Vrednost pravilnika ExtensionInstallForcelist ni veljavna. Obrnite se na skrbnika.</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index d79e545..b9385af 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -1631,6 +1631,7 @@ <translation id="2804043232879091219">Shfletuesi alternativ nuk mund të hapej</translation> <translation id="2804667941345577550">Do të nxirresh nga ky sajt, duke përfshirë edhe në skedat e hapura</translation> <translation id="2804680522274557040">Kamera është çaktivizuar</translation> +<translation id="2805539617243680210">Je plotësisht gati!</translation> <translation id="2805646850212350655">Sistemi i skedarëve të enkriptimit të Microsoft</translation> <translation id="2805756323405976993">Aplikacionet</translation> <translation id="2805760958323556153">Vlera e politikës për ExtensionInstallForcelist është e pavlefshme. Kontakto me administratorin tënd.</translation> @@ -4021,6 +4022,7 @@ <translation id="5582839680698949063">Menyja kryesore</translation> <translation id="5583640892426849032">Hapësirë prapa</translation> <translation id="5584088138253955452">Të ruhet emri i përdoruesit?</translation> +<translation id="5584091888252706332">Në nisje</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Ky është informacion i përgjithshëm për pajisjen tënde dhe se si e përdor (si p.sh. niveli i baterisë, aktiviteti dhe gabimet e sistemit dhe të aplikacioneve). Të dhënat do të përdoren për të përmirësuar Android, ndërsa disa informacione të grumbulluara do të ndihmojnë gjithashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android, për të përmirësuar aplikacionet dhe produktet e tyre.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Çaktivizimi i këtij funksioni nuk ndikon në aftësinë e pajisjes sate për të dërguar informacionin që nevojitet për shërbime bazë si p.sh. përditësimet dhe siguria e sistemit.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Zotëruesi mund ta kontrollojë këtë veçori nga "Cilësimet > "Të përparuara" > "Dërgoji automatikisht te Google të dhënat diagnostikuese dhe të përdorimit".<ph name="END_PARAGRAPH3" />
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index f08f265..7685febd 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">Nismo uspeli da otvorimo alternativni pregledač</translation> <translation id="2804667941345577550">Odjavićete se sa ovog sajta, uključujući i instance na otvorenim karticama</translation> <translation id="2804680522274557040">Dozvola za kameru je isključena</translation> +<translation id="2805539617243680210">Spremni ste!</translation> <translation id="2805646850212350655">Microsoft sistem za šifrovanje datoteka</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805760958323556153">Vrednost za smernice ExtensionInstallForcelist je nevažeća. Obratite se administratoru.</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 164a8f0..2862d8e9 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">Нисмо успели да отворимо алтернативни прегледач</translation> <translation id="2804667941345577550">Одјавићете се са овог сајта, укључујући и инстанце на отвореним картицама</translation> <translation id="2804680522274557040">Дозвола за камеру је искључена</translation> +<translation id="2805539617243680210">Спремни сте!</translation> <translation id="2805646850212350655">Microsoft систем за шифровање датотека</translation> <translation id="2805756323405976993">Апликације</translation> <translation id="2805760958323556153">Вредност за смернице ExtensionInstallForcelist је неважећа. Обратите се администратору.</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 28213d3d..61c0fcc 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">Det gick inte att öppna den andra webbläsaren</translation> <translation id="2804667941345577550">Du loggas ut från den här webbplatsen, även på öppna flikar</translation> <translation id="2804680522274557040">Kamera har inaktiverats</translation> +<translation id="2805539617243680210">Nu är det klart.</translation> <translation id="2805646850212350655">Microsofts krypterande filsystem</translation> <translation id="2805756323405976993">Appar</translation> <translation id="2805760958323556153">Principen ExtensionInstallForcelist har ett ogiltigt värde. Kontakta administratören.</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index bb8462e..e91357aa 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1622,6 +1622,7 @@ <translation id="2804043232879091219">Tumeshindwa kufungua kivinjari mbadala</translation> <translation id="2804667941345577550">Utaondolewa kwenye akaunti ya tovuti hii, ikiwemo vichupo ambavyo umefungua</translation> <translation id="2804680522274557040">Kamera imezimwa</translation> +<translation id="2805539617243680210">Kila kitu kiko tayari!</translation> <translation id="2805646850212350655">Mfumo wa Microsoft wa Usimbaji wa Faili</translation> <translation id="2805756323405976993">Programu</translation> <translation id="2805760958323556153">Thamani ya sera ya ExtensionInstallForcelist si sahihi. Tafadhali wasiliana na msimamizi wako.</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index b3a7ee01..7fc7a4ff 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">மாற்று உலாவியைத் திறக்க முடியவில்லை</translation> <translation id="2804667941345577550">திறந்துள்ள தாவல்களிலிருந்து உட்பட இந்தத் தளத்திலிருந்து வெளியேற்றப்படுவீர்கள்</translation> <translation id="2804680522274557040">கேமரா முடக்கப்பட்டுள்ளது</translation> +<translation id="2805539617243680210">பயன்படுத்தத் தயாராகிவிட்டீர்கள்!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ஆப்ஸ்</translation> <translation id="2805760958323556153">ExtensionInstallForcelistடின் கொள்கை மதிப்பு தவறானது. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்.</translation> @@ -5546,6 +5547,7 @@ <translation id="7374376573160927383">USB சாதனங்களை நிர்வகியுங்கள்</translation> <translation id="7375235221357833624">{0,plural, =1{ஒரு மணிநேரத்திற்குள் சாதனத்தைப் புதுப்பிக்கவும்}other{# மணிநேரத்திற்குள் சாதனத்தைப் புதுப்பிக்கவும்}}</translation> <translation id="7376553024552204454">மவுஸ் கர்சரை நகர்த்தும் போது, அதை ஹைலைட் செய்</translation> +<translation id="737728204345822099">நீங்கள் இந்தத் தளத்தைப் பார்வையிடுவது தொடர்பான விவரங்கள் உங்கள் பாதுகாப்பு விசையில் பதிவுசெய்யப்படக்கூடும்.</translation> <translation id="7377451353532943397">தொடர்ந்து சென்சார் அணுகலைத் தடு</translation> <translation id="7378611153938412599">வலுவற்ற கடவுச்சொற்களை யூகிப்பது எளிது என்பதால் வலிமையான கடவுச்சொற்களை உருவாக்குங்கள். <ph name="BEGIN_LINK" />கூடுதல் உதவிக்குறிப்புகளைக் காண்க.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome இணைய அங்காடியைத் திற</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 5ba228d..17d8a6c 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">ప్రత్యామ్నాయ బ్రౌజర్ను తెరవడం సాధ్యపడలేదు</translation> <translation id="2804667941345577550">అలాగే మీరు తెరిచిన ట్యాబ్లతో సహా, ఈ సైట్ నుండి పూర్తిగా సైన్ అవుట్ చేయబడతారు.</translation> <translation id="2804680522274557040">కెమెరా ఆఫ్ చేయబడింది</translation> +<translation id="2805539617243680210">మీరు మొత్తం పూర్తి చేశారు!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">యాప్స్</translation> <translation id="2805760958323556153">ExtensionInstallForcelist పాలసీ విలువ చెల్లనిది. దయచేసి మీ అడ్మినిస్ట్రేటర్ను సంప్రదించండి.</translation> @@ -5529,6 +5530,7 @@ <translation id="7374376573160927383">USB పరికరాలను మేనేజ్ చేయండి</translation> <translation id="7375235221357833624">{0,plural, =1{ఒక గంట లోపు పరికరాన్ని అప్డేట్ చేయండి}other{# గంటల లోపు పరికరాన్ని అప్డేట్ చేయండి}}</translation> <translation id="7376553024552204454">మౌస్ కర్సర్ జరుగుతున్నప్పుడు దానిని హైలైట్ చేయి</translation> +<translation id="737728204345822099">ఈ సైట్కు మీ సందర్శన గురించిన సమాచారం మీ సెక్యూరిటీ కీలో రికార్డ్ చేయబడుతుంది.</translation> <translation id="7377451353532943397">సెన్సార్ యాక్సెస్ను బ్లాక్ చేయడం కొనసాగించు</translation> <translation id="7378611153938412599">బలహీనమైన పాస్వర్డ్లను ఊహించడం చాలా సులభం. మీరు శక్తివంతమైన పాస్వర్డ్లను క్రియేట్ చేస్తున్నారని నిర్ధారించుకోండి. <ph name="BEGIN_LINK" />మరిన్ని భద్రతా చిట్కాలను చూడండి.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome వెబ్ స్టోర్ను తెరువు</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 1800c1c..390663c 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">เปิดเบราว์เซอร์สำรองไม่ได้</translation> <translation id="2804667941345577550">คุณจะออกจากระบบของเว็บไซต์นี้ รวมถึงในแท็บที่เปิดอยู่</translation> <translation id="2804680522274557040">ปิดกล้องอยู่</translation> +<translation id="2805539617243680210">คุณพร้อมแล้ว</translation> <translation id="2805646850212350655">ระบบไฟล์การเข้ารหัสของ Microsoft</translation> <translation id="2805756323405976993">แอป</translation> <translation id="2805760958323556153">ค่าของนโยบาย ExtensionInstallForcelist ไม่ถูกต้อง โปรดติดต่อผู้ดูแลระบบ</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 39a4c05..d76ae00e 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -1630,6 +1630,7 @@ <translation id="2804043232879091219">Alternatif tarayıcı açılamadı</translation> <translation id="2804667941345577550">Açık sekmeler dahil olmak üzere bu sitede oturumunuz kapatılacak</translation> <translation id="2804680522274557040">Kamera devre dışı bırakıldı</translation> +<translation id="2805539617243680210">Her şey hazır!</translation> <translation id="2805646850212350655">Microsoft Şifreleme Dosya Sistemi</translation> <translation id="2805756323405976993">Uygulamalar</translation> <translation id="2805760958323556153">ExtensionInstallForcelist politika değeri geçersiz. Lütfen yöneticinizle iletişime geçin.</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 40d07d3..a0fe7bc 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1628,6 +1628,7 @@ <translation id="2804043232879091219">Не вдалося відкрити альтернативний веб-переглядач</translation> <translation id="2804667941345577550">Ви вийдете з облікового запису на цьому сайті, зокрема у відкритих вкладках</translation> <translation id="2804680522274557040">Камеру вимкнено</translation> +<translation id="2805539617243680210">Готово!</translation> <translation id="2805646850212350655">Система шифрування файлів Microsoft</translation> <translation id="2805756323405976993">Додатки</translation> <translation id="2805760958323556153">Значення правила ExtensionInstallForcelist недійсне. Зв'яжіться з адміністратором.</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index dabd742..603ff27a 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1626,6 +1626,7 @@ <translation id="2804043232879091219">متبادل براؤزر نہیں کھل سکا</translation> <translation id="2804667941345577550">اوپن ٹیبز سمیت، آپ اس سائٹ سے سائن آؤٹ ہو جائیں گے</translation> <translation id="2804680522274557040">کیمرا آف ہے</translation> +<translation id="2805539617243680210">آپ پوری طرح تیار ہیں!</translation> <translation id="2805646850212350655">Microsoft مرموزکاری فائل سسٹم</translation> <translation id="2805756323405976993">اطلاقات</translation> <translation id="2805760958323556153">ExtensionInstallForcelist کی پالیسی کی قدر غلط ہے۔ براہ کرم اپنے منتظم سے رابطہ کریں۔</translation> @@ -4000,6 +4001,7 @@ <translation id="5582839680698949063">اصل مینو</translation> <translation id="5583640892426849032">بیک اسپیس</translation> <translation id="5584088138253955452">صارف نام کو محفوظ کریں؟</translation> +<translation id="5584091888252706332">شروعات میں</translation> <translation id="5584915726528712820"><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" /> @@ -5529,6 +5531,7 @@ <translation id="7374376573160927383">USB آلات کا نظم کریں</translation> <translation id="7375235221357833624">{0,plural, =1{ایک گھنٹے کے اندر آلہ اپ ڈیٹ کریں}other{# گھنٹے کے اندر آلہ اپ ڈیٹ کریں}}</translation> <translation id="7376553024552204454">ماؤس کا کرسر حرکت میں ہونے پر اسے ہائی لائٹ کریں</translation> +<translation id="737728204345822099">آپ کی سیکیورٹی کلید پر آپ کے اس سائٹ کو ملاحظہ کرنے کا ریکارڈ رکھا جا سکتا ہے۔</translation> <translation id="7377451353532943397">سینسر تک رسائی کو مسدود کرنا جاری رکھیں</translation> <translation id="7378611153938412599">کمزور پاس ورڈز کا اندازہ لگانا آسان ہوتا ہے۔ مضبوط پاس ورڈز تخلیق کرنا یقینی بنائیں۔ <ph name="BEGIN_LINK" />سیکیورٹی کی مزید تجاویز دیکھیں۔<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome ویب اسٹور کھولیں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 6bb0adb..95517ea 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -1632,6 +1632,7 @@ <translation id="2804043232879091219">Muqobil brauzer ochilmadi</translation> <translation id="2804667941345577550">Bu saytdagi hisobingizdan avtomatik chiqarilasiz (shuningdek, ochiq varaqlardan ham)</translation> <translation id="2804680522274557040">Kamera faolsizlantirilgan</translation> +<translation id="2805539617243680210">Tayyor!</translation> <translation id="2805646850212350655">Microsoft (EFS) shifrlangan fayl tizimi</translation> <translation id="2805756323405976993">Ilovalar</translation> <translation id="2805760958323556153">Sozlamadagi ExtensionInstallForcelist parametri yaroqsiz. Administratorga murojaat qiling.</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 067ba28..6121e24 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -1625,6 +1625,7 @@ <translation id="2804043232879091219">Không thể mở trình duyệt thay thế</translation> <translation id="2804667941345577550">Bạn sẽ bị đăng xuất khỏi trang web này, bao gồm cả các thẻ đang mở</translation> <translation id="2804680522274557040">Đã tắt máy ảnh</translation> +<translation id="2805539617243680210">Bạn đã hoàn tất!</translation> <translation id="2805646850212350655">Hệ thống Tệp Mã hóa của Microsoft</translation> <translation id="2805756323405976993">Ứng dụng</translation> <translation id="2805760958323556153">Giá trị ExtensionInstallForcelist của chính sách là không hợp lệ. Vui lòng liên hệ với quản trị viên của bạn.</translation> @@ -3120,6 +3121,7 @@ <translation id="4538417792467843292">Xóa từ</translation> <translation id="4538684596480161368">Luôn chặn các plugin không có hộp cát trên <ph name="HOST" /></translation> <translation id="4538792345715658285">Được cài đặt theo chính sách doanh nghiệp.</translation> +<translation id="4541123282641193691">Không thể xác minh tài khoản của bạn. Vui lòng thử lại hoặc khởi động lại Chromebook.</translation> <translation id="4541662893742891060">Không thể kết nối với hồ sơ này. Nếu cần hỗ trợ kỹ thuật, hãy liên hệ với nhà mạng của bạn.</translation> <translation id="4542520061254486227">Đọc dữ liệu của bạn trên <ph name="WEBSITE_1" /> và <ph name="WEBSITE_2" /></translation> <translation id="4543778593405494224">Trình quản lý chứng chỉ</translation> @@ -4138,6 +4140,7 @@ <translation id="574209121243317957">Cao độ</translation> <translation id="5742505912938664543">Khi thêm một tài khoản phụ vào đây, bạn có thể dùng tài khoản đó để duyệt web, tải các ứng dụng xuống, kiểm tra Gmail và sử dụng các dịch vụ khác của Google.</translation> <translation id="5746169159649715125">Lưu dưới dạng PDF</translation> +<translation id="5746261205461426123">Mở hướng dẫn thiết lập</translation> <translation id="5747552184818312860">Hết hạn</translation> <translation id="5747785204778348146">Nhà phát triển - không chính thức</translation> <translation id="5747809636523347288">Dá&n và truy cập <ph name="URL" /></translation> @@ -5289,6 +5292,7 @@ <translation id="708278670402572152">Ngắt kết nối để bật tính năng quét</translation> <translation id="7084321615353200053">Các trang web có thể yêu cầu sử dụng máy ảnh của bạn (khuyến nghị)</translation> <translation id="7085389578340536476">Bạn có muốn cho phép Chrome ghi âm không?</translation> +<translation id="7085805695634549980">Không thể kết nối với các dịch vụ của Google. Mã lỗi: <ph name="ERROR_CODE" />.</translation> <translation id="7086672505018440886">Thêm các tệp nhật ký của Chrome vào mục lưu trữ.</translation> <translation id="7088434364990739311">Không thể bắt đầu kiểm tra cập nhật (mã lỗi <ph name="ERROR" />).</translation> <translation id="7088561041432335295">Zip Archiver - Mở và nén tệp ZIP trong ứng dụng Tệp.</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index d6cbe8c..eb2a7dd 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -1621,6 +1621,7 @@ <translation id="2804043232879091219">无法打开替代浏览器</translation> <translation id="2804667941345577550">您将会自动退出这个网站(包括打开的标签页)</translation> <translation id="2804680522274557040">摄像头已关闭</translation> +<translation id="2805539617243680210">您已设置完毕!</translation> <translation id="2805646850212350655">Microsoft 加密文件系统</translation> <translation id="2805756323405976993">应用</translation> <translation id="2805760958323556153">ExtensionInstallForcelist 的政策值无效。请与您的管理员联系。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 7e85d9a4..df53765 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">無法開啟替代瀏覽器</translation> <translation id="2804667941345577550">您將會從此網站 (包括在開啟的分頁) 登出。</translation> <translation id="2804680522274557040">相機已關閉</translation> +<translation id="2805539617243680210">大功告成!</translation> <translation id="2805646850212350655">Microsoft 加密檔案系統</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2805760958323556153">ExtensionInstallForcelist 的政策值無效,請聯絡您的管理員。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 80bb09c6..7fd319bc 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -1629,6 +1629,7 @@ <translation id="2804043232879091219">無法開啟替代瀏覽器</translation> <translation id="2804667941345577550">系統會將你登出這個網站 (這項操作會套用到所有已開啟的分頁)。</translation> <translation id="2804680522274557040">攝影機已關閉</translation> +<translation id="2805539617243680210">大功告成!</translation> <translation id="2805646850212350655">Microsoft 加密檔案系統</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2805760958323556153">ExtensionInstallForcelist 的政策值無效,請與系統管理員聯絡。</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index cf3df788..70c6e5b 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -1633,6 +1633,7 @@ <translation id="2804043232879091219">Esinye isiphequluli asikwazanga ukuvulwa</translation> <translation id="2804667941345577550">Uzokhishwa kuleli sayithi, kufaka phakathi kumathebhu avuliwe</translation> <translation id="2804680522274557040">Ikhamera ivaliwe</translation> +<translation id="2805539617243680210">Usumi ngomumo!</translation> <translation id="2805646850212350655">Ukubethelwa kwe-Microsift kwesistimu yefayela</translation> <translation id="2805756323405976993">Izinhlelo zokusebenza</translation> <translation id="2805760958323556153">Inani lenqubomgomo le-ExtensionInstallForcelist alivumelekile. Sicela uxhumane nomlawuli wakho.</translation> @@ -4024,6 +4025,7 @@ <translation id="5582839680698949063">Imenyu eyinhloko</translation> <translation id="5583640892426849032">I-Backspace</translation> <translation id="5584088138253955452">Londoloza igama lomsebenzisi?</translation> +<translation id="5584091888252706332">Ekuqaliseni</translation> <translation id="5584915726528712820"><ph name="BEGIN_PARAGRAPH1" />Lolu ulwazi oluvamile mayelana nedivayisi yakho nokuthi uyisebenzisa kanjani (njengeleveli yebhethri, umsebenzi wesistimu nohlelo lokusebenza, namaphutha). Idatha izosetshenziselwa ukuthuthukisa i-Android, nolunye ulwazi olubaliwe nalo luzosiza izinhlelo zokusebenza ze-Google nozakwethu, njengonjiniyela be-Android, ukwenza izinhlelo zabo zokusebenza nemikhiqizo ukuthi kubengcono.<ph name="END_PARAGRAPH1" /> <ph name="BEGIN_PARAGRAPH2" />Ukuvala lesi sici akuthinti amandla edivayisi yakho okuthumela ulwazi oludingekayo kumasevisi abalulekile njengezibuyekezo zesistimu nokuphepha.<ph name="END_PARAGRAPH2" /> <ph name="BEGIN_PARAGRAPH3" />Umnikazi angalawula lesi sici kusuka Kuzilungiselelo > Okuthuthukile > Thumela ngokuzenzakalelayo idatha yokuxilonga nokusebenzisa ku-Google.<ph name="END_PARAGRAPH3" />
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 0666cf8..a0a51cd 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -4267,6 +4267,8 @@ sources += [ "apps/app_service/app_notifications.cc", "apps/app_service/app_notifications.h", + "apps/app_service/app_web_contents_data.cc", + "apps/app_service/app_web_contents_data.h", "apps/app_service/arc_activity_adaptive_icon_impl.cc", "apps/app_service/arc_activity_adaptive_icon_impl.h", "apps/app_service/arc_apps.cc",
diff --git a/chrome/browser/apps/app_service/app_service_proxy.cc b/chrome/browser/apps/app_service/app_service_proxy.cc index 192f84ab..dc19a74 100644 --- a/chrome/browser/apps/app_service/app_service_proxy.cc +++ b/chrome/browser/apps/app_service/app_service_proxy.cc
@@ -220,6 +220,10 @@ return app_registry_cache_; } +apps::AppCapabilityAccessCache& AppServiceProxy::AppCapabilityAccessCache() { + return app_capability_access_cache_; +} + #if BUILDFLAG(IS_CHROMEOS_ASH) apps::InstanceRegistry& AppServiceProxy::InstanceRegistry() { return instance_registry_;
diff --git a/chrome/browser/apps/app_service/app_service_proxy.h b/chrome/browser/apps/app_service/app_service_proxy.h index 3e3f6ece..ba24d44 100644 --- a/chrome/browser/apps/app_service/app_service_proxy.h +++ b/chrome/browser/apps/app_service/app_service_proxy.h
@@ -93,6 +93,7 @@ mojo::Remote<apps::mojom::AppService>& AppService(); apps::AppRegistryCache& AppRegistryCache(); + apps::AppCapabilityAccessCache& AppCapabilityAccessCache(); #if BUILDFLAG(IS_CHROMEOS_ASH) apps::InstanceRegistry& InstanceRegistry();
diff --git a/chrome/browser/apps/app_service/app_web_contents_data.cc b/chrome/browser/apps/app_service/app_web_contents_data.cc new file mode 100644 index 0000000..dde7b44 --- /dev/null +++ b/chrome/browser/apps/app_service/app_web_contents_data.cc
@@ -0,0 +1,25 @@ +// 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/apps/app_service/app_web_contents_data.h" + +namespace apps { + +AppWebContentsData::AppWebContentsData(content::WebContents* web_contents, + Client* client) + : content::WebContentsObserver(web_contents), client_(client) { + DCHECK(web_contents); + DCHECK(client); +} + +void AppWebContentsData::WebContentsDestroyed() { + if (client_) { + client_->OnWebContentsDestroyed(web_contents()); + } + client_ = nullptr; +} + +WEB_CONTENTS_USER_DATA_KEY_IMPL(AppWebContentsData) + +} // namespace apps
diff --git a/chrome/browser/apps/app_service/app_web_contents_data.h b/chrome/browser/apps/app_service/app_web_contents_data.h new file mode 100644 index 0000000..d7805fb --- /dev/null +++ b/chrome/browser/apps/app_service/app_web_contents_data.h
@@ -0,0 +1,42 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_APPS_APP_SERVICE_APP_WEB_CONTENTS_DATA_H_ +#define CHROME_BROWSER_APPS_APP_SERVICE_APP_WEB_CONTENTS_DATA_H_ + +#include "content/public/browser/web_contents_observer.h" +#include "content/public/browser/web_contents_user_data.h" + +namespace apps { + +// AppWebContentsData is attached to the lifetime of a WebContents, and notifies +// Observer when the WebContents is destroyed. +class AppWebContentsData + : public content::WebContentsUserData<AppWebContentsData>, + public content::WebContentsObserver { + public: + class Client { + public: + // Invoked when the WebContents is being destroyed. + virtual void OnWebContentsDestroyed(content::WebContents* contents) = 0; + }; + + explicit AppWebContentsData(content::WebContents* contents, Client* client); + AppWebContentsData(const AppWebContentsData&) = delete; + AppWebContentsData& operator=(const AppWebContentsData&) = delete; + ~AppWebContentsData() override = default; + + private: + friend class content::WebContentsUserData<AppWebContentsData>; + WEB_CONTENTS_USER_DATA_KEY_DECL(); + + // content::WebContentsObserver: + void WebContentsDestroyed() override; + + Client* client_; +}; + +} // namespace apps + +#endif // CHROME_BROWSER_APPS_APP_SERVICE_APP_WEB_CONTENTS_DATA_H_
diff --git a/chrome/browser/apps/app_service/extension_apps_chromeos.cc b/chrome/browser/apps/app_service/extension_apps_chromeos.cc index 786f139..63a7e642 100644 --- a/chrome/browser/apps/app_service/extension_apps_chromeos.cc +++ b/chrome/browser/apps/app_service/extension_apps_chromeos.cc
@@ -426,12 +426,37 @@ app_id = extension->id(); } + if (media_requests_.IsNewRequest(app_id, web_contents, state)) { + content::WebContentsUserData<AppWebContentsData>::CreateForWebContents( + web_contents, this); + } + auto result = media_requests_.UpdateRequests(app_id, web_contents, stream_type, state); ModifyCapabilityAccess(subscribers(), app_id, result.camera, result.microphone); } +void ExtensionAppsChromeOs::OnWebContentsDestroyed( + content::WebContents* web_contents) { + DCHECK(web_contents); + + std::string app_id = extension_misc::kChromeAppId; + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile()); + DCHECK(registry); + const extensions::ExtensionSet& extensions = registry->enabled_extensions(); + const extensions::Extension* extension = + extensions.GetAppByURL(web_contents->GetLastCommittedURL()); + if (extension && Accepts(extension)) { + app_id = extension->id(); + } + + auto result = media_requests_.OnWebContentsDestroyed(app_id, web_contents); + ModifyCapabilityAccess(subscribers(), app_id, result.camera, + result.microphone); +} + void ExtensionAppsChromeOs::OnNotificationDisplayed( const message_center::Notification& notification, const NotificationCommon::Metadata* const metadata) {
diff --git a/chrome/browser/apps/app_service/extension_apps_chromeos.h b/chrome/browser/apps/app_service/extension_apps_chromeos.h index c8e63e9..f4d4fdc 100644 --- a/chrome/browser/apps/app_service/extension_apps_chromeos.h +++ b/chrome/browser/apps/app_service/extension_apps_chromeos.h
@@ -13,6 +13,7 @@ #include "base/scoped_observation.h" #include "base/scoped_observer.h" #include "chrome/browser/apps/app_service/app_notifications.h" +#include "chrome/browser/apps/app_service/app_web_contents_data.h" #include "chrome/browser/apps/app_service/extension_apps_base.h" #include "chrome/browser/apps/app_service/icon_key_util.h" #include "chrome/browser/apps/app_service/media_requests.h" @@ -53,7 +54,8 @@ public extensions::AppWindowRegistry::Observer, public ArcAppListPrefs::Observer, public NotificationDisplayService::Observer, - public MediaCaptureDevicesDispatcher::Observer { + public MediaCaptureDevicesDispatcher::Observer, + public AppWebContentsData::Client { public: ExtensionAppsChromeOs( const mojo::Remote<apps::mojom::AppService>& app_service, @@ -114,6 +116,9 @@ blink::mojom::MediaStreamType stream_type, const content::MediaRequestState state) override; + // AppWebContentsData::Observer: + void OnWebContentsDestroyed(content::WebContents* contents) override; + // NotificationDisplayService::Observer overrides. void OnNotificationDisplayed( const message_center::Notification& notification,
diff --git a/chrome/browser/apps/app_service/media_access_browsertest.cc b/chrome/browser/apps/app_service/media_access_browsertest.cc new file mode 100644 index 0000000..159cca90 --- /dev/null +++ b/chrome/browser/apps/app_service/media_access_browsertest.cc
@@ -0,0 +1,671 @@ +// Copyright (c) 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 <memory> + +#include "base/run_loop.h" +#include "base/scoped_observation.h" +#include "base/test/thread_test_helper.h" +#include "chrome/browser/apps/app_service/app_service_proxy.h" +#include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/apps/platform_apps/app_browsertest_util.h" +#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser_list.h" +#include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h" +#include "chrome/browser/ui/web_applications/web_app_controller_browsertest.h" +#include "chrome/common/extensions/manifest_handlers/app_launch_info.h" +#include "chrome/test/base/ui_test_utils.h" +#include "content/public/browser/browser_task_traits.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/test/browser_test.h" +#include "extensions/common/extension.h" + +using extensions::Extension; + +namespace { + +bool AccessingCamera(Profile* profile, const std::string& app_id) { + auto accessing_camera = apps::mojom::OptionalBool::kUnknown; + apps::AppServiceProxy* proxy = + apps::AppServiceProxyFactory::GetForProfile(profile); + proxy->FlushMojoCallsForTesting(); + proxy->AppCapabilityAccessCache().ForOneApp( + app_id, [&accessing_camera](const apps::CapabilityAccessUpdate& update) { + accessing_camera = update.Camera(); + }); + return accessing_camera == apps::mojom::OptionalBool::kTrue; +} + +bool AccessingMicrophone(Profile* profile, const std::string& app_id) { + auto accessing_microphone = apps::mojom::OptionalBool::kUnknown; + apps::AppServiceProxy* proxy = + apps::AppServiceProxyFactory::GetForProfile(profile); + proxy->FlushMojoCallsForTesting(); + proxy->AppCapabilityAccessCache().ForOneApp( + app_id, + [&accessing_microphone](const apps::CapabilityAccessUpdate& update) { + accessing_microphone = update.Microphone(); + }); + return accessing_microphone == apps::mojom::OptionalBool::kTrue; +} + +class FakeMediaObserver : public MediaCaptureDevicesDispatcher::Observer { + public: + explicit FakeMediaObserver(base::OnceClosure done_closure) + : done_closure_(std::move(done_closure)) { + media_dispatcher_.Observe(MediaCaptureDevicesDispatcher::GetInstance()); + } + ~FakeMediaObserver() override = default; + + // MediaCaptureDevicesDispatcher::Observer: + void OnRequestUpdate(int render_process_id, + int render_frame_id, + blink::mojom::MediaStreamType stream_type, + const content::MediaRequestState state) override { + if (!done_closure_.is_null()) + std::move(done_closure_).Run(); + content::RunAllTasksUntilIdle(); + } + + private: + base::OnceClosure done_closure_; + + base::ScopedObservation<MediaCaptureDevicesDispatcher, + MediaCaptureDevicesDispatcher::Observer> + media_dispatcher_{this}; +}; + +void MediaRequestChange(int render_process_id, + int render_frame_id, + const GURL& url, + blink::mojom::MediaStreamType stream_type, + content::MediaRequestState state) { + if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)) { + base::RunLoop run_loop; + FakeMediaObserver fake_observer(run_loop.QuitClosure()); + + content::GetIOThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&MediaRequestChange, render_process_id, + render_frame_id, url, stream_type, state)); + run_loop.Run(); + content::RunAllTasksUntilIdle(); + return; + } + + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + MediaCaptureDevicesDispatcher::GetInstance()->OnMediaRequestStateChanged( + render_process_id, render_frame_id, 0, url, stream_type, state); +} + +void MediaRequestChangeForWebContent(content::WebContents* web_content, + const GURL& url, + blink::mojom::MediaStreamType stream_type, + content::MediaRequestState state) { + ASSERT_TRUE(web_content); + MediaRequestChange(web_content->GetMainFrame()->GetProcess()->GetID(), + web_content->GetMainFrame()->GetRoutingID(), url, + stream_type, state); +} + +} // namespace + +class MediaAccessExtensionAppsTest : public extensions::PlatformAppBrowserTest { + public: + void SetUpOnMainThread() override { + extensions::PlatformAppBrowserTest::SetUpOnMainThread(); + + ASSERT_TRUE(embedded_test_server()->Start()); + } + + void UninstallApp(const std::string& app_id) { + apps::AppServiceProxy* proxy = + apps::AppServiceProxyFactory::GetForProfile(profile()); + proxy->UninstallSilently(app_id, apps::mojom::UninstallSource::kUser); + proxy->FlushMojoCallsForTesting(); + } + + GURL GetUrl1() { + return embedded_test_server()->GetURL("app.com", "/ssl/google.html"); + } + + GURL GetUrl2() { + return embedded_test_server()->GetURL("app.com", "/google/google.html"); + } + + content::WebContents* GetWebContents() { + return browser()->tab_strip_model()->GetActiveWebContents(); + } + + base::WeakPtr<MediaAccessExtensionAppsTest> GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); + } + + private: + base::WeakPtrFactory<MediaAccessExtensionAppsTest> weak_ptr_factory_{this}; +}; + +IN_PROC_BROWSER_TEST_F(MediaAccessExtensionAppsTest, + RequestAccessingForChromeInTabs) { + ui_test_utils::NavigateToURL(browser(), GetUrl1()); + + content::WebContents* web_content1 = GetWebContents(); + // Request accessing the camera for |web_content1|. + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_FALSE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + AddBlankTabAndShow(browser()); + ui_test_utils::NavigateToURL(browser(), GetUrl2()); + content::WebContents* web_content2 = GetWebContents(); + // Request accessing the microphone for |web_content2|. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_TRUE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + // Stop accessing the camera for |web_content1|. + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_FALSE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_TRUE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + // Stop accessing the microphone for |web_content2|. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_FALSE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_FALSE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); +} + +IN_PROC_BROWSER_TEST_F(MediaAccessExtensionAppsTest, + RequestAccessingForChromeInNewBrowsers) { + Browser* browser1 = + Browser::Create(Browser::CreateParams(browser()->profile(), true)); + ASSERT_TRUE(browser1); + ASSERT_NE(browser(), browser1); + + AddBlankTabAndShow(browser1); + ui_test_utils::NavigateToURL(browser1, GetUrl1()); + content::WebContents* web_content1 = + browser1->tab_strip_model()->GetActiveWebContents(); + int render_process_id1 = web_content1->GetMainFrame()->GetProcess()->GetID(); + int render_frame_id1 = web_content1->GetMainFrame()->GetRoutingID(); + // Request accessing the camera and the microphone for |web_content1|. + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_TRUE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + AddBlankTabAndShow(browser1); + ui_test_utils::NavigateToURL(browser1, GetUrl2()); + content::WebContents* web_content2 = + browser1->tab_strip_model()->GetActiveWebContents(); + int render_process_id2 = web_content2->GetMainFrame()->GetProcess()->GetID(); + int render_frame_id2 = web_content2->GetMainFrame()->GetRoutingID(); + // Request accessing the camera and the microphone for |web_content2|. + MediaRequestChangeForWebContent( + web_content2, GetUrl2(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content2, GetUrl2(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_TRUE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + // Close the tab for |web_content2|. + browser1->tab_strip_model()->CloseSelectedTabs(); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_TRUE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + MediaRequestChange(render_process_id2, render_frame_id2, GetUrl2(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + MediaRequestChange(render_process_id2, render_frame_id2, GetUrl2(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_TRUE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + // Close the tab for |web_content1|. + browser1->tab_strip_model()->CloseSelectedTabs(); + EXPECT_FALSE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_FALSE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + MediaRequestChange(render_process_id1, render_frame_id1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + MediaRequestChange(render_process_id1, render_frame_id1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_FALSE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_FALSE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); +} + +IN_PROC_BROWSER_TEST_F(MediaAccessExtensionAppsTest, + RequestAccessingForPlatformApp) { + const Extension* extension = + LoadAndLaunchPlatformApp("context_menu", "Launched"); + ASSERT_TRUE(extension); + + content::WebContents* web_contents = GetFirstAppWindowWebContents(); + ASSERT_TRUE(web_contents); + + // Request accessing the camera for |web_contents|. + MediaRequestChangeForWebContent( + web_contents, web_contents->GetURL(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + + EXPECT_TRUE(AccessingCamera(browser()->profile(), extension->id())); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), extension->id())); + + // Request accessing the microphone for |web_contents|. + MediaRequestChangeForWebContent( + web_contents, web_contents->GetURL(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + + EXPECT_TRUE(AccessingCamera(browser()->profile(), extension->id())); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), extension->id())); + + // Stop accessing the microphone for |web_contents|. + MediaRequestChangeForWebContent( + web_contents, web_contents->GetURL(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + + EXPECT_TRUE(AccessingCamera(browser()->profile(), extension->id())); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), extension->id())); + + // Stop accessing the camera for |web_contents|. + MediaRequestChangeForWebContent( + web_contents, web_contents->GetURL(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + + EXPECT_FALSE(AccessingCamera(browser()->profile(), extension->id())); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), extension->id())); +} + +IN_PROC_BROWSER_TEST_F(MediaAccessExtensionAppsTest, + RequestAccessingForHostApp) { + const Extension* extension = + LoadExtension(test_data_dir_.AppendASCII("app1")); + ASSERT_TRUE(extension); + + // Navigate to the app's launch URL. + auto url = extensions::AppLaunchInfo::GetLaunchWebURL(extension); + ui_test_utils::NavigateToURL(browser(), url); + + content::WebContents* web_content1 = + browser()->tab_strip_model()->GetActiveWebContents(); + ASSERT_TRUE(web_content1); + + // Request accessing the camera and microphone for |web_contents|. + MediaRequestChangeForWebContent( + web_content1, url, blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content1, url, blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + + EXPECT_TRUE(AccessingCamera(browser()->profile(), extension->id())); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), extension->id())); + + AddBlankTabAndShow(browser()); + ui_test_utils::NavigateToURL(browser(), GetUrl1()); + content::WebContents* web_content2 = GetWebContents(); + + // Request accessing the camera for |web_content2|. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + + EXPECT_TRUE(AccessingCamera(browser()->profile(), extension->id())); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), extension->id())); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_FALSE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + // Uninstall the app. + std::string app_id = extension->id(); + UninstallApp(app_id); + + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id)); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id)); + EXPECT_TRUE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_FALSE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); + + // Request accessing the camera for |web_content2|. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id)); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id)); + EXPECT_FALSE( + AccessingCamera(browser()->profile(), extension_misc::kChromeAppId)); + EXPECT_FALSE( + AccessingMicrophone(browser()->profile(), extension_misc::kChromeAppId)); +} + +class MediaAccessWebAppsTest : public web_app::WebAppControllerBrowserTest { + public: + MediaAccessWebAppsTest() = default; + ~MediaAccessWebAppsTest() override = default; + + std::string CreateWebApp(const GURL& url) const { + auto web_app_info = std::make_unique<WebApplicationInfo>(); + web_app_info->start_url = url; + web_app_info->scope = url; + return web_app::InstallWebApp(browser()->profile(), + std::move(web_app_info)); + } + + void UninstallWebApp(const std::string& app_id) const { + web_app::UninstallWebApp(browser()->profile(), app_id); + apps::AppServiceProxyFactory::GetForProfile(browser()->profile()) + ->FlushMojoCallsForTesting(); + } + + GURL GetUrl1() { + return https_server()->GetURL("app.com", "/ssl/google.html"); + } + + GURL GetUrl2() { + return https_server()->GetURL("app.com", "/google/google.html"); + } + + content::WebContents* GetWebContents() { + return browser()->tab_strip_model()->GetActiveWebContents(); + } + + base::WeakPtr<MediaAccessWebAppsTest> GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); + } + + private: + base::WeakPtrFactory<MediaAccessWebAppsTest> weak_ptr_factory_{this}; +}; + +IN_PROC_BROWSER_TEST_F(MediaAccessWebAppsTest, RequestAccessingCamera) { + std::string app_id = CreateWebApp(GetUrl1()); + + // Launch |app_id| in a new tab. + web_app::LaunchWebAppBrowser(browser()->profile(), app_id); + web_app::NavigateToURLAndWait(browser(), GetUrl1()); + + // Request accessing the camera for |app_id| in the new tab. + content::WebContents* web_content1 = GetWebContents(); + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id)); + + // Launch |app_id| in a new window. + content::WebContents* web_content2 = OpenApplication(app_id); + Browser* app_browser = BrowserList::GetInstance()->GetLastActive(); + ASSERT_TRUE(app_browser); + ASSERT_NE(browser(), app_browser); + + // Request accessing the camera for |app_id| in the new window. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id)); + + // Stop accessing the camera for |app_id| in the tab. + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id)); + + // Stop accessing the camera for |app_id| in the window. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id)); + + web_app::CloseAndWait(app_browser); + web_app::CloseAndWait(browser()); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id)); +} + +IN_PROC_BROWSER_TEST_F(MediaAccessWebAppsTest, RequestAccessingMicrophone) { + std::string app_id = CreateWebApp(GetUrl1()); + + // Launch |app_id| in a new tab. + web_app::LaunchWebAppBrowser(browser()->profile(), app_id); + web_app::NavigateToURLAndWait(browser(), GetUrl1()); + + // Request accessing the camera for |app_id| in the new tab. + content::WebContents* web_content1 = GetWebContents(); + int render_process_id1 = web_content1->GetMainFrame()->GetProcess()->GetID(); + int render_frame_id1 = web_content1->GetMainFrame()->GetRoutingID(); + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id)); + + // Launch |app_id| in a new window. + content::WebContents* web_content2 = OpenApplication(app_id); + int render_process_id2 = web_content2->GetMainFrame()->GetProcess()->GetID(); + int render_frame_id2 = web_content2->GetMainFrame()->GetRoutingID(); + Browser* app_browser = BrowserList::GetInstance()->GetLastActive(); + ASSERT_TRUE(app_browser); + ASSERT_NE(browser(), app_browser); + + // Request accessing the camera for |app_id| in the new window. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id)); + + // Close browsers. + web_app::CloseAndWait(app_browser); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id)); + + // Stop accessing the camera for |app_id| in the tab. + MediaRequestChange(render_process_id1, render_frame_id1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id)); + + // Stop accessing the camera for |app_id| in the window. + MediaRequestChange(render_process_id2, render_frame_id2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id)); +} + +IN_PROC_BROWSER_TEST_F(MediaAccessWebAppsTest, RemoveApp) { + std::string app_id = CreateWebApp(GetUrl1()); + + // Launch |app_id| in a new tab. + web_app::LaunchWebAppBrowser(browser()->profile(), app_id); + web_app::NavigateToURLAndWait(browser(), GetUrl1()); + + // Request accessing the camera and the microphone for |app_id| in the new + // tab. + content::WebContents* web_content1 = GetWebContents(); + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id)); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id)); + + // Launch |app_id| in a new window. + content::WebContents* web_content2 = OpenApplication(app_id); + Browser* app_browser = BrowserList::GetInstance()->GetLastActive(); + ASSERT_TRUE(app_browser); + ASSERT_NE(browser(), app_browser); + + // Request accessing the camera and the microphone for |app_id| in the new + // window. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id)); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id)); + + UninstallWebApp(app_id); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id)); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id)); + + CreateWebApp(GetUrl1()); + + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id)); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id)); +} + +IN_PROC_BROWSER_TEST_F(MediaAccessWebAppsTest, TwoApps) { + std::string app_id1 = CreateWebApp(GetUrl1()); + + // Launch |app_id1| in a new tab. + web_app::LaunchWebAppBrowser(browser()->profile(), app_id1); + web_app::NavigateToURLAndWait(browser(), GetUrl1()); + + // Request accessing the camera and the microphone for |app_id1| in the new + // tab. + content::WebContents* web_content1 = GetWebContents(); + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content1, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id1)); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id1)); + + std::string app_id2 = CreateWebApp(GetUrl2()); + + // Launch |app_id2| in a new window. + content::WebContents* web_content2 = OpenApplication(app_id2); + Browser* app_browser = BrowserList::GetInstance()->GetLastActive(); + ASSERT_TRUE(app_browser); + ASSERT_NE(browser(), app_browser); + + // Request accessing the camera and the microphone for |app_id2| in the new + // window. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id2)); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id2)); + + UninstallWebApp(app_id1); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id1)); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id1)); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id2)); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id2)); + + // Stop accessing the camera and the microphone for |app_id2|. + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + MediaRequestChangeForWebContent( + web_content2, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_CLOSING); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id2)); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id2)); + + // Navigate to Url1, and check |app_id1| is not accessing the camera or the + // microphone, because it has been removed. + ui_test_utils::NavigateToURL(browser(), GetUrl1()); + auto* web_content3 = GetWebContents(); + MediaRequestChangeForWebContent( + web_content3, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content3, GetUrl1(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id1)); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id1)); + + // Navigate to Url2, and check |app_id2| is accessing the camera and the + // microphone. + ui_test_utils::NavigateToURL(browser(), GetUrl2()); + auto* web_content4 = GetWebContents(); + MediaRequestChangeForWebContent( + web_content4, GetUrl2(), + blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + MediaRequestChangeForWebContent( + web_content4, GetUrl2(), + blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE, + content::MEDIA_REQUEST_STATE_DONE); + EXPECT_TRUE(AccessingMicrophone(browser()->profile(), app_id2)); + EXPECT_TRUE(AccessingCamera(browser()->profile(), app_id2)); + EXPECT_FALSE(AccessingCamera(browser()->profile(), app_id1)); + EXPECT_FALSE(AccessingMicrophone(browser()->profile(), app_id1)); +}
diff --git a/chrome/browser/apps/app_service/media_requests.cc b/chrome/browser/apps/app_service/media_requests.cc index e424deb..bd30e50 100644 --- a/chrome/browser/apps/app_service/media_requests.cc +++ b/chrome/browser/apps/app_service/media_requests.cc
@@ -24,6 +24,21 @@ MediaRequests::~MediaRequests() = default; +bool MediaRequests::IsNewRequest(const std::string& app_id, + const content::WebContents* web_contents, + const content::MediaRequestState state) { + if (state != content::MEDIA_REQUEST_STATE_DONE) { + return false; + } + + DCHECK(web_contents); + + return !HasRequest(app_id, web_contents, + app_id_to_web_contents_for_camera_) && + !HasRequest(app_id, web_contents, + app_id_to_web_contents_for_microphone_); +} + AccessingRequest MediaRequests::UpdateRequests( const std::string& app_id, const content::WebContents* web_contents, @@ -64,6 +79,29 @@ MaybeRemoveRequest(app_id, app_id_to_web_contents_for_microphone_)); } +AccessingRequest MediaRequests::OnWebContentsDestroyed( + const std::string& app_id, + const content::WebContents* web_contents) { + return AccessingRequest( + MaybeRemoveRequest(app_id, web_contents, + app_id_to_web_contents_for_camera_), + MaybeRemoveRequest(app_id, web_contents, + app_id_to_web_contents_for_microphone_)); +} + +bool MediaRequests::HasRequest( + const std::string& app_id, + const content::WebContents* web_contents, + const std::map<std::string, std::set<const content::WebContents*>>& + app_id_to_web_contents) { + auto it = app_id_to_web_contents.find(app_id); + if (it != app_id_to_web_contents.end() && + it->second.find(web_contents) != it->second.end()) { + return true; + } + return false; +} + base::Optional<bool> MediaRequests::MaybeAddRequest( const std::string& app_id, const content::WebContents* web_contents,
diff --git a/chrome/browser/apps/app_service/media_requests.h b/chrome/browser/apps/app_service/media_requests.h index 9df1967..7ab2b788 100644 --- a/chrome/browser/apps/app_service/media_requests.h +++ b/chrome/browser/apps/app_service/media_requests.h
@@ -39,6 +39,13 @@ MediaRequests(const MediaRequests&) = delete; MediaRequests& operator=(const MediaRequests&) = delete; + // Returns true if there is no existing access request of both camera and + // microphone for |app_id| and |web_contents|, and |state| is a new request. + // Otherwise, return false. + bool IsNewRequest(const std::string& app_id, + const content::WebContents* web_contents, + const content::MediaRequestState state); + // Updates |app_id_to_web_contents_for_camera_| and // |app_id_to_web_contents_for_microphone_| to record the media accessing // requests for |app_id|. Returns the update result AccessingRequest. @@ -53,7 +60,22 @@ // AccessingRequest.camera or AccessingRequest.microphone. AccessingRequest RemoveRequests(const std::string& app_id); + // Invoked when |web_contents| is being destroyed. Removes requests in + // |app_id_to_web_contents_for_camera_| and + // |app_id_to_web_contents_for_microphone_| for the given |app_id| and + // |web_contents|. If there are media accessing requests for |app_id|, returns + // false for AccessingRequest.camera or AccessingRequest.microphone. + AccessingRequest OnWebContentsDestroyed( + const std::string& app_id, + const content::WebContents* web_contents); + private: + bool HasRequest( + const std::string& app_id, + const content::WebContents* web_contents, + const std::map<std::string, std::set<const content::WebContents*>>& + app_id_to_web_contents); + base::Optional<bool> MaybeAddRequest( const std::string& app_id, const content::WebContents* web_contents,
diff --git a/chrome/browser/apps/app_service/web_apps_chromeos.cc b/chrome/browser/apps/app_service/web_apps_chromeos.cc index c37740a..87b1341 100644 --- a/chrome/browser/apps/app_service/web_apps_chromeos.cc +++ b/chrome/browser/apps/app_service/web_apps_chromeos.cc
@@ -471,12 +471,40 @@ return; } + if (media_requests_.IsNewRequest(app_id.value(), web_contents, state)) { + content::WebContentsUserData<AppWebContentsData>::CreateForWebContents( + web_contents, this); + } + auto result = media_requests_.UpdateRequests(app_id.value(), web_contents, stream_type, state); ModifyCapabilityAccess(subscribers(), app_id.value(), result.camera, result.microphone); } +void WebAppsChromeOs::OnWebContentsDestroyed( + content::WebContents* web_contents) { + DCHECK(web_contents); + + base::Optional<web_app::AppId> app_id = + web_app::FindInstalledAppWithUrlInScope( + profile(), web_contents->GetLastCommittedURL(), + /*window_only=*/false); + if (!app_id.has_value()) { + return; + } + + const web_app::WebApp* web_app = GetWebApp(app_id.value()); + if (!web_app || !Accepts(app_id.value())) { + return; + } + + auto result = + media_requests_.OnWebContentsDestroyed(app_id.value(), web_contents); + ModifyCapabilityAccess(subscribers(), app_id.value(), result.camera, + result.microphone); +} + void WebAppsChromeOs::OnNotificationDisplayed( const message_center::Notification& notification, const NotificationCommon::Metadata* const metadata) {
diff --git a/chrome/browser/apps/app_service/web_apps_chromeos.h b/chrome/browser/apps/app_service/web_apps_chromeos.h index 8644a9d..485418e 100644 --- a/chrome/browser/apps/app_service/web_apps_chromeos.h +++ b/chrome/browser/apps/app_service/web_apps_chromeos.h
@@ -11,6 +11,7 @@ #include "base/scoped_observation.h" #include "base/scoped_observer.h" #include "chrome/browser/apps/app_service/app_notifications.h" +#include "chrome/browser/apps/app_service/app_web_contents_data.h" #include "chrome/browser/apps/app_service/icon_key_util.h" #include "chrome/browser/apps/app_service/media_requests.h" #include "chrome/browser/apps/app_service/paused_apps.h" @@ -40,7 +41,8 @@ class WebAppsChromeOs : public WebAppsBase, public ArcAppListPrefs::Observer, public NotificationDisplayService::Observer, - public MediaCaptureDevicesDispatcher::Observer { + public MediaCaptureDevicesDispatcher::Observer, + public AppWebContentsData::Client { public: WebAppsChromeOs(const mojo::Remote<apps::mojom::AppService>& app_service, Profile* profile, @@ -114,6 +116,9 @@ blink::mojom::MediaStreamType stream_type, const content::MediaRequestState state) override; + // AppWebContentsData::Observer: + void OnWebContentsDestroyed(content::WebContents* contents) override; + // NotificationDisplayService::Observer overrides. void OnNotificationDisplayed( const message_center::Notification& notification,
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc b/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc index 8ea9a061..8644fb4 100644 --- a/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc +++ b/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc
@@ -149,16 +149,6 @@ if (!navigate_from_link()) return base::nullopt; - bool tabbed_web_apps = - base::FeatureList::IsEnabled(features::kDesktopPWAsTabStrip); - bool tabbed_link_capturing = - base::FeatureList::IsEnabled(features::kDesktopPWAsTabStripLinkCapturing); - bool link_capturing = - base::FeatureList::IsEnabled(blink::features::kWebAppEnableLinkCapturing); - - if (!link_capturing && (!tabbed_web_apps || !tabbed_link_capturing)) - return base::nullopt; - Profile* const profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); web_app::WebAppProviderBase* provider = @@ -172,11 +162,6 @@ if (!app_id) return base::nullopt; - bool app_in_tabbed_mode = - provider->registrar().IsInExperimentalTabbedWindowMode(*app_id); - if (!link_capturing && !app_in_tabbed_mode) - return base::nullopt; - auto* tab_helper = web_app::WebAppTabHelperBase::FromWebContents(web_contents); if (tab_helper && tab_helper->GetAppId() == *app_id) { @@ -184,17 +169,6 @@ return base::nullopt; } - Browser* browser = chrome::FindBrowserWithWebContents(web_contents); - if (!browser) { - // This is a middle click open in new tab action; do not capture. - return base::nullopt; - } - - if (web_app::AppBrowserController::IsForWebApp(browser, *app_id)) { - // Already in the app window; navigation already captured. - return base::nullopt; - } - blink::mojom::CaptureLinks capture_links = provider->registrar() .AsWebAppRegistrar() ->GetAppById(*app_id) @@ -203,6 +177,10 @@ // Experimental tabbed web app link capturing behaves like new-client. // This will be removed once we phase out kDesktopPWAsTabStripLinkCapturing in // favor of kWebAppEnableLinkCapturing. + bool app_in_tabbed_mode = + provider->registrar().IsInExperimentalTabbedWindowMode(*app_id); + bool tabbed_link_capturing = + base::FeatureList::IsEnabled(features::kDesktopPWAsTabStripLinkCapturing); if (capture_links == blink::mojom::CaptureLinks::kUndefined && app_in_tabbed_mode && tabbed_link_capturing) { capture_links = blink::mojom::CaptureLinks::kNewClient; @@ -213,25 +191,39 @@ case blink::mojom::CaptureLinks::kNone: return base::nullopt; - case blink::mojom::CaptureLinks::kExistingClientNavigate: { - for (Browser* open_browser : *BrowserList::GetInstance()) { - if (web_app::AppBrowserController::IsForWebApp(open_browser, *app_id)) { - open_browser->OpenURL( - content::OpenURLParams::FromNavigationHandle(handle)); - - // If |web_contents| hasn't loaded yet or has only loaded about:blank - // we should remove it to avoid leaving behind a blank tab. - if (tab_helper && !tab_helper->HasLoadedNonAboutBlankPage()) - web_contents->Close(); - - return content::NavigationThrottle::CANCEL_AND_IGNORE; - } - } - // Fall back to new-client if there are no existing clients to navigate. - FALLTHROUGH; - } - + case blink::mojom::CaptureLinks::kExistingClientNavigate: case blink::mojom::CaptureLinks::kNewClient: { + Browser* browser = chrome::FindBrowserWithWebContents(web_contents); + if (!browser) { + // This is a middle click open in new tab action; do not capture. + return base::nullopt; + } + + if (web_app::AppBrowserController::IsForWebApp(browser, *app_id)) { + // Already in the app window; navigation already captured. + return base::nullopt; + } + + if (capture_links == + blink::mojom::CaptureLinks::kExistingClientNavigate) { + for (Browser* open_browser : *BrowserList::GetInstance()) { + if (web_app::AppBrowserController::IsForWebApp(open_browser, + *app_id)) { + open_browser->OpenURL( + content::OpenURLParams::FromNavigationHandle(handle)); + + // If |web_contents| hasn't loaded yet or has only loaded + // about:blank we should remove it to avoid leaving behind a blank + // tab. + if (tab_helper && !tab_helper->HasLoadedNonAboutBlankPage()) + web_contents->Close(); + + return content::NavigationThrottle::CANCEL_AND_IGNORE; + } + } + // No browser found; fallthrough to new-client behaviour. + } + // If |web_contents| hasn't loaded yet or has only loaded about:blank we // should reparent it into the app window to avoid leaving behind a blank // tab.
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc index 6ed7c28b3..c0c5fc4 100644 --- a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc
@@ -727,7 +727,9 @@ sm_.Replay(); } -IN_PROC_BROWSER_TEST_P(SpokenFeedbackTest, ChromeVoxNavigateAndSelect) { +// TODO(crbug.com/1177140) Re-enable test +IN_PROC_BROWSER_TEST_P(SpokenFeedbackTest, + DISABLED_ChromeVoxNavigateAndSelect) { EnableChromeVox(); sm_.Call([this]() {
diff --git a/chrome/browser/cart/cart_handler.cc b/chrome/browser/cart/cart_handler.cc index 72c86dd..e4876b12 100644 --- a/chrome/browser/cart/cart_handler.cc +++ b/chrome/browser/cart/cart_handler.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "chrome/browser/cart/cart_handler.h" +#include "base/metrics/histogram_functions.h" #include "chrome/browser/cart/cart_db_content.pb.h" #include "chrome/browser/cart/cart_service.h" #include "chrome/browser/cart/cart_service_factory.h" @@ -91,3 +92,13 @@ GetWarmWelcomeVisibleCallback callback) { std::move(callback).Run(cart_service_->ShouldShowWelcomSurface()); } + +// TODO(crbug.com/1174281): Below metrics collection can be moved to JS to avoid +// cross-process calls. +void CartHandler::OnCartItemClicked(uint32_t index) { + base::UmaHistogramCounts100("NewTabPage.Carts.ClickCart", index); +} + +void CartHandler::OnModuleCreated(uint32_t count) { + base::UmaHistogramCounts100("NewTabPage.Carts.CartCount", count); +}
diff --git a/chrome/browser/cart/cart_handler.h b/chrome/browser/cart/cart_handler.h index ea4c8e8..f961dcb 100644 --- a/chrome/browser/cart/cart_handler.h +++ b/chrome/browser/cart/cart_handler.h
@@ -32,6 +32,8 @@ void RestoreRemovedCart(const GURL& cart_url, RestoreRemovedCartCallback callback) override; void GetWarmWelcomeVisible(GetWarmWelcomeVisibleCallback callback) override; + void OnCartItemClicked(uint32_t index) override; + void OnModuleCreated(uint32_t count) override; private: void GetCartDataCallback(GetMerchantCartsCallback callback,
diff --git a/chrome/browser/cart/cart_handler_unittest.cc b/chrome/browser/cart/cart_handler_unittest.cc index 8171de0..980134ff 100644 --- a/chrome/browser/cart/cart_handler_unittest.cc +++ b/chrome/browser/cart/cart_handler_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "chrome/browser/cart/cart_handler.h" +#include "base/test/metrics/histogram_tester.h" #include "chrome/browser/cart/cart_db_content.pb.h" #include "chrome/browser/cart/cart_service.h" #include "chrome/browser/cart/cart_service_factory.h" @@ -123,6 +124,7 @@ TestingProfile profile_; std::unique_ptr<CartHandler> handler_; CartService* service_; + base::HistogramTester histogram_tester_; }; // Verifies the hide status is flipped by hiding and restoring. @@ -330,3 +332,29 @@ std::move(carts_with_product))); run_loop[10].Run(); } + +// Test cart click index histogram is properly recorded. +TEST_F(CartHandlerTest, TestOnCartItemClicked) { + handler_->OnCartItemClicked(3); + ASSERT_EQ(1, + histogram_tester_.GetBucketCount("NewTabPage.Carts.ClickCart", 3)); + handler_->OnCartItemClicked(2); + ASSERT_EQ(1, + histogram_tester_.GetBucketCount("NewTabPage.Carts.ClickCart", 2)); + handler_->OnCartItemClicked(3); + ASSERT_EQ(2, + histogram_tester_.GetBucketCount("NewTabPage.Carts.ClickCart", 3)); +} + +// Test cart item count histogram is properly recorded. +TEST_F(CartHandlerTest, TestOnModuleCreated) { + handler_->OnModuleCreated(0); + ASSERT_EQ(1, + histogram_tester_.GetBucketCount("NewTabPage.Carts.CartCount", 0)); + handler_->OnModuleCreated(1); + ASSERT_EQ(1, + histogram_tester_.GetBucketCount("NewTabPage.Carts.CartCount", 1)); + handler_->OnModuleCreated(0); + ASSERT_EQ(2, + histogram_tester_.GetBucketCount("NewTabPage.Carts.CartCount", 0)); +}
diff --git a/chrome/browser/cart/chrome_cart.mojom b/chrome/browser/cart/chrome_cart.mojom index f200d23..6639f71 100644 --- a/chrome/browser/cart/chrome_cart.mojom +++ b/chrome/browser/cart/chrome_cart.mojom
@@ -42,4 +42,8 @@ RestoreRemovedCart(url.mojom.Url cart_url) => (bool success); // Returns whether to show welcome surface in the module. GetWarmWelcomeVisible() => (bool visible); + // Logs that cart at position |index| has been clicked. + OnCartItemClicked(uint32 index); + // Logs the number of carts when module is created. + OnModuleCreated(uint32 count); };
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 16196723..6cc1229 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2128,7 +2128,7 @@ #else bool enable_crash_reporter = false; if (crash_reporter::IsCrashpadEnabled()) { - command_line->AppendSwitch(crash_reporter::kEnableCrashpad); + command_line->AppendSwitch(switches::kEnableCrashpad); enable_crash_reporter = true; int fd;
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc index 054dc8ab..6ff5287 100644 --- a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc +++ b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc
@@ -336,7 +336,7 @@ // Grant access to this particular file to target extension. This will // ensure that the target extension can access only this FS entry and // prevent from traversing FS hierarchy upward. - external_backend->GrantFileAccessToExtension(extension_id_or_file_app_id(), + external_backend->GrantFileAccessToExtension(extension_id(), file_definition.virtual_path); // Grant access to the selected file to target extensions render view process. @@ -344,8 +344,7 @@ render_frame_host()->GetProcess()->GetID(), full_path); file_manager::util::ConvertFileDefinitionToEntryDefinition( - chrome_details.GetProfile(), extension_id_or_file_app_id(), - file_definition, + chrome_details.GetProfile(), extension_id(), file_definition, base::BindOnce( &FileBrowserHandlerInternalSelectFileFunction::RespondEntryDefinition, this));
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_base.h b/chrome/browser/chromeos/extensions/file_manager/private_api_base.h index be25965a..28423ff3 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_base.h +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_base.h
@@ -8,7 +8,6 @@ #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_BASE_H_ #include "base/time/time.h" -#include "chrome/browser/chromeos/extensions/file_manager/files_extension_function.h" #include "extensions/browser/extension_function.h" namespace extensions { @@ -21,7 +20,7 @@ // set_log_on_completion(true) to enable it, if they want. However, even if // the logging is turned off, a warning is emitted when a function call is // very slow. See the implementation of OnResponded() for details. -class LoggedExtensionFunction : public FilesExtensionFunction { +class LoggedExtensionFunction : public ExtensionFunction { public: LoggedExtensionFunction();
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc index 40f945d42..3363f02b 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
@@ -397,8 +397,7 @@ if (profile->IsOffTheRecord()) continue; storage::FileSystemContext* const context = - util::GetStoragePartitionForExtensionId(extension_id_or_file_app_id(), - profile) + util::GetStoragePartitionForExtensionId(extension_id(), profile) ->GetFileSystemContext(); for (const auto& url : params->entry_urls) { const storage::FileSystemURL file_system_url = @@ -409,7 +408,7 @@ file_system_url.mount_type() != storage::kFileSystemTypeExternal) { continue; } - backend->GrantFileAccessToExtension(extension_id_or_file_app_id(), + backend->GrantFileAccessToExtension(extension_id(), file_system_url.virtual_path()); content::ChildProcessSecurityPolicy::GetInstance() ->GrantCreateReadWriteFile(render_frame_host()->GetProcess()->GetID(), @@ -526,7 +525,7 @@ &PostNotificationCallbackTaskToUIThread, base::BindRepeating( &file_manager::EventRouter::OnWatcherManagerNotification, - event_router, file_system_url, extension_id_or_file_app_id()))); + event_router, file_system_url, extension_id()))); } void FileManagerPrivateInternalAddFileWatchFunction:: @@ -538,8 +537,7 @@ // Obsolete. Fallback code if storage::WatcherManager is not implemented. event_router->AddFileWatch( - file_system_url.path(), file_system_url.virtual_path(), - extension_id_or_file_app_id(), + file_system_url.path(), file_system_url.virtual_path(), extension_id(), base::BindOnce(&FileWatchFunctionBase::RespondWith, this)); } @@ -568,8 +566,7 @@ DCHECK(event_router); // Obsolete. Fallback code if storage::WatcherManager is not implemented. - event_router->RemoveFileWatch(file_system_url.path(), - extension_id_or_file_app_id()); + event_router->RemoveFileWatch(file_system_url.path(), extension_id()); RespondWith(true); } @@ -1065,8 +1062,8 @@ FileDefinition file_definition; const bool result = file_manager::util::ConvertAbsoluteFilePathToRelativeFileSystemPath( - chrome_details.GetProfile(), extension_id_or_file_app_id(), - file_system_url.path(), &file_definition.virtual_path); + chrome_details.GetProfile(), extension_id(), file_system_url.path(), + &file_definition.virtual_path); if (!result) continue; // The API only supports isolated files. It still works for directories, @@ -1076,7 +1073,7 @@ } file_manager::util::ConvertFileDefinitionListToEntryDefinitionList( - chrome_details.GetProfile(), extension_id_or_file_app_id(), + chrome_details.GetProfile(), extension_id(), file_definition_list, // Safe, since copied internally. base::BindOnce( &FileManagerPrivateInternalResolveIsolatedEntriesFunction:: @@ -1305,8 +1302,7 @@ GURL url; base::FilePath my_files_virtual_path; if (!file_manager::util::ConvertAbsoluteFilePathToFileSystemUrl( - chrome_details_.GetProfile(), my_files_path, - extension_id_or_file_app_id(), &url) || + chrome_details_.GetProfile(), my_files_path, extension_id(), &url) || !storage::ExternalMountPoints::GetSystemInstance()->GetVirtualPath( my_files_path, &my_files_virtual_path)) { Respond(Error("My files is not mounted"));
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h index 506e5a2..0def3ac 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h
@@ -19,7 +19,6 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/chromeos/extensions/file_manager/file_stream_string_converter.h" -#include "chrome/browser/chromeos/extensions/file_manager/files_extension_function.h" #include "chrome/browser/chromeos/extensions/file_manager/private_api_base.h" #include "chrome/browser/extensions/chrome_extension_function_details.h" #include "components/drive/file_errors.h" @@ -73,7 +72,7 @@ // Grants R/W permissions to profile-specific directories (Drive, Downloads) // from other profiles. -class FileManagerPrivateGrantAccessFunction : public FilesExtensionFunction { +class FileManagerPrivateGrantAccessFunction : public ExtensionFunction { public: FileManagerPrivateGrantAccessFunction();
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc index c0bc776..727c235 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
@@ -801,11 +801,11 @@ continue; } auto entry = std::make_unique<base::DictionaryValue>(); - entry->SetString("fileSystemRoot", - storage::GetExternalFileSystemRootURIString( - extensions::Extension::GetBaseURLFromExtensionId( - extension_id_or_file_app_id()), - mount_name)); + entry->SetString( + "fileSystemRoot", + storage::GetExternalFileSystemRootURIString( + extensions::Extension::GetBaseURLFromExtensionId(extension_id()), + mount_name)); entry->SetString("fileSystemName", file_system_name); entry->SetString("fileFullPath", full_path); // All shared paths should be directories. Even if this is not true, @@ -1043,8 +1043,7 @@ model->GetRecentFiles( file_system_context.get(), - Extension::GetBaseURLFromExtensionId(extension_id_or_file_app_id()), - file_type, + Extension::GetBaseURLFromExtensionId(extension_id()), file_type, base::BindOnce( &FileManagerPrivateInternalGetRecentFilesFunction::OnGetRecentFiles, this, params->restriction)); @@ -1068,14 +1067,14 @@ // Recent file system only lists regular files, not directories. file_definition.is_directory = false; if (file_manager::util::ConvertAbsoluteFilePathToRelativeFileSystemPath( - chrome_details_.GetProfile(), extension_id_or_file_app_id(), - file.url().path(), &file_definition.virtual_path)) { + chrome_details_.GetProfile(), extension_id(), file.url().path(), + &file_definition.virtual_path)) { file_definition_list.emplace_back(std::move(file_definition)); } } file_manager::util::ConvertFileDefinitionListToEntryDefinitionList( - chrome_details_.GetProfile(), extension_id_or_file_app_id(), + chrome_details_.GetProfile(), extension_id(), file_definition_list, // Safe, since copied internally. base::BindOnce(&FileManagerPrivateInternalGetRecentFilesFunction:: OnConvertFileDefinitionListToEntryDefinitionList,
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h index 6ac97559..164d9672 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h
@@ -13,7 +13,6 @@ #include <vector> #include "base/files/file.h" -#include "chrome/browser/chromeos/extensions/file_manager/files_extension_function.h" #include "chrome/browser/chromeos/extensions/file_manager/private_api_base.h" #include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h" #include "chrome/browser/extensions/chrome_extension_function_details.h" @@ -356,7 +355,7 @@ // Implements the chrome.fileManagerPrivate.getCrostiniSharedPaths // method. Returns list of file entries. class FileManagerPrivateInternalGetCrostiniSharedPathsFunction - : public FilesExtensionFunction { + : public ExtensionFunction { public: DECLARE_EXTENSION_FUNCTION( "fileManagerPrivateInternal.getCrostiniSharedPaths",
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc index 0e99baa4..c7f79a4 100644 --- a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc +++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
@@ -231,7 +231,8 @@ DISALLOW_COPY_AND_ASSIGN(FilesAppBrowserTest); }; -IN_PROC_BROWSER_TEST_P(FilesAppBrowserTest, Test) { +// TODO(crbug.com/1177117) Re-enable test +IN_PROC_BROWSER_TEST_P(FilesAppBrowserTest, DISABLED_Test) { StartTest(); }
diff --git a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc index 435bfaf..570018ca 100644 --- a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc +++ b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
@@ -467,7 +467,8 @@ } // Test whether google privacy policy can be loaded. -IN_PROC_BROWSER_TEST_F(ArcTermsOfServiceScreenTest, PrivacyPolicy) { +// TODO(crbug.com/1177111) Re-enable test +IN_PROC_BROWSER_TEST_F(ArcTermsOfServiceScreenTest, DISABLED_PrivacyPolicy) { // Privacy policy link is parsed from the footer of the TOS content response. set_serve_tos_with_privacy_policy_footer(true); TriggerArcTosScreen();
diff --git a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc index 56916cfd..4f97610 100644 --- a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc +++ b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
@@ -55,7 +55,7 @@ views::Widget* GetWidget() { return GetWidgetForTesting(); } void ProceedOnWarn(const ui::DataTransferEndpoint& data_dst) { - DlpClipboardNotifier::ProceedOnWarn(GetWidget(), data_dst); + DlpClipboardNotifier::ProceedOnWarn(data_dst, GetWidget()); } };
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notification_helper.cc b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notification_helper.cc deleted file mode 100644 index bd16d336..0000000 --- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notification_helper.cc +++ /dev/null
@@ -1,632 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/chromeos/policy/dlp/dlp_clipboard_notification_helper.h" - -#include <memory> -#include <vector> - -#include "ash/public/cpp/ash_features.h" -#include "ash/public/cpp/style/color_provider.h" -#include "ash/public/cpp/toast_data.h" -#include "ash/public/cpp/toast_manager.h" -#include "ash/public/cpp/window_tree_host_lookup.h" -#include "base/bind.h" -#include "base/strings/string16.h" -#include "base/strings/utf_string_conversions.h" -#include "base/time/time.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_clipboard_bubble_constants.h" -#include "chrome/grit/generated_resources.h" -#include "components/strings/grit/components_strings.h" -#include "components/vector_icons/vector_icons.h" -#include "ui/aura/window_tree_host.h" -#include "ui/base/clipboard/clipboard_monitor.h" -#include "ui/base/data_transfer_policy/data_transfer_endpoint.h" -#include "ui/base/ime/input_method.h" -#include "ui/base/ime/text_input_client.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/compositor/layer_owner.h" -#include "ui/compositor/scoped_layer_animation_settings.h" -#include "ui/display/display.h" -#include "ui/display/screen.h" -#include "ui/gfx/color_palette.h" -#include "ui/gfx/font_list.h" -#include "ui/gfx/geometry/insets.h" -#include "ui/gfx/geometry/size.h" -#include "ui/gfx/paint_vector_icon.h" -#include "ui/gfx/text_utils.h" -#include "ui/views/bubble/bubble_border.h" -#include "ui/views/controls/button/button.h" -#include "ui/views/controls/button/label_button.h" -#include "ui/views/controls/image_view.h" -#include "ui/views/metadata/metadata_header_macros.h" -#include "ui/views/metadata/metadata_impl_macros.h" -#include "ui/views/view.h" -#include "ui/views/widget/widget.h" -#include "url/origin.h" - -namespace policy { - -namespace { - -// The name of the bubble. -constexpr char kBubbleName[] = "ClipboardDlpBubble"; - -// The corner radius of the bubble. -constexpr int kBubbleCornerRadius = 8; -constexpr gfx::RoundedCornersF kCornerRadii(kBubbleCornerRadius); - -// The blur radius for the bubble background. -constexpr int kBubbleBlurRadius = 80; - -// The size of the managed icon. -constexpr int kManagedIconSize = 20; - -// The maximum width of the bubble. -constexpr int kBubbleWidth = 360; - -// The spacing between the icon and label in the bubble. -constexpr int kIconLabelSpacing = 16; - -// The padding which separates the bubble border with its inner contents. -constexpr int kBubblePadding = 16; - -// The line height of the bubble text. -constexpr int kLineHeight = 20; - -// The insets of the bubble borders. -constexpr gfx::Insets kBubbleBorderInsets(1); - -// The font name of the text used in the bubble. -constexpr char kTextFontName[] = "Roboto"; - -// The font size of the text used in the bubble. -constexpr int kTextFontSize = 13; - -// The height of the dismiss button. -constexpr int kButtonHeight = 32; - -// The padding which separates the button border with its inner contents. -constexpr int kButtonPadding = 16; - -// The spacing between the button border and label. -constexpr int kButtonLabelSpacing = 8; - -// The spacing between the buttons. -constexpr int kButtonsSpacing = 8; - -constexpr base::TimeDelta kBubbleBoundsAnimationTime = - base::TimeDelta::FromMilliseconds(250); - -class Button : public views::LabelButton { - public: - METADATA_HEADER(Button); - explicit Button(const base::string16& button_label) { - SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_CENTER); - - SetText(button_label); - - const gfx::FontList font_list = GetFontList(); - label()->SetFontList(font_list); - - SetTextColor( - ButtonState::STATE_NORMAL, - ash::ColorProvider::Get()->GetContentLayerColor( - ash::ColorProvider::ContentLayerType::kButtonLabelColorBlue)); - SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_CENTER); - SetSize({gfx::GetStringWidth(button_label, font_list) + 2 * kButtonPadding, - kButtonHeight}); - } - - Button(const Button&) = delete; - Button& operator=(const Button&) = delete; - ~Button() override = default; - - int GetLabelWidth() const { return label()->bounds().width(); } - - static gfx::FontList GetFontList() { - return gfx::FontList({kTextFontName}, gfx::Font::NORMAL, kTextFontSize, - gfx::Font::Weight::MEDIUM); - } -}; - -BEGIN_METADATA(Button, views::LabelButton) -ADD_READONLY_PROPERTY_METADATA(int, LabelWidth) -END_METADATA - -// This inline bubble shown for disabled copy/paste. -class ClipboardBubbleView : public views::View { - public: - METADATA_HEADER(ClipboardBubbleView); - explicit ClipboardBubbleView(const base::string16& text) { - SetPaintToLayer(ui::LAYER_SOLID_COLOR); - ash::ColorProvider* color_provider = ash::ColorProvider::Get(); - layer()->SetColor(color_provider->GetBaseLayerColor( - ash::ColorProvider::BaseLayerType::kTransparent80)); - if (ash::features::IsBackgroundBlurEnabled()) - layer()->SetBackgroundBlur(kBubbleBlurRadius); - layer()->SetRoundedCornerRadius(kCornerRadii); - - // Add the managed icon. - SkColor icon_color = color_provider->GetContentLayerColor( - ash::ColorProvider::ContentLayerType::kIconColorPrimary); - managed_icon_ = AddChildView(std::make_unique<views::ImageView>()); - managed_icon_->SetPaintToLayer(); - managed_icon_->layer()->SetFillsBoundsOpaquely(false); - managed_icon_->SetBounds(kBubblePadding, kBubblePadding, kManagedIconSize, - kManagedIconSize); - managed_icon_->SetImage(gfx::CreateVectorIcon( - vector_icons::kBusinessIcon, kManagedIconSize, icon_color)); - - // Add the bubble text. - label_ = AddChildView(std::make_unique<views::Label>()); - label_->SetPaintToLayer(); - label_->layer()->SetFillsBoundsOpaquely(false); - label_->SetPosition(gfx::Point( - kBubblePadding + kManagedIconSize + kIconLabelSpacing, kBubblePadding)); - - // Set the styling of the text. - // TODO(crbug.com/1150741): Handle RTL. - label_->SetText(text); - label_->SetFontList(gfx::FontList({kTextFontName}, gfx::Font::NORMAL, - kTextFontSize, - gfx::Font::Weight::NORMAL)); - label_->SetEnabledColor(color_provider->GetContentLayerColor( - ash::ColorProvider::ContentLayerType::kTextColorPrimary)); - label_->SetLineHeight(kLineHeight); - label_->SetMultiLine(true); - label_->SizeToFit(kBubbleWidth - 2 * kBubblePadding - kManagedIconSize - - kIconLabelSpacing); - label_->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT); - - // Bubble borders - border_ = AddChildView(std::make_unique<views::ImageView>()); - border_->SetPaintToLayer(); - border_->layer()->SetFillsBoundsOpaquely(false); - auto shadow_border = std::make_unique<views::BubbleBorder>( - views::BubbleBorder::FLOAT, views::BubbleBorder::STANDARD_SHADOW, - SK_ColorTRANSPARENT); - shadow_border->SetCornerRadius(kBubbleCornerRadius); - shadow_border->set_background_color(SK_ColorTRANSPARENT); - shadow_border->set_insets(kBubbleBorderInsets); - border_->SetSize({kBubbleWidth, INT_MAX}); - border_->SetBorder(std::move(shadow_border)); - } - - ~ClipboardBubbleView() override = default; - - virtual gfx::Size GetBubbleSize() const = 0; - - protected: - // This function should get called if the view got updated e.g. AddChildView. - void UpdateBorderSize(const gfx::Size& size) { border_->SetSize(size); } - - views::Label* label_ = nullptr; - views::ImageView* managed_icon_ = nullptr; - views::ImageView* border_ = nullptr; -}; - -BEGIN_METADATA(ClipboardBubbleView, views::View) -ADD_READONLY_PROPERTY_METADATA(gfx::Size, BubbleSize) -END_METADATA - -class ClipboardBlockBubble : public ClipboardBubbleView { - public: - METADATA_HEADER(ClipboardBlockBubble); - explicit ClipboardBlockBubble(const base::string16& text) - : ClipboardBubbleView(text) { - // Add "Got it" button. - base::string16 button_label = l10n_util::GetStringUTF16( - IDS_POLICY_DLP_CLIPBOARD_BLOCK_DISMISS_BUTTON); - button_ = AddChildView(std::make_unique<Button>(button_label)); - button_->SetPaintToLayer(); - button_->layer()->SetFillsBoundsOpaquely(false); - button_->SetPosition( - gfx::Point(kBubbleWidth - kBubblePadding - button_->width(), - kBubblePadding + label_->height() + kButtonLabelSpacing)); - - UpdateBorderSize(GetBubbleSize()); - } - - ~ClipboardBlockBubble() override = default; - - gfx::Size GetBubbleSize() const override { - DCHECK(label_); - DCHECK(button_); - return {kBubbleWidth, 2 * kBubblePadding + label_->bounds().height() + - kButtonLabelSpacing + button_->height()}; - } - - void SetDismissCallback(base::RepeatingCallback<void()> cb) { - DCHECK(button_); - button_->SetCallback(std::move(cb)); - } - - private: - Button* button_ = nullptr; -}; - -BEGIN_METADATA(ClipboardBlockBubble, ClipboardBubbleView) -END_METADATA - -class ClipboardWarnBubble : public ClipboardBubbleView { - public: - METADATA_HEADER(ClipboardWarnBubble); - explicit ClipboardWarnBubble(const base::string16& text) - : ClipboardBubbleView(text) { - // Add paste button. - base::string16 paste_label = - l10n_util::GetStringUTF16(IDS_POLICY_DLP_CLIPBOARD_WARN_PROCEED_BUTTON); - paste_button_ = AddChildView(std::make_unique<Button>(paste_label)); - paste_button_->SetPaintToLayer(); - paste_button_->layer()->SetFillsBoundsOpaquely(false); - paste_button_->SetPosition( - gfx::Point(kBubbleWidth - kBubblePadding - paste_button_->width(), - kBubblePadding + label_->height() + kButtonLabelSpacing)); - - // Add cancel button. - base::string16 cancel_label = - l10n_util::GetStringUTF16(IDS_POLICY_DLP_CLIPBOARD_WARN_DISMISS_BUTTON); - cancel_button_ = AddChildView(std::make_unique<Button>(cancel_label)); - cancel_button_->SetPaintToLayer(); - cancel_button_->layer()->SetFillsBoundsOpaquely(false); - cancel_button_->SetPosition( - gfx::Point(kBubbleWidth - kBubblePadding - paste_button_->width() - - kButtonsSpacing - cancel_button_->width(), - kBubblePadding + label_->height() + kButtonLabelSpacing)); - - UpdateBorderSize(GetBubbleSize()); - } - - ~ClipboardWarnBubble() override = default; - - gfx::Size GetBubbleSize() const override { - DCHECK(label_); - DCHECK(cancel_button_); - DCHECK(paste_button_); - return {kBubbleWidth, 2 * kBubblePadding + label_->bounds().height() + - kButtonLabelSpacing + paste_button_->height()}; - } - - void SetDismissCallback(base::RepeatingCallback<void()> cb) { - DCHECK(cancel_button_); - cancel_button_->SetCallback(std::move(cb)); - } - - void SetProceedCallback(base::RepeatingCallback<void()> cb) { - DCHECK(paste_button_); - paste_button_->SetCallback(std::move(cb)); - } - - private: - Button* cancel_button_ = nullptr; - Button* paste_button_ = nullptr; -}; - -BEGIN_METADATA(ClipboardWarnBubble, ClipboardBubbleView) -END_METADATA - -bool IsRectContainedByAnyDisplay(const gfx::Rect& rect) { - const std::vector<display::Display>& displays = - display::Screen::GetScreen()->GetAllDisplays(); - for (const auto& display : displays) { - if (display.bounds().Contains(rect)) - return true; - } - return false; -} - -void CalculateAndSetWidgetBounds(views::Widget* widget, - const gfx::Size& bubble_size) { - display::Screen* screen = display::Screen::GetScreen(); - display::Display display = screen->GetPrimaryDisplay(); - auto* host = ash::GetWindowTreeHostForDisplay(display.id()); - - ui::TextInputClient* text_input_client = - host->GetInputMethod()->GetTextInputClient(); - - // `text_input_client` may be null. For example, in clamshell mode and without - // any window open. - if (!text_input_client) - return; - - gfx::Rect caret_bounds = text_input_client->GetCaretBounds(); - - // Note that the width of caret's bounds may be zero in some views (such as - // the search bar of Google search web page). So we cannot use - // gfx::Size::IsEmpty() here. In addition, the applications using IFrame may - // provide unreliable `caret_bounds` which are not fully contained by the - // display bounds. - const bool caret_bounds_are_valid = caret_bounds.size() != gfx::Size() && - IsRectContainedByAnyDisplay(caret_bounds); - if (!caret_bounds_are_valid) { - caret_bounds.set_origin( - display::Screen::GetScreen()->GetCursorScreenPoint()); - } - - const gfx::Rect widget_bounds = - gfx::Rect(caret_bounds.x(), caret_bounds.y(), bubble_size.width(), - bubble_size.height()); - - std::unique_ptr<ui::ScopedLayerAnimationSettings> settings; - if (widget->GetWindowBoundsInScreen().size() != gfx::Size()) { - settings = std::make_unique<ui::ScopedLayerAnimationSettings>( - widget->GetLayer()->GetAnimator()); - settings->SetPreemptionStrategy( - ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); - settings->SetTransitionDuration(kBubbleBoundsAnimationTime); - settings->SetTweenType(gfx::Tween::EASE_OUT); - } - - widget->SetBounds(widget_bounds); -} - -views::Widget::InitParams GetWidgetInitParams() { - views::Widget::InitParams params( - views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); - params.z_order = ui::ZOrderLevel::kNormal; - params.activatable = views::Widget::InitParams::ACTIVATABLE_YES; - params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; - params.name = kBubbleName; - params.layer_type = ui::LAYER_NOT_DRAWN; - params.parent = nullptr; - params.shadow_type = views::Widget::InitParams::ShadowType::kDrop; - return params; -} - -void SynthesizePaste() { - ui::KeyEvent control_press(/*type=*/ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, - /*code=*/static_cast<ui::DomCode>(0), - /*flags=*/0); - if (!display::Screen::GetScreen()) // Doesn't exist in unittests. - return; - auto* host = ash::GetWindowTreeHostForDisplay( - display::Screen::GetScreen()->GetDisplayForNewWindows().id()); - DCHECK(host); - host->DeliverEventToSink(&control_press); - - ui::KeyEvent v_press(/*type=*/ui::ET_KEY_PRESSED, ui::VKEY_V, - /*code=*/static_cast<ui::DomCode>(0), - /*flags=*/ui::EF_CONTROL_DOWN); - - host->DeliverEventToSink(&v_press); - - ui::KeyEvent v_release(/*type=*/ui::ET_KEY_RELEASED, ui::VKEY_V, - /*code=*/static_cast<ui::DomCode>(0), - /*flags=*/ui::EF_CONTROL_DOWN); - host->DeliverEventToSink(&v_release); - - ui::KeyEvent control_release(/*type=*/ui::ET_KEY_RELEASED, ui::VKEY_CONTROL, - /*code=*/static_cast<ui::DomCode>(0), - /*flags=*/0); - host->DeliverEventToSink(&control_release); -} - -ui::DataTransferEndpoint CloneEndpoint( - const ui::DataTransferEndpoint* const data_endpoint) { - if (data_endpoint == nullptr) - return ui::DataTransferEndpoint(ui::EndpointType::kDefault); - - return ui::DataTransferEndpoint(*data_endpoint); -} - -} // namespace - -DlpClipboardNotificationHelper::DlpClipboardNotificationHelper() { - ui::ClipboardMonitor::GetInstance()->AddObserver(this); -} - -DlpClipboardNotificationHelper::~DlpClipboardNotificationHelper() { - ui::ClipboardMonitor::GetInstance()->RemoveObserver(this); - if (widget_) { - widget_->RemoveObserver(this); - CloseWidget(widget_.get(), views::Widget::ClosedReason::kUnspecified); - } -} - -void DlpClipboardNotificationHelper::NotifyBlockedPaste( - const ui::DataTransferEndpoint* const data_src, - const ui::DataTransferEndpoint* const data_dst) { - DCHECK(data_src); - DCHECK(data_src->origin()); - const base::string16 host_name = - base::UTF8ToUTF16(data_src->origin()->host()); - - if (data_dst) { - if (data_dst->type() == ui::EndpointType::kCrostini) { - ShowClipboardBlockToast(kClipboardBlockCrostiniToastId, host_name, - l10n_util::GetStringUTF16(IDS_CROSTINI_LINUX)); - return; - } - if (data_dst->type() == ui::EndpointType::kPluginVm) { - ShowClipboardBlockToast( - kClipboardBlockPluginVmToastId, host_name, - l10n_util::GetStringUTF16(IDS_PLUGIN_VM_APP_NAME)); - return; - } - if (data_dst->type() == ui::EndpointType::kArc) { - ShowClipboardBlockToast( - kClipboardBlockArcToastId, host_name, - l10n_util::GetStringUTF16(IDS_POLICY_DLP_ANDROID_APPS)); - return; - } - } - ShowClipboardBlockBubble(l10n_util::GetStringFUTF16( - IDS_POLICY_DLP_CLIPBOARD_BLOCKED_ON_PASTE, host_name)); -} - -void DlpClipboardNotificationHelper::WarnOnPaste( - const ui::DataTransferEndpoint* const data_src, - const ui::DataTransferEndpoint* const data_dst) { - DCHECK(data_src); - DCHECK(data_src->origin()); - const base::string16 host_name = - base::UTF8ToUTF16(data_src->origin()->host()); - - if (data_dst) { - if (data_dst->type() == ui::EndpointType::kCrostini) { - ShowClipboardWarnToast(kClipboardWarnCrostiniToastId, - l10n_util::GetStringUTF16(IDS_CROSTINI_LINUX)); - return; - } - if (data_dst->type() == ui::EndpointType::kPluginVm) { - ShowClipboardWarnToast(kClipboardWarnPluginVmToastId, - l10n_util::GetStringUTF16(IDS_PLUGIN_VM_APP_NAME)); - return; - } - if (data_dst->type() == ui::EndpointType::kArc) { - ShowClipboardWarnToast( - kClipboardWarnArcToastId, - l10n_util::GetStringUTF16(IDS_POLICY_DLP_ANDROID_APPS)); - return; - } - } - ShowClipboardWarnBubble( - l10n_util::GetStringFUTF16(IDS_POLICY_DLP_CLIPBOARD_WARN_ON_PASTE, - host_name), - data_dst); -} - -bool DlpClipboardNotificationHelper::DidUserProceedOnWarn( - const ui::DataTransferEndpoint* const data_dst) { - const ui::EndpointType dst_type = - data_dst ? data_dst->type() : ui::EndpointType::kDefault; - - for (const auto& endpoint : approved_dsts_) { - if (endpoint.type() == dst_type) { - if (dst_type != ui::EndpointType::kUrl) - return true; - else if (endpoint.IsSameOriginWith(*data_dst)) - return true; - } - } - return false; -} - -void DlpClipboardNotificationHelper::ProceedOnWarn( - views::Widget* widget, - const ui::DataTransferEndpoint& data_dst) { - CloseWidget(widget, views::Widget::ClosedReason::kAcceptButtonClicked); - approved_dsts_.push_back(data_dst); - SynthesizePaste(); -} - -void DlpClipboardNotificationHelper::ResetUserWarnSelection() { - approved_dsts_.clear(); -} - -void DlpClipboardNotificationHelper::ShowClipboardBlockBubble( - const base::string16& text) { - InitWidget(); - DCHECK(widget_); - - ClipboardBlockBubble* block_bubble = - widget_->SetContentsView(std::make_unique<ClipboardBlockBubble>(text)); - - block_bubble->SetDismissCallback(base::BindRepeating( - &DlpClipboardNotificationHelper::CloseWidget, base::Unretained(this), - widget_.get(), views::Widget::ClosedReason::kCancelButtonClicked)); - - ResizeAndShowWidget(block_bubble->GetBubbleSize(), - kClipboardDlpBlockDurationMs); -} - -void DlpClipboardNotificationHelper::ShowClipboardBlockToast( - const std::string& id, - const base::string16& src_name, - const base::string16& dst_name) { - const base::string16 text = l10n_util::GetStringFUTF16( - IDS_POLICY_DLP_CLIPBOARD_BLOCKED_ON_COPY_VM, src_name, dst_name); - ash::ToastData toast(id, text, kClipboardDlpToastDurationMs, - /*dismiss_text=*/base::nullopt); - toast.is_managed = true; - ash::ToastManager::Get()->Show(toast); -} - -void DlpClipboardNotificationHelper::ShowClipboardWarnBubble( - const base::string16& text, - const ui::DataTransferEndpoint* const data_dst) { - InitWidget(); - DCHECK(widget_); - - ClipboardWarnBubble* warn_bubble = - widget_->SetContentsView(std::make_unique<ClipboardWarnBubble>(text)); - - warn_bubble->SetDismissCallback(base::BindRepeating( - &DlpClipboardNotificationHelper::CloseWidget, base::Unretained(this), - widget_.get(), views::Widget::ClosedReason::kCancelButtonClicked)); - warn_bubble->SetProceedCallback(base::BindRepeating( - &DlpClipboardNotificationHelper::ProceedOnWarn, base::Unretained(this), - widget_.get(), CloneEndpoint(data_dst))); - - ResizeAndShowWidget(warn_bubble->GetBubbleSize(), - kClipboardDlpWarnDurationMs); -} - -void DlpClipboardNotificationHelper::ShowClipboardWarnToast( - const std::string& id, - const base::string16& dst_name) { - const base::string16 text = l10n_util::GetStringFUTF16( - IDS_POLICY_DLP_CLIPBOARD_WARN_ON_COPY_VM, dst_name); - ash::ToastData toast(id, text, kClipboardDlpToastDurationMs, - /*dismiss_text=*/base::nullopt); - toast.is_managed = true; - ash::ToastManager::Get()->Show(toast); -} - -void DlpClipboardNotificationHelper::OnWidgetClosing(views::Widget* widget) { - if (widget == widget_.get()) - widget_.reset(); -} - -void DlpClipboardNotificationHelper::OnWidgetDestroyed(views::Widget* widget) { - if (widget == widget_.get()) - widget_.reset(); -} - -void DlpClipboardNotificationHelper::OnWidgetActivationChanged( - views::Widget* widget, - bool active) { - if (!active) - CloseWidget(widget, views::Widget::ClosedReason::kLostFocus); -} - -void DlpClipboardNotificationHelper::OnClipboardDataChanged() { - CloseWidget(widget_.get(), views::Widget::ClosedReason::kUnspecified); - ResetUserWarnSelection(); -} - -void DlpClipboardNotificationHelper::InitWidget() { - widget_ = std::make_unique<views::Widget>(); - widget_->Init(GetWidgetInitParams()); - widget_->AddObserver(this); -} - -void DlpClipboardNotificationHelper::ResizeAndShowWidget( - const gfx::Size& bubble_size, - int timeout_duration_ms) { - DCHECK(widget_); - - CalculateAndSetWidgetBounds(widget_.get(), bubble_size); - - widget_->Show(); - - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, - base::BindOnce(&DlpClipboardNotificationHelper::CloseWidget, - base::Unretained(this), - widget_.get(), // Safe as DlpClipboardNotificationHelper - // owns `widget_` and outlives it. - views::Widget::ClosedReason::kUnspecified), - base::TimeDelta::FromMilliseconds(timeout_duration_ms)); -} - -void DlpClipboardNotificationHelper::CloseWidget( - views::Widget* widget, - views::Widget::ClosedReason reason) { - if (widget && widget == widget_.get()) - widget->CloseWithReason(reason); -} - -} // namespace policy
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc index 490e47c1..ed66a5c 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc
@@ -136,9 +136,9 @@ } } - auto proceed_cb = base::BindRepeating(&DlpClipboardNotifier::ProceedOnWarn, - base::Unretained(this), widget_.get(), - CloneEndpoint(data_dst)); + auto proceed_cb = + base::BindRepeating(&DlpClipboardNotifier::ProceedOnWarn, + base::Unretained(this), CloneEndpoint(data_dst)); ShowWarningBubble(l10n_util::GetStringFUTF16( IDS_POLICY_DLP_CLIPBOARD_BLOCKED_ON_PASTE, host_name), proceed_cb); @@ -161,8 +161,8 @@ } void DlpClipboardNotifier::ProceedOnWarn( - views::Widget* widget, - const ui::DataTransferEndpoint& data_dst) { + const ui::DataTransferEndpoint& data_dst, + views::Widget* widget) { CloseWidget(widget, views::Widget::ClosedReason::kAcceptButtonClicked); approved_dsts_.push_back(data_dst); SynthesizePaste();
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h index aa8f1a1..609483c 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h +++ b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h
@@ -35,8 +35,8 @@ bool DidUserProceedOnWarn(const ui::DataTransferEndpoint* const data_dst); protected: - void ProceedOnWarn(views::Widget* widget, - const ui::DataTransferEndpoint& data_dst); + void ProceedOnWarn(const ui::DataTransferEndpoint& data_dst, + views::Widget* widget); void ResetUserWarnSelection();
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc index c33eeff..c89625a 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc
@@ -18,6 +18,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/data_transfer_policy/data_transfer_endpoint.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/views/widget/widget.h" #include "url/gurl.h" #include "url/origin.h" @@ -42,12 +43,12 @@ MOCK_METHOD1(ShowBlockBubble, void(const base::string16& text)); MOCK_METHOD2(ShowWarningBubble, void(const base::string16& text, - base::RepeatingCallback<void()> proceed_cb)); + base::RepeatingCallback<void(views::Widget*)> proceed_cb)); MOCK_CONST_METHOD2(ShowToast, void(const std::string& id, const base::string16& text)); - void ProceedOnWarn(views::Widget* widget, - const ui::DataTransferEndpoint& data_dst) { - DlpClipboardNotifier::ProceedOnWarn(widget, data_dst); + void ProceedOnWarn(const ui::DataTransferEndpoint& data_dst, + views::Widget* widget) { + DlpClipboardNotifier::ProceedOnWarn(data_dst, widget); } void ResetUserWarnSelection() { @@ -109,7 +110,7 @@ data_dst.emplace(param.value()); const ui::DataTransferEndpoint* dst_ptr = base::OptionalOrNullptr(data_dst); - notifier.ProceedOnWarn(nullptr, *dst_ptr); + notifier.ProceedOnWarn(*dst_ptr, nullptr); EXPECT_TRUE(notifier.DidUserProceedOnWarn(dst_ptr)); } @@ -128,10 +129,10 @@ const ui::DataTransferEndpoint arc_dst(ui::EndpointType::kArc); const ui::DataTransferEndpoint crostini_dst(ui::EndpointType::kCrostini); - notifier.ProceedOnWarn(nullptr, url_dst); - notifier.ProceedOnWarn(nullptr, default_dst); - notifier.ProceedOnWarn(nullptr, arc_dst); - notifier.ProceedOnWarn(nullptr, crostini_dst); + notifier.ProceedOnWarn(url_dst, nullptr); + notifier.ProceedOnWarn(default_dst, nullptr); + notifier.ProceedOnWarn(arc_dst, nullptr); + notifier.ProceedOnWarn(crostini_dst, nullptr); EXPECT_TRUE(notifier.DidUserProceedOnWarn(&url_dst)); EXPECT_TRUE(notifier.DidUserProceedOnWarn(&default_dst));
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc index 78836b7..e752cc3 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h" #include "ash/public/cpp/window_tree_host_lookup.h" +#include "base/bind.h" #include "base/callback_forward.h" #include "chrome/browser/chromeos/policy/dlp/clipboard_bubble.h" #include "chrome/browser/chromeos/policy/dlp/dlp_clipboard_bubble_constants.h" @@ -116,14 +117,15 @@ void DlpDataTransferNotifier::ShowWarningBubble( const base::string16& text, - base::RepeatingCallback<void()> proceed_cb) { + base::RepeatingCallback<void(views::Widget*)> proceed_cb) { InitWidget(); ClipboardWarnBubble* bubble = widget_->SetContentsView(std::make_unique<ClipboardWarnBubble>(text)); + bubble->SetProceedCallback( + base::BindRepeating(std::move(proceed_cb), widget_.get())); bubble->SetDismissCallback(base::BindRepeating( &DlpDataTransferNotifier::CloseWidget, base::Unretained(this), widget_.get(), views::Widget::ClosedReason::kCancelButtonClicked)); - bubble->SetProceedCallback(proceed_cb); ResizeAndShowWidget(bubble->GetBubbleSize(), kClipboardDlpWarnDurationMs); }
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h index 49a5f430..2fb0630 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h +++ b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h
@@ -36,8 +36,9 @@ protected: virtual void ShowBlockBubble(const base::string16& text); - virtual void ShowWarningBubble(const base::string16& text, - base::RepeatingCallback<void()> proceed_cb); + virtual void ShowWarningBubble( + const base::string16& text, + base::RepeatingCallback<void(views::Widget*)> proceed_cb); void CloseWidget(views::Widget* widget, views::Widget::ClosedReason reason);
diff --git a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc index af1fc96..309ab53 100644 --- a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc +++ b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc
@@ -175,6 +175,7 @@ "Name": "My WiFi Network", "WiFi": { "HexSSID": "737369642D6E6F6E65", + "HiddenSSID": false, "Security": "None" } }, { "GUID": "{guid-for-wifi-with-device-exp}", @@ -186,6 +187,7 @@ "Identity": "${DEVICE_SERIAL_NUMBER}-${DEVICE_ASSET_ID}" }, "HexSSID": "7465737431323334", + "HiddenSSID": false, "Security": "WPA-EAP", "SSID": "test1234", }
diff --git a/chrome/browser/extensions/api/storage/settings_apitest.cc b/chrome/browser/extensions/api/storage/settings_apitest.cc index b7bc9b6..dd143355 100644 --- a/chrome/browser/extensions/api/storage/settings_apitest.cc +++ b/chrome/browser/extensions/api/storage/settings_apitest.cc
@@ -434,13 +434,9 @@ EXPECT_TRUE(frontend->IsStorageEnabled(MANAGED)); } -#if defined(OS_MAC) && defined(ARCH_CPU_ARM64) // Bulk disabled as part of arm64 bot stabilization: https://crbug.com/1154345 -#define MAYBE_ExtensionsSchemas DISABLED_ExtensionsSchemas -#else -#define MAYBE_ExtensionsSchemas ExtensionsSchemas -#endif -IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, MAYBE_ExtensionsSchemas) { +// TODO(crbug.com/1177118) Re-enable test +IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, DISABLED_ExtensionsSchemas) { // Verifies that the Schemas for the extensions domain are created on startup. Profile* profile = browser()->profile(); ExtensionSystem* extension_system = ExtensionSystem::Get(profile); @@ -519,14 +515,9 @@ EXPECT_EQ(base::Value::Type::INTEGER, dict.GetProperty("anything").type()); } -#if defined(OS_MAC) && defined(ARCH_CPU_ARM64) // Bulk disabled as part of arm64 bot stabilization: https://crbug.com/1154345 -#define MAYBE_ManagedStorage DISABLED_ManagedStorage -#else -#define MAYBE_ManagedStorage ManagedStorage -#endif - -IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, MAYBE_ManagedStorage) { +// TODO(crbug.com/1177118) Re-enable test +IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, DISABLED_ManagedStorage) { // Set policies for the test extension. std::unique_ptr<base::DictionaryValue> policy = extensions::DictionaryBuilder()
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 c0302fd..a9995d56 100644 --- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc +++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -455,12 +455,8 @@ // This test times out regularly on ASAN/MSAN trybots. See // https://crbug.com/733395. -#if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) -#define MAYBE_WebRequestTypes DISABLED_WebRequestTypes -#else -#define MAYBE_WebRequestTypes WebRequestTypes -#endif -IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, MAYBE_WebRequestTypes) { +// TODO(crbug.com/1177120) Re-enable test +IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, DISABLED_WebRequestTypes) { ASSERT_TRUE(StartEmbeddedTestServer()); ASSERT_TRUE(RunExtensionSubtest("webrequest", "test_types.html")) << message_; } @@ -1496,8 +1492,9 @@ // Test that the webRequest events are dispatched for the WebSocket handshake // requests when authenrication is requested by server. +// TODO(crbug.com/1177120) Re-enable test IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, - WebSocketRequestAuthRequired) { + DISABLED_WebSocketRequestAuthRequired) { ASSERT_TRUE(StartEmbeddedTestServer()); ASSERT_TRUE(StartWebSocketServer(net::GetWebSocketTestDataDirectory(), true)); ASSERT_TRUE(RunExtensionSubtest("webrequest", "test_websocket_auth.html"))
diff --git a/chrome/browser/extensions/extension_tabs_apitest.cc b/chrome/browser/extensions/extension_tabs_apitest.cc index 7147b78..d8b076f 100644 --- a/chrome/browser/extensions/extension_tabs_apitest.cc +++ b/chrome/browser/extensions/extension_tabs_apitest.cc
@@ -61,7 +61,8 @@ ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crud.html")) << message_; } -IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabAudible) { +// TODO(crbug.com/1177118) Re-enable test +IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_TabAudible) { ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "audible.html")) << message_; } @@ -165,7 +166,9 @@ "test_png.html")) << message_; } -IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, CaptureVisibleTabRace) { +// TODO(crbug.com/1177118) Re-enable test +IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, + DISABLED_CaptureVisibleTabRace) { ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab", "test_race.html")) << message_; }
diff --git a/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc b/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc index 38ee71c..99752ee0d 100644 --- a/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc +++ b/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc
@@ -246,7 +246,8 @@ // User signed in, sync service started, install app when priority sync is // completed. -TEST_F(ExternalProviderImplChromeOSTest, PriorityCompleted) { +// TODO(crbug.com/1177118) Re-enable test +TEST_F(ExternalProviderImplChromeOSTest, DISABLED_PriorityCompleted) { InitServiceWithExternalProviders(true); // User is logged in.
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index d7144e5..abefbc3 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -4158,7 +4158,7 @@ { "name": "pull-to-refresh", "owners": [ "afakhry", "tclaiborne" ], - "expiry_milestone": 89 + "expiry_milestone": 99 }, { "name": "query-tiles",
diff --git a/chrome/browser/media/history/media_history_browsertest.cc b/chrome/browser/media/history/media_history_browsertest.cc index 85a6e7d..30b4f692 100644 --- a/chrome/browser/media/history/media_history_browsertest.cc +++ b/chrome/browser/media/history/media_history_browsertest.cc
@@ -773,8 +773,9 @@ } } +// TODO(crbug.com/1177109) Re-enable test IN_PROC_BROWSER_TEST_P(MediaHistoryBrowserTest, - SaveImagesWithDifferentSessions) { + DISABLED_SaveImagesWithDifferentSessions) { auto* browser = CreateBrowserFromParam(); auto expected_metadata = GetExpectedMetadata(); auto expected_artwork = GetExpectedArtwork();
diff --git a/chrome/browser/media/media_engagement_browsertest.cc b/chrome/browser/media/media_engagement_browsertest.cc index eab7f175..0fcadd1 100644 --- a/chrome/browser/media/media_engagement_browsertest.cc +++ b/chrome/browser/media/media_engagement_browsertest.cc
@@ -416,8 +416,9 @@ ExpectScores(1, 0); } +// TODO(crbug.com/1177113) Re-enable test IN_PROC_BROWSER_TEST_F(MediaEngagementBrowserTest, - DoNotRecordEngagement_PlaybackStopped) { + DISABLED_DoNotRecordEngagement_PlaybackStopped) { LoadTestPageAndWaitForPlayAndAudible("engagement_test.html", false); Advance(base::TimeDelta::FromSeconds(1)); ExecuteScript("document.getElementById(\"media\").pause();");
diff --git a/chrome/browser/metrics/perf/profile_provider_unittest_main.cc b/chrome/browser/metrics/perf/profile_provider_unittest_main.cc index fe06997..bfd2f115d 100644 --- a/chrome/browser/metrics/perf/profile_provider_unittest_main.cc +++ b/chrome/browser/metrics/perf/profile_provider_unittest_main.cc
@@ -277,7 +277,8 @@ AssertProfileData(SampledProfile::JANKY_TASK); } -TEST_F(ProfileProviderRealCollectionTest, OnJankStopped) { +// TODO(crbug.com/1177150) Re-enable test +TEST_F(ProfileProviderRealCollectionTest, DISABLED_OnJankStopped) { profile_provider_->OnJankStarted(); // Call ProfileProvider::OnJankStopped() halfway through the collection
diff --git a/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc b/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc index 3e644b9..655414a 100644 --- a/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc +++ b/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc
@@ -889,7 +889,9 @@ "OptimizationGuide.HintCache.HintType.Loaded", 0); } -IN_PROC_BROWSER_TEST_F(HintsFetcherBrowserTest, HintsFetcherNetworkOffline) { +// TODO(crbug.com/1177122) Re-enable test +IN_PROC_BROWSER_TEST_F(HintsFetcherBrowserTest, + DISABLED_HintsFetcherNetworkOffline) { const base::HistogramTester* histogram_tester = GetHistogramTester(); GURL url = https_url(); base::CommandLine::ForCurrentProcess()->RemoveSwitch(
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc index 3dbd4d84..a8d8b4a 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
@@ -2280,8 +2280,9 @@ DISALLOW_COPY_AND_ASSIGN(AdsMemoryMeasurementBrowserTest); }; +// TODO(crbug.com/1177094) Renable test IN_PROC_BROWSER_TEST_F(AdsMemoryMeasurementBrowserTest, - SingleAdFrame_MaxMemoryBytesRecorded) { + DISABLED_SingleAdFrame_MaxMemoryBytesRecorded) { base::HistogramTester histogram_tester; // Instantiate a memory request and waiter to wait for expected
diff --git a/chrome/browser/password_manager/password_generation_interactive_uitest.cc b/chrome/browser/password_manager/password_generation_interactive_uitest.cc index 7b36ce8..d4a2b88 100644 --- a/chrome/browser/password_manager/password_generation_interactive_uitest.cc +++ b/chrome/browser/password_manager/password_generation_interactive_uitest.cc
@@ -241,8 +241,9 @@ 1); } +// TODO(crbug.com/1177135) Re-enable test IN_PROC_BROWSER_TEST_F(PasswordGenerationInteractiveTest, - PopupShownAutomaticallyAndPasswordErased) { + DISABLED_PopupShownAutomaticallyAndPasswordErased) { FocusPasswordField(); EXPECT_TRUE(GenerationPopupShowing()); SendKeyToPopup(ui::VKEY_DOWN);
diff --git a/chrome/browser/pdf/pdf_extension_test.cc b/chrome/browser/pdf/pdf_extension_test.cc index 2f11726..0ad5129 100644 --- a/chrome/browser/pdf/pdf_extension_test.cc +++ b/chrome/browser/pdf/pdf_extension_test.cc
@@ -1028,14 +1028,9 @@ RunTestsInJsModule("printing_icon_test.js", "test.pdf"); } -// TODO(https://crbug.com/920684): Test times out. -#if defined(MEMORY_SANITIZER) || defined(LEAK_SANITIZER) || \ - defined(ADDRESS_SANITIZER) || defined(_DEBUG) -#define MAYBE_AnnotationsFeatureEnabled DISABLED_AnnotationsFeatureEnabled -#else -#define MAYBE_AnnotationsFeatureEnabled AnnotationsFeatureEnabled -#endif -IN_PROC_BROWSER_TEST_F(PDFExtensionJSTest, MAYBE_AnnotationsFeatureEnabled) { +// TODO(https://crbug.com/920684): Test times out under sanatizers +// TODO(crbug.com/1177131) Re-enable test +IN_PROC_BROWSER_TEST_F(PDFExtensionJSTest, DISABLED_AnnotationsFeatureEnabled) { RunTestsInJsModule("annotations_feature_enabled_test.js", "test.pdf"); }
diff --git a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc index 353a7fc5..86d5eb5 100644 --- a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc +++ b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc
@@ -330,7 +330,8 @@ base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE); } -TEST_F(WorkingSetTrimmerPolicyChromeOSTest, ArcTrimOnlyIfEnabled) { +// TODO(crbug.com/1177146) Re-enable test +TEST_F(WorkingSetTrimmerPolicyChromeOSTest, DISABLED_ArcTrimOnlyIfEnabled) { policy()->trim_arc_on_memory_pressure(true); FastForwardBy(base::TimeDelta::FromSeconds(1)); EXPECT_CALL(*policy(), TrimArcProcesses).Times(1);
diff --git a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc index d4fd329..aff72c8 100644 --- a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc +++ b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
@@ -2430,34 +2430,28 @@ // Check that video does not leave Picture-in-Picture automatically when it // doesn't have the Auto Picture-in-Picture attribute set. -// Flaky, see crbug.com/1140960. IN_PROC_BROWSER_TEST_F( WebAppPictureInPictureWindowControllerBrowserTest, - DISABLED_AutoPictureInPictureNotTriggeredOnPageShownIfNoAttribute) { + AutoPictureInPictureNotTriggeredOnPageShownIfNoAttribute) { InstallAndLaunchPWA(main_url()); + ASSERT_TRUE(content::ExecuteScript(web_contents(), + "video.autoPictureInPicture = false;")); + bool result = false; ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(), "playVideo();", &result)); ASSERT_TRUE(result); - ASSERT_TRUE(content::ExecuteScript(web_contents(), - "video.autoPictureInPicture = true;")); + ASSERT_TRUE(content::ExecuteScriptAndExtractBool( + web_contents(), "enterPictureInPicture();", &result)); + ASSERT_TRUE(result); - // Hide page and check that video entered Picture-in-Picture automatically. web_contents()->WasHidden(); - base::string16 expected_title = - base::ASCIIToUTF16("video.enterpictureinpicture"); - EXPECT_EQ( - expected_title, - content::TitleWatcher(web_contents(), expected_title).WaitAndGetTitle()); - - ASSERT_TRUE(content::ExecuteScript(web_contents(), - "video.autoPictureInPicture = false;")); // Show page and check that video did not leave Picture-in-Picture - // automatically as it doesn't have the Auto Picture-in-Picture attribute set - // anymore. + // automatically as it doesn't have the Auto Picture-in-Picture attribute + // set. web_contents()->WasShown(); - expected_title = base::ASCIIToUTF16("visible"); + const auto expected_title = base::ASCIIToUTF16("visible"); EXPECT_EQ( expected_title, content::TitleWatcher(web_contents(), expected_title).WaitAndGetTitle());
diff --git a/chrome/browser/printing/print_backend_browsertest.cc b/chrome/browser/printing/print_backend_browsertest.cc index 9721ac5..d9d495a 100644 --- a/chrome/browser/printing/print_backend_browsertest.cc +++ b/chrome/browser/printing/print_backend_browsertest.cc
@@ -4,6 +4,7 @@ #include <stdint.h> +#include <algorithm> #include <memory> #include <string> #include <utility> @@ -22,15 +23,34 @@ #include "mojo/public/cpp/bindings/remote.h" #include "printing/backend/print_backend.h" #include "printing/backend/test_print_backend.h" +#include "testing/gmock/include/gmock/gmock-matchers.h" #include "testing/gtest/include/gtest/gtest.h" namespace printing { +using ::testing::UnorderedElementsAreArray; + namespace { constexpr char kDefaultPrinterName[] = "default-test-printer"; +constexpr char kAnotherPrinterName[] = "another-test-printer"; constexpr char kInvalidPrinterName[] = "invalid-test-printer"; +const PrinterBasicInfo kDefaultPrinterInfo( + /*printer_name=*/kDefaultPrinterName, + /*display_name=*/"default test printer", + /*printer_description=*/"Default printer for testing.", + /*printer_status=*/0, + /*is_default=*/true, + /*options=*/{}); +const PrinterBasicInfo kAnotherPrinterInfo( + /*printer_name=*/kAnotherPrinterName, + /*display_name=*/"another test printer", + /*printer_description=*/"Another printer for testing.", + /*printer_status=*/5, + /*is_default=*/false, + /*options=*/{}); + constexpr int32_t kCopiesMax = 123; } // namespace @@ -46,26 +66,36 @@ } // Initialize and load the backend service with some test print drivers. - void DoInitAndSetupTestData() { + void LaunchService() { print_backend_service_ = PrintBackendServiceTestImpl::LaunchForTesting( remote_, test_print_backend_); + } - auto printer_info = std::make_unique<PrinterBasicInfo>( - /*printer_name=*/kDefaultPrinterName, - /*display_name=*/"default test printer", - /*printer_description=*/"Default printer for testing.", - /*printer_status=*/0, /*is_default=*/true, - /*options=*/PrinterBasicInfoOptions{}); - + // Load the test backend with a default printer driver. + void AddDefaultPrinter() { // Only explicitly specify capabilities that we pay attention to in the // tests. auto default_caps = std::make_unique<PrinterSemanticCapsAndDefaults>(); default_caps->copies_max = kCopiesMax; test_print_backend_->AddValidPrinter( - kDefaultPrinterName, std::move(default_caps), std::move(printer_info)); + kDefaultPrinterName, std::move(default_caps), + std::make_unique<PrinterBasicInfo>(kDefaultPrinterInfo)); + } + + // Load the test backend with another (non-default) printer. + void AddAnotherPrinter() { + test_print_backend_->AddValidPrinter( + kAnotherPrinterName, std::make_unique<PrinterSemanticCapsAndDefaults>(), + std::make_unique<PrinterBasicInfo>(kAnotherPrinterInfo)); } // Public callbacks used by tests. + void OnDidEnumeratePrinters(base::Optional<PrinterList>* capture_printer_list, + const base::Optional<PrinterList>& printer_list) { + *capture_printer_list = printer_list; + CheckForQuit(); + } + void OnDidGetDefaultPrinterName( base::Optional<std::string>* capture_printer_name, const base::Optional<std::string>& printer_name) { @@ -135,12 +165,12 @@ // query/command. Verify that a query fails if one tries to use a new service // without having performed initialization. IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, FailWithoutInit) { - base::Optional<std::string> default_printer_name; - base::Optional<PrinterSemanticCapsAndDefaults> printer_caps; - // Launch the service, but without initializing to desired locale. LaunchUninitialized(); + base::Optional<std::string> default_printer_name; + base::Optional<PrinterSemanticCapsAndDefaults> printer_caps; + // Safe to use base::Unretained(this) since waiting locally on the callback // forces a shorter lifetime than `this`. GetPrintBackendService()->GetDefaultPrinterName( @@ -158,10 +188,31 @@ EXPECT_FALSE(printer_caps.has_value()); } -IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, GetDefaultPrinterName) { - base::Optional<std::string> default_printer_name; +IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, EnumeratePrinters) { + LaunchService(); + AddDefaultPrinter(); + AddAnotherPrinter(); - DoInitAndSetupTestData(); + const PrinterList kPrinterListExpected = {kDefaultPrinterInfo, + kAnotherPrinterInfo}; + + // Safe to use base::Unretained(this) since waiting locally on the callback + // forces a shorter lifetime than `this`. + base::Optional<PrinterList> printer_list; + GetPrintBackendService()->EnumeratePrinters( + base::BindOnce(&PrintBackendBrowserTest::OnDidEnumeratePrinters, + base::Unretained(this), &printer_list)); + WaitUntilCallbackReceived(); + ASSERT_TRUE(printer_list.has_value()); + EXPECT_THAT(printer_list.value(), + UnorderedElementsAreArray(kPrinterListExpected)); +} + +IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, GetDefaultPrinterName) { + LaunchService(); + AddDefaultPrinter(); + + base::Optional<std::string> default_printer_name; // Safe to use base::Unretained(this) since waiting locally on the callback // forces a shorter lifetime than `this`. @@ -175,9 +226,10 @@ IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, GetPrinterSemanticCapsAndDefaults) { - base::Optional<PrinterSemanticCapsAndDefaults> printer_caps; + LaunchService(); + AddDefaultPrinter(); - DoInitAndSetupTestData(); + base::Optional<PrinterSemanticCapsAndDefaults> printer_caps; // Safe to use base::Unretained(this) since waiting locally on the callback // forces a shorter lifetime than `this`. @@ -201,12 +253,13 @@ } IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, FetchCapabilities) { + LaunchService(); + AddDefaultPrinter(); + base::Optional<PrinterBasicInfo> printer_info; base::Optional<PrinterSemanticCapsAndDefaults::Papers> user_defined_papers; base::Optional<PrinterSemanticCapsAndDefaults> printer_caps; - DoInitAndSetupTestData(); - // Safe to use base::Unretained(this) since waiting locally on the callback // forces a shorter lifetime than `this`. GetPrintBackendService()->FetchCapabilities(
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js index 3136e817..505c468e 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
@@ -1854,7 +1854,8 @@ }); }); -TEST_F('ChromeVoxBackgroundTest', 'TabSwitchAndRefreshRecovery', function() { +// TODO(crbug.com/1177115) Re-enable test +TEST_F('ChromeVoxBackgroundTest', 'DISABLED_TabSwitchAndRefreshRecovery', function() { const mockFeedback = this.createMockFeedback(); this.runWithLoadedTree( `
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js index f2426e2..c63a440 100644 --- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js +++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js
@@ -240,8 +240,9 @@ }); }); +// TODO(crbug.com/1177140) Re-enable test TEST_F( - 'SelectToSpeakMouseSelectionTest', 'DoesNotSpeakOnlyTheTrayButton', + 'SelectToSpeakMouseSelectionTest', 'DISABLED_DoesNotSpeakOnlyTheTrayButton', function() { // The tray button itself should not be spoken when clicked in selection // mode per UI review (but if more elements are being verbalized than just
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb index 7f3c4df..c9ebf312 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_as.xtb
@@ -806,7 +806,7 @@ <translation id="7039555289296502784">জলফাইৰঙী</translation> <translation id="7041173719775863268">আৰু বাছনি কৰা পাঠ নাই</translation> <translation id="7043850226734279132">গাঢ় খাকী</translation> -<translation id="7051308646573997571">ক’ৰেল</translation> +<translation id="7051308646573997571">Coral</translation> <translation id="7062635574500127092">গাঢ় সেউজ-নীলা</translation> <translation id="7086377898680121060">উজ্জ্বলতা বঢ়াওক</translation> <translation id="7088743565397416204">ফ’কাছ কৰা বস্তুটো সক্ৰিয় কৰিবলৈ দুবাৰ টিপক</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb index 9f8fce3..aa520b4 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb
@@ -807,7 +807,7 @@ <translation id="7039555289296502784">ধূসর জলপাই</translation> <translation id="7041173719775863268">নির্বাচন সমাপ্ত করুন</translation> <translation id="7043850226734279132">গাঢ় খাকি</translation> -<translation id="7051308646573997571">প্রবাল</translation> +<translation id="7051308646573997571">প্রবাল রঙ</translation> <translation id="7062635574500127092">নীলচে সবুজ</translation> <translation id="7086377898680121060">উজ্জ্বলতা বাড়ান</translation> <translation id="7088743565397416204">ফোকাস করা কোনও আইটেম অ্যাক্টিভেট করতে ডবল ট্যাপ করুন</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb index 83e1676..a21e3bf 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb
@@ -807,7 +807,7 @@ <translation id="7039555289296502784">ಆಲಿವ್ ಡ್ರ್ಯಾಬ್</translation> <translation id="7041173719775863268">ಆಯ್ಕೆಯನ್ನು ಕೊನೆಗೊಳಿಸಿ</translation> <translation id="7043850226734279132">ಗಾಢ ಖಾಕಿ</translation> -<translation id="7051308646573997571">ಹವಳ</translation> +<translation id="7051308646573997571">Coral</translation> <translation id="7062635574500127092">ಗಾಢ ಹಸಿರು-ನೀಲಿ</translation> <translation id="7086377898680121060">ಪ್ರಖರತೆ ಹೆಚ್ಚು ಮಾಡಿ</translation> <translation id="7088743565397416204">ಫೋಕಸ್ ಮಾಡಿರುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಎರಡು ಬಾರಿ ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pa.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pa.xtb index 0e8313e..16afe736 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pa.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pa.xtb
@@ -807,7 +807,7 @@ <translation id="7039555289296502784">ਘਸਮੈਲਾ ਜੈਤੂਨੀ ਰੰਗਾ</translation> <translation id="7041173719775863268">ਚੋਣ ਖ਼ਤਮ ਕਰੋ</translation> <translation id="7043850226734279132">ਗੂੜ੍ਹਾ ਖਾਕੀ</translation> -<translation id="7051308646573997571">ਗਾਜਰੀ</translation> +<translation id="7051308646573997571">ਕੋਰਲ</translation> <translation id="7062635574500127092">ਹਰਾ-ਨੀਲਾ</translation> <translation id="7086377898680121060">ਚਮਕ ਵਧਾਓ</translation> <translation id="7088743565397416204">ਫੋਕਸ ਕੀਤੀ ਗਈ ਆਈਟਮ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ ਡਬਲ-ਟੈਪ ਕਰੋ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ta.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ta.xtb index 623aa73..f342732 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ta.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ta.xtb
@@ -807,7 +807,7 @@ <translation id="7039555289296502784">ஆலிவ் ட்ராப்</translation> <translation id="7041173719775863268">தேர்வின் இறுதி</translation> <translation id="7043850226734279132">டார்க் காக்கி</translation> -<translation id="7051308646573997571">கோரல்</translation> +<translation id="7051308646573997571">பவளம்</translation> <translation id="7062635574500127092">பசும் நீலம்</translation> <translation id="7086377898680121060">ஒளிர்வை அதிகரிக்கும்</translation> <translation id="7088743565397416204">ஃபோகஸ் செய்யப்பட்டுள்ளதைச் செயல்படுத்த இருமுறை தட்டவும்</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb index 84bf9ae..400cced 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb
@@ -808,7 +808,7 @@ <translation id="7039555289296502784">ఆలివ్ బూడిద రంగు</translation> <translation id="7041173719775863268">ఎంపికను ముగించండి</translation> <translation id="7043850226734279132">ముదురు ఖాకీ రంగు</translation> -<translation id="7051308646573997571">పగడం వంటి ఎర్రని రంగు</translation> +<translation id="7051308646573997571">Coral</translation> <translation id="7062635574500127092">నీలి పచ్చ రంగు</translation> <translation id="7086377898680121060">ప్రకాశాన్ని పెంచుతుంది</translation> <translation id="7088743565397416204">దృష్టి కేంద్రీకరించిన దానిని యాక్టివేట్ చేయడం కోసం రెండుసార్లు నొక్కండి</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/text_navigation_manager_test.js b/chrome/browser/resources/chromeos/accessibility/switch_access/text_navigation_manager_test.js index 1e703786..21906e6 100644 --- a/chrome/browser/resources/chromeos/accessibility/switch_access/text_navigation_manager_test.js +++ b/chrome/browser/resources/chromeos/accessibility/switch_access/text_navigation_manager_test.js
@@ -239,8 +239,10 @@ }); }); +// TODO(crbug.com/1177096) Renable test TEST_F( - 'SwitchAccessTextNavigationManagerTest', 'MoveBackwardOneChar', function() { + 'SwitchAccessTextNavigationManagerTest', 'DISABLED_MoveBackwardOneChar', + function() { runTextNavigationTest(this, { content: 'parrots!', initialIndex: 7,
diff --git a/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js b/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js index 16fd3bc..1b776ef0 100644 --- a/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js +++ b/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js
@@ -77,9 +77,6 @@ this.style.setProperty('--caption-bar-height', captionBarHeight); if (oobeDialogHeight && oobeDialogWidth) { - // Below code is also used to set the dialog size for display manager and - // in-session multidevice setup flow. Please make sure code changes are - // applied to all places. document.documentElement.style.setProperty( '--oobe-oobe-dialog-height-base', oobeDialogHeight + 'px'); document.documentElement.style.setProperty(
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html b/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html index d350f0a..a39b04a 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html
@@ -1,7 +1,6 @@ <style> :host { --emoji-background: transparent; - --emoji-size: 32px; height: var(--emoji-size); width: var(--emoji-size);
diff --git a/chrome/browser/resources/chromeos/login/BUILD.gn b/chrome/browser/resources/chromeos/login/BUILD.gn index 4e9cef8f..c301be0 100644 --- a/chrome/browser/resources/chromeos/login/BUILD.gn +++ b/chrome/browser/resources/chromeos/login/BUILD.gn
@@ -163,7 +163,7 @@ deps = [ "components:login_screen_behavior", "components:multi_step_behavior", - "components/oobe_dialog:oobe_dialog", + "components/oobe_adaptive_dialog:oobe_adaptive_dialog", "components/oobe_dialog_host_behavior:oobe_dialog_host_behavior", "components/oobe_i18n_behavior:oobe_i18n_behavior", ]
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_adaptive_dialog/oobe_adaptive_dialog.html b/chrome/browser/resources/chromeos/login/components/oobe_adaptive_dialog/oobe_adaptive_dialog.html index bcc24e8..fc581ef 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_adaptive_dialog/oobe_adaptive_dialog.html +++ b/chrome/browser/resources/chromeos/login/components/oobe_adaptive_dialog/oobe_adaptive_dialog.html
@@ -57,10 +57,6 @@ --> <dom-module id="oobe-adaptive-dialog"> <template> - <!-- - Below code is duplicated in ui-page element in multidevice setup flow. - Please make sure code changed are applied to both places. - --> <style include="oobe-dialog-host cr-shared-style"> :host { height: var(--oobe-adaptive-dialog-height);
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_fonts.css b/chrome/browser/resources/chromeos/login/components/oobe_fonts.css index 59f7b95..1965606c 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_fonts.css +++ b/chrome/browser/resources/chromeos/login/components/oobe_fonts.css
@@ -21,10 +21,13 @@ --oobe-subheader-text-color: var(--google-grey-700); --oobe-text-color: var(--google-grey-700); + --oobe-default-line-height: 20px; + --oobe-default-font: { font-family: var(--oobe-default-font-family); font-size: var(--oobe-default-font-size); font-weight: var(--oobe-default-font-weight); + line-height: var(--oobe-default-line-height); }; --oobe-header-font: {
diff --git a/chrome/browser/resources/chromeos/login/encryption_migration.css b/chrome/browser/resources/chromeos/login/encryption_migration.css deleted file mode 100644 index 8b57fc8..0000000 --- a/chrome/browser/resources/chromeos/login/encryption_migration.css +++ /dev/null
@@ -1,46 +0,0 @@ -/* Copyright 2017 The Chromium Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - - -oobe-dialog div { - line-height: 1.54; /* 20px height for 13px font. */ -} - -paper-progress { - --paper-progress-active-color: var(--google-blue-500); - height: 3px; - margin-bottom: 28px; - width: 100%; -} - -oobe-text-button { - color: rgb(90, 90, 90); -} - -oobe-dialog > iron-icon { - height: 32px; - width: 32px; -} - -oobe-dialog > iron-icon.warning { - --iron-icon-fill-color: rgb(219, 68, 55); -} - -.warning-icon { - -webkit-mask-image: url(../../../../../ui/webui/resources/images/warning.svg); - -webkit-mask-position: center; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: 100%; - background-color: var(--google-red-500); -} - -[slot='footer'] div { - color: rgb(51, 51, 51); - font-size: 13px; -} - -[slot='footer'] div.warning { - color: rgb(197, 57, 41); - font-weight: 500; -}
diff --git a/chrome/browser/resources/chromeos/login/encryption_migration.html b/chrome/browser/resources/chromeos/login/encryption_migration.html index 2cadd46..3dc2497 100644 --- a/chrome/browser/resources/chromeos/login/encryption_migration.html +++ b/chrome/browser/resources/chromeos/login/encryption_migration.html
@@ -2,52 +2,81 @@ Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. --> -<link rel="import" href="chrome://resources/cr_elements/icons.html"> -<link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-progress/paper-progress.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html"> <link rel="import" href="chrome://oobe/custom_elements.html"> -<link rel="import" href="/components/oobe_dialog.html"> -<link rel="import" href="/components/oobe_i18n_behavior.html"> -<link rel="import" href="/components/throbber_notice.html"> +<link rel="import" href="/components/hd_iron_icon.html"> +<link rel="import" href="/components/oobe_adaptive_dialog.html"> <link rel="import" href="/components/oobe_dialog_host_behavior.html"> +<link rel="import" href="/components/oobe_i18n_behavior.html"> <dom-module id="encryption-migration-element"> <template> - <style include="oobe-dialog-host"></style> - <link rel="stylesheet" href="encryption_migration.css"> - <oobe-dialog tabindex="0" has-buttons for-step="initial"> - </oobe-dialog> - <oobe-dialog tabindex="0" id="ready-dialog" has-buttons - title-key="migrationReadyTitle" for-step="ready" - subtitle-key="migrationReadyDescription"> - <iron-icon slot="oobe-icon" class="warning-icon"></iron-icon> - <div slot="footer" class="layout vertical center center-justified" + <style include="oobe-dialog-host"> + paper-progress { + --paper-progress-active-color: var(--google-blue-500); + height: 3px; + margin-bottom: 28px; + width: 100%; + } + + [slot='content'] div { + color: var(--oobe-text-color); + } + + div.warning { + color: var(--google-red-600); + font-family: var(--oobe-header-font-family); + font-size: var(--oobe-modal-dialog-header-font-size); + font-weight: var(--oobe-modal-dialog-header-font-weight); + line-height: 22px; + padding-bottom: 8px; + } + + .message-container { + border: 1px solid var(--google-grey-200); + border-radius: 8px; + padding: 24px; + } + </style> + <oobe-adaptive-dialog for-step="initial"></oobe-adaptive-dialog> + <oobe-adaptive-dialog id="ready-dialog" role="dialog" for-step="ready" + aria-label$="[[i18nDynamic(locale, 'migrationReadyTitle')]]"> + <hd-iron-icon slot="icon" + icon1x="oobe-32:warning" icon2x="oobe-64:warning"> + </hd-iron-icon> + <h1 slot="title"> + [[i18nDynamic(locale, 'migrationReadyTitle')]] + </h1> + <div slot="subtitle"> + [[i18nDynamic(locale, 'migrationReadyDescription')]] + </div> + <div slot="content" class="layout vertical center center-justified" hidden="[[!isEnoughBattery]]"> <img srcset="images/security_update_1x.png 1x, images/security_update_2x.png 2x" class="oobe-illustration"> </div> - <div slot="footer" class="layout vertical" aria-live="polite" + <div slot="content" class="layout vertical" aria-live="polite" hidden="[[isEnoughBattery]]"> - <div class="warning"> - [[computeBatteryWarningLabel_(locale, batteryPercent)]] - </div> - <template is="dom-if" if="[[isCharging]]"> - <div>[[i18nDynamic(locale,'migrationChargingLabel')]]</div> - </template> - <template is="dom-if" if="[[!isCharging]]"> - <div>[[i18nDynamic(locale,'migrationAskChargeMessage')]]</div> - </template> - <div> - [[computeNecessaryBatteryLevelLabel_(locale, - necessaryBatteryPercent)]] + <div class="message-container"> + <div class="warning"> + [[computeBatteryWarningLabel_(locale, batteryPercent)]] + </div> + <template is="dom-if" if="[[isCharging]]"> + <div>[[i18nDynamic(locale,'migrationChargingLabel')]]</div> + </template> + <template is="dom-if" if="[[!isCharging]]"> + <div>[[i18nDynamic(locale,'migrationAskChargeMessage')]]</div> + </template> + <div> + [[computeNecessaryBatteryLevelLabel_(locale, + necessaryBatteryPercent)]] + </div> </div> </div> - <div slot="bottom-buttons" class="flex layout horizontal" - hidden="[[isResuming]]"> - <div class="flex"></div> + <div slot="bottom-buttons" hidden="[[isResuming]]"> <oobe-text-button border id="skip-button" on-click="onSkip_" hidden="[[isSkipHidden_()]]" text-key="migrationButtonSkip"> </oobe-text-button> @@ -55,12 +84,20 @@ disabled="[[isUpdateDisabled_(isEnoughBattery, isSkipped)]]" text-key="migrationButtonUpdate"></oobe-text-button> </div> - </oobe-dialog> - <oobe-dialog id="migrating-dialog" tabindex="0" for-step="migrating" - title-key="migrationMigratingTitle" - subtitle-key="migrationMigratingDescription"> - <iron-icon slot="oobe-icon" class="chrome-logo"></iron-icon> - <div slot="footer" class="flex layout vertical"> + </oobe-adaptive-dialog> + <oobe-adaptive-dialog id="migrating-dialog" role="dialog" + for-step="migrating" + aria-label$="[[i18nDynamic(locale, 'migrationMigratingTitle')]]"> + <hd-iron-icon slot="icon" + icon1x="oobe-32:googleg" icon2x="oobe-64:googleg"> + </hd-iron-icon> + <h1 slot="title"> + [[i18nDynamic(locale, 'migrationMigratingTitle')]] + </h1> + <div slot="subtitle"> + [[i18nDynamic(locale, 'migrationMigratingDescription')]] + </div> + <div slot="content" class="flex layout vertical center-justified"> <paper-progress id="migration-progress" value="[[progress]]" max="1" step="0.001" indeterminate="[[isProgressIndeterminate_(progress)]]"> @@ -71,17 +108,23 @@ </div> </template> </div> - </oobe-dialog> - <oobe-dialog id="error-dialog" tabindex="0" has-buttons - title-key="migrationFailedTitle" for-step="migration-failed" - subtitle-key="migrationFailedSubtitle"> - <iron-icon icon="cr:warning" slot="oobe-icon" class="warning"> - </iron-icon> - <div slot="footer"> + </oobe-adaptive-dialog> + <oobe-adaptive-dialog id="error-dialog" role="dialog" + for-step="migration-failed" + aria-label$="[[i18nDynamic(locale, 'migrationFailedTitle')]]"> + <hd-iron-icon slot="icon" + icon1x="oobe-32:warning" icon2x="oobe-64:warning"> + </hd-iron-icon> + <h1 slot="title"> + [[i18nDynamic(locale, 'migrationFailedTitle')]] + </h1> + <div slot="subtitle"> + [[i18nDynamic(locale, 'migrationFailedSubtitle')]] + </div> + <div slot="content"> <div>[[i18nDynamic(locale,'migrationFailedMessage')]]</div> </div> - <div slot="bottom-buttons" class="flex layout horizontal"> - <div class="flex"></div> + <div slot="bottom-buttons"> <if expr="_google_chrome"> <oobe-text-button border on-click="onReportAnIssue_" text-key="migrationButtonReportAnIssue"></oobe-text-button> @@ -90,25 +133,34 @@ on-click="onRestartOnFailure_" text-key="migrationButtonRestart"> </oobe-text-button> </div> - </oobe-dialog> - <oobe-dialog id="insufficient-space-dialog" tabindex="0" has-buttons - title-key="migrationReadyTitle" for-step="not-enough-space" - subtitle-key="migrationReadyDescription"> - <iron-icon slot="oobe-icon" class="chrome-logo"></iron-icon> - <div slot="footer" class="layout vertical" aria-live="polite"> - <div class="warning"> - [[i18nDynamic(locale,'migrationNospaceWarningLabel')]] - </div> - <div>[[i18nDynamic(locale,'migrationAskFreeSpaceMessage')]]</div> - <div> - [[computeAvailableSpaceLabel_(locale, availableSpaceInString)]] - </div> - <div> - [[computeNecessarySpaceLabel_(locale, necessarySpaceInString)]] + </oobe-adaptive-dialog> + <oobe-adaptive-dialog id="insufficient-space-dialog" role="dialog" + for-step="not-enough-space" + aria-label$="[[i18nDynamic(locale, 'migrationReadyTitle')]]"> + <hd-iron-icon slot="icon" + icon1x="oobe-32:warning" icon2x="oobe-64:warning"> + </hd-iron-icon> + <h1 slot="title"> + [[i18nDynamic(locale, 'migrationReadyTitle')]] + </h1> + <div slot="subtitle"> + [[i18nDynamic(locale, 'migrationReadyDescription')]] + </div> + <div slot="content" class="layout vertical" aria-live="polite"> + <div class="message-container"> + <div class="warning"> + [[i18nDynamic(locale,'migrationNospaceWarningLabel')]] + </div> + <div>[[i18nDynamic(locale,'migrationAskFreeSpaceMessage')]]</div> + <div> + [[computeAvailableSpaceLabel_(locale, availableSpaceInString)]] + </div> + <div> + [[computeNecessarySpaceLabel_(locale, necessarySpaceInString)]] + </div> </div> </div> - <div slot="bottom-buttons" class="flex layout horizontal"> - <div class="flex"></div> + <div slot="bottom-buttons"> <oobe-text-button inverse id="insufficient-space-skip-button" hidden="[[isResuming]]" on-click="onSkip_" text-key="migrationButtonContinue"> @@ -119,6 +171,6 @@ text-key="migrationButtonRestart"> </oobe-text-button> </div> - </oobe-dialog> + </oobe-adaptive-dialog> </template> </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js b/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js index 4423102..9877a373 100644 --- a/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js +++ b/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js
@@ -15,6 +15,7 @@ this.initializeLoginScreen('MultiDeviceSetupScreen', {}); }, + get defaultControl() { return this.$.impl; }, @@ -22,13 +23,4 @@ updateLocalizedContent() { this.$.impl.updateLocalizedContent(); }, - - onBeforeShow() { - if (loadTimeData.valueExists('newLayoutEnabled') && - loadTimeData.getBoolean('newLayoutEnabled')) { - document.documentElement.setAttribute('new-layout', ''); - } else { - document.documentElement.removeAttribute('new-layout'); - } - }, });
diff --git a/chrome/browser/resources/chromeos/multidevice_setup/multidevice_setup_post_oobe.js b/chrome/browser/resources/chromeos/multidevice_setup/multidevice_setup_post_oobe.js index ad6b1c56..b80c392 100644 --- a/chrome/browser/resources/chromeos/multidevice_setup/multidevice_setup_post_oobe.js +++ b/chrome/browser/resources/chromeos/multidevice_setup/multidevice_setup_post_oobe.js
@@ -69,27 +69,6 @@ behaviors: [I18nBehavior], /** @override */ - ready() { - var url = new URL(document.URL); - var dialogHeight = url.searchParams.get('dialog-height'); - var dialogWidth = url.searchParams.get('dialog-width'); - if (dialogHeight && dialogWidth) { - // Below code is also used to set the dialog size for display manager and - // in-session assistant onboarding flow. Please make sure code changes are - // applied to all places. - document.documentElement.style.setProperty( - '--oobe-oobe-dialog-height-base', dialogHeight + 'px'); - document.documentElement.style.setProperty( - '--oobe-oobe-dialog-width-base', dialogWidth + 'px'); - if (parseInt(dialogWidth, 10) > parseInt(dialogHeight, 10)) { - document.documentElement.setAttribute('orientation', 'horizontal'); - } else { - document.documentElement.setAttribute('orientation', 'vertical'); - } - } - }, - - /** @override */ attached() { this.delegate_ = new multidevice_setup.PostOobeDelegate(); this.$$('multidevice-setup').initializeSetupFlow();
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.html b/chrome/browser/resources/new_tab_page/modules/cart/module.html index 1d7a602..061adc3 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.html +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.html
@@ -208,7 +208,8 @@ <div id="leftProbe" class="probe"></div> <template id="cartItemRepeat" is="dom-repeat" items="[[cartItems]]"> <a class="cart-item" title="[[item.merchant]]" - href="[[item.cartUrl.url]]"> + href="[[item.cartUrl.url]]" on-click="onCartItemClick_" + on-auxclick="onCartItemClick_"> <cr-icon-button class="icon-more-vert" title="$i18n{moreActions}" on-click="onCartMenuButtonClick_"> </cr-icon-button>
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.js b/chrome/browser/resources/new_tab_page/modules/cart/module.js index e8844a1..8ab899a 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.js +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.js
@@ -231,9 +231,12 @@ loadTimeData.getString('modulesCartModuleMenuHideToastMessage'), restoreCallback: () => { ChromeCartProxy.getInstance().handler.restoreHiddenCartModule(); + chrome.metricsPrivate.recordUserAction( + 'NewTabPage.Carts.UndoHideModule'); }, }, })); + chrome.metricsPrivate.recordUserAction('NewTabPage.Carts.HideModule'); } /** @private */ @@ -247,9 +250,12 @@ loadTimeData.getString('modulesCartModuleMenuRemoveToastMessage'), restoreCallback: () => { ChromeCartProxy.getInstance().handler.restoreRemovedCartModule(); + chrome.metricsPrivate.recordUserAction( + 'NewTabPage.Carts.UndoRemoveModule'); }, }, })); + chrome.metricsPrivate.recordUserAction('NewTabPage.Carts.RemoveModule'); } /** @@ -266,6 +272,7 @@ } } this.scrollToIndex_(lastVisibleIndex + 1); + chrome.metricsPrivate.recordUserAction('NewTabPage.Carts.RightScrollClick'); } /** @@ -283,6 +290,7 @@ } } this.scrollToIndex_(Math.max(0, firstVisibleIndex - visibleRange)); + chrome.metricsPrivate.recordUserAction('NewTabPage.Carts.LeftScrollClick'); } /** @@ -317,6 +325,16 @@ (cartCarousel.scrollLeft + cartCarousel.clientWidth) > (cart.offsetLeft + cart.offsetWidth); } + + /** + * @param {!Event} e + * @private + */ + onCartItemClick_(e) { + const index = this.$.cartItemRepeat.indexForElement(e.target); + ChromeCartProxy.getInstance().handler.onCartItemClicked(index); + this.dispatchEvent(new Event('usage', {bubbles: true, composed: true})); + } } customElements.define(ChromeCartModuleElement.is, ChromeCartModuleElement); @@ -327,6 +345,7 @@ await ChromeCartProxy.getInstance().handler.getWarmWelcomeVisible(); const {carts} = await ChromeCartProxy.getInstance().handler.getMerchantCarts(); + ChromeCartProxy.getInstance().handler.onModuleCreated(carts.length); if (carts.length === 0) { return null; }
diff --git a/chrome/browser/resources/pdf/manifest.json b/chrome/browser/resources/pdf/manifest.json index 6c3b296b..bd9d36b 100644 --- a/chrome/browser/resources/pdf/manifest.json +++ b/chrome/browser/resources/pdf/manifest.json
@@ -17,6 +17,6 @@ "mime_types": [ "application/pdf" ], - "content_security_policy": "script-src 'self' 'wasm-eval' blob: filesystem: chrome://resources; object-src * blob: externalfile: file: filesystem: data:; plugin-types application/x-google-chrome-pdf", + "content_security_policy": "script-src 'self' 'wasm-eval' blob: filesystem: chrome://resources; object-src * blob: externalfile: file: filesystem: data:", "mime_types_handler": "index.html" }
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 cfc1b906..f688f1a1 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google-aktiwiteitkontroles</translation> <translation id="5005498671520578047">Kopieer wagwoord</translation> <translation id="5011311129201317034"><ph name="SITE" /> wil koppel</translation> -<translation id="5013696553129441713">Geen nuwe voorstelle nie</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Laat toe</translation> <translation id="5040262127954254034">Privaatheid</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Laai af</translation> <translation id="751961395872307827">Kan nie aan die werf koppel nie</translation> <translation id="753225086557513863">Vir later geskeduleer</translation> -<translation id="7542481630195938534">Kan nie voorstelle kry nie</translation> <translation id="7559975015014302720">Ligte Modus is af</translation> <translation id="7562080006725997899">Vee blaaierdata uit</translation> <translation id="756809126120519699">Het Chrome-data uitgevee</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 e87a6c8..f327e6894 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">የGoogle እንቅስቃሴ መቆጣጠሪያዎች</translation> <translation id="5005498671520578047">የይለፍ ቃል ቅዳ</translation> <translation id="5011311129201317034"><ph name="SITE" /> መገናኘት ይፈልጋል</translation> -<translation id="5013696553129441713">ምንም አዲስ የአስተያየት ጥቆማዎች የሉም</translation> <translation id="5016205925109358554">ሰሪፍ</translation> <translation id="5039804452771397117">ፍቀድ</translation> <translation id="5040262127954254034">ግላዊነት</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">አውርድ</translation> <translation id="751961395872307827">ከበይነመረቡ ጋር መገናኘት አልተቻለም</translation> <translation id="753225086557513863">ለበኋላ መርሐግብር ተይዞለታል</translation> -<translation id="7542481630195938534">የአስተያየት ጥቆማዎችን ማግኘት አልተቻለም</translation> <translation id="7559975015014302720">ቀላል ሁነታ ጠፍቷል</translation> <translation id="7562080006725997899">የአሰሳ ውሂብን በማጽዳት ላይ</translation> <translation id="756809126120519699">የChrome ውሂብ ጸድቷል</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 7e285318..916ab7a5 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">عناصر التحكم بالنشاط على Google</translation> <translation id="5005498671520578047">نسخ كلمة المرور</translation> <translation id="5011311129201317034">يريد <ph name="SITE" /> الاتصال</translation> -<translation id="5013696553129441713">ما من اقتراحات جديدة</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">سماح</translation> <translation id="5040262127954254034">الخصوصية</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">تنزيل</translation> <translation id="751961395872307827">يتعذّر الاتصال بالموقع</translation> <translation id="753225086557513863">عمليات التنزيل المجدوَلة لوقتٍ لاحق</translation> -<translation id="7542481630195938534">يتعذر الحصول على الاقتراحات</translation> <translation id="7559975015014302720">تم إيقاف الوضع البسيط</translation> <translation id="7562080006725997899">جارٍ محو بيانات التصفح</translation> <translation id="756809126120519699">بيانات Chrome التي تم محوها</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 41ed833..a5dd0a1 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">প্ৰিণ্ট কৰক</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> শ্বেয়াৰ কৰিব নোৱাৰি</translation> <translation id="1477626028522505441">ছার্ভাৰৰ সমস্যাৰ বাবে <ph name="FILE_NAME" /> ডাউনল'ড কৰিব পৰা নগ'ল।</translation> +<translation id="1497470209855416291">ট্ৰায়েল অক্ষম কৰা আছে</translation> <translation id="1506061864768559482">সন্ধান ইঞ্জিন</translation> <translation id="1513352483775369820">বুকমার্কবোৰ আৰু ৱেব ইতিহাস</translation> <translation id="1513858653616922153">পাছৱৰ্ড মচক</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">পৰৱৰ্তী ভিডিঅ'টো চাওক</translation> <translation id="2074143993849053708">Assistantৰ কণ্ঠধ্বনিৰদ্বাৰা সন্ধানৰ সন্মতিৰ ইউআই বন্ধ কৰা হৈছে</translation> <translation id="2082238445998314030">ফলাফল <ph name="TOTAL_RESULTS" />ৰ ভিতৰত <ph name="RESULT_NUMBER" /></translation> +<translation id="2083113399121613785">ট্ৰায়েল সক্ষম কৰা আছে</translation> <translation id="2096012225669085171">সকলো ডিভাইচতে ছিংক আৰু ব্যক্তিগতকৰণ কৰক</translation> <translation id="2100273922101894616">স্বয়ংক্ৰিয়ভাৱে ছাইন ইন কৰক</translation> <translation id="2100314319871056947">পাঠখিনি সৰু সৰুকৈ ভাগ কৰি শ্বেয়াৰ কৰিবলৈ চেষ্টা কৰক</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Googleৰ কাৰ্যকলাপৰ নিয়ন্ত্ৰণ</translation> <translation id="5005498671520578047">পাছৱর্ডটোৰ প্ৰতিলিপি কৰক</translation> <translation id="5011311129201317034"><ph name="SITE" />এ সংযোগ কৰিব বিচাৰিছে</translation> -<translation id="5013696553129441713">কোনো নতুন পৰামৰ্শ নাই</translation> <translation id="5016205925109358554">ছেৰিফ</translation> <translation id="5039804452771397117">অনুমতি দিয়ক</translation> <translation id="5040262127954254034">গোপনীয়তা</translation> @@ -591,6 +592,7 @@ <translation id="5222676887888702881">ছাইন আউট কৰক</translation> <translation id="5230560987958996918"><ph name="SITE" />এ নিকটৱৰ্তী ব্লুটুথ ডিভাইচবোৰ বিচাৰি স্কেন কৰিব বিচাৰে। এই ডিভাইচকেইটা বিচাৰি পোৱা গৈছে:</translation> <translation id="5233638681132016545">নতুন টেব</translation> +<translation id="5250483651202458397">স্ক্ৰীনশ্বট। বন্ধ কৰিবলৈ টিপক।</translation> <translation id="526421993248218238">এই পৃষ্ঠাটো ল’ড কৰিব নোৱাৰি</translation> <translation id="5271967389191913893">ডাউনল'ড কৰিবলগীয়া সমল ডিভাইচে খুলিব নোৱাৰে।</translation> <translation id="5292796745632149097">এইটোলৈ পঠিয়াওক</translation> @@ -835,6 +837,7 @@ <translation id="6767294960381293877">টেব এটা শ্বেয়াৰ কৰিবলৈ আধাকৈ খোল খোৱা ডিভাইচসমূহৰ সূচী।</translation> <translation id="6783942555455976443">পৰৱৰ্তী সময়ৰ কাৰণে এই পৃষ্ঠাখন ছেভ কৰি ৰাখক আৰু এটা ৰিমাইণ্ডাৰ পাওক</translation> <translation id="6811034713472274749">পৃষ্ঠাটো চাবলৈ সাজু</translation> +<translation id="6813446258015311409">Chromeত ছাইন ইন কৰা হ’ল, খোলা আছে।</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> টেবটো বাছনি কৰা হৈছে</translation> <translation id="6833996806551876956">গোপনীয়তা ছেণ্ডবক্সৰ ট্ৰায়েল</translation> @@ -935,7 +938,6 @@ <translation id="7514365320538308">ডাউনল'ড কৰক</translation> <translation id="751961395872307827">ছাইটৰ লগত সংযোগ কৰিব নোৱাৰি</translation> <translation id="753225086557513863">পাছৰ বাবে সময়সূচী নিৰ্ধাৰণ কৰা আছে</translation> -<translation id="7542481630195938534">পৰামৰ্শ লাভ কৰিব নোৱাৰি</translation> <translation id="7559975015014302720">লাইট ম’ড অফ হৈ আছে</translation> <translation id="7562080006725997899">ব্ৰাউজিঙৰ ডেটা মচি থকা হৈছে</translation> <translation id="756809126120519699">মচা Chrome ডেটা</translation> @@ -1094,6 +1096,7 @@ <translation id="8583805026567836021">একাউণ্টৰ ডেটা মচি থকা হৈছে</translation> <translation id="8587585930972369234">সন্ধান কৰিবলৈ স্পৰ্শ কৰি ধৰি ৰাখক</translation> <translation id="860043288473659153">কার্ডৰ গৰাকীৰ নাম</translation> +<translation id="8602358303461588329">Chromeত ছাইন ইন কৰা হ’ল, বন্ধ আছে।</translation> <translation id="860282621117673749">মূল্য কমাৰ সতৰ্কবাৰ্তা</translation> <translation id="8616006591992756292">আপোনাৰ Google একাউণ্টৰ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />ত অন্য ধৰণৰ ব্ৰাউজিং ইতিহাস থাকিব পাৰে।</translation> <translation id="8617240290563765734">ডাউনল’ড কৰা সমলত উল্লিখিত চুপাৰিছ কৰা URLটো খুলিবনে?</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 c7d3d9db..ae906d5 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">Çap edin</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> paylaşmaq mümkün deyil</translation> <translation id="1477626028522505441"><ph name="FILE_NAME" /> faylının endirilməsi server problemləri səbəbindən alınmadı.</translation> +<translation id="1497470209855416291">Sınaq deaktivdir</translation> <translation id="1506061864768559482">Axtarış mühərriki</translation> <translation id="1513352483775369820">Əlfəcin və veb tarixçəsi</translation> <translation id="1513858653616922153">Parolu silin</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">Növbəti videonu izləyin</translation> <translation id="2074143993849053708">Assistentin səsli axtarış razılıq UI-si bağlanıb</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> nəticədən <ph name="RESULT_NUMBER" /></translation> +<translation id="2083113399121613785">Sınaq aktivdir</translation> <translation id="2096012225669085171">Cihazlarda sinxronizaisya edin və fərdiləşdirin</translation> <translation id="2100273922101894616">Hesaba avtomatik giriş</translation> <translation id="2100314319871056947">Mətni kiçik hissələrlə paylaşın</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google fəaliyyət nəzarətləri</translation> <translation id="5005498671520578047">Parolu kopyalayın</translation> <translation id="5011311129201317034"><ph name="SITE" /> qoşulmaq istəyir</translation> -<translation id="5013696553129441713">Yeni təklif yoxdur</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">İcazə verin</translation> <translation id="5040262127954254034">Məxfilik</translation> @@ -936,7 +937,6 @@ <translation id="7514365320538308">Endirmə</translation> <translation id="751961395872307827">Sayta qoşulmaq mümkün deyil</translation> <translation id="753225086557513863">Sonraya planlaşdırıldı</translation> -<translation id="7542481630195938534">Təklifləri əldə etmək mümkün deyil</translation> <translation id="7559975015014302720">Layt rejimi deaktivdir</translation> <translation id="7562080006725997899">Baxış datası silinir</translation> <translation id="756809126120519699">Chrome datası təmizləndi</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 b06be2dd..39ca0307 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Параметры дзейнасці Google</translation> <translation id="5005498671520578047">Капіраваць пароль</translation> <translation id="5011311129201317034"><ph name="SITE" /> хоча падключыцца</translation> -<translation id="5013696553129441713">Няма новых прапаноў</translation> <translation id="5016205925109358554">З засечкамі</translation> <translation id="5039804452771397117">Дазволіць</translation> <translation id="5040262127954254034">Прыватнасць</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Спампаваць</translation> <translation id="751961395872307827">Не ўдаецца падключыцца да сайта</translation> <translation id="753225086557513863">Адкладзена</translation> -<translation id="7542481630195938534">Не ўдалося атрымаць прапановы</translation> <translation id="7559975015014302720">Лёгкі рэжым выключаны</translation> <translation id="7562080006725997899">Ідзе ачыстка даных прагляду</translation> <translation id="756809126120519699">Даныя Chrome выдалены</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 6ca7ee7..dd294d6 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Контроли за активността в Google</translation> <translation id="5005498671520578047">Копиране на паролата</translation> <translation id="5011311129201317034"><ph name="SITE" /> иска да се свърже</translation> -<translation id="5013696553129441713">Няма нови предложения</translation> <translation id="5016205925109358554">Серифен</translation> <translation id="5039804452771397117">Разрешаване</translation> <translation id="5040262127954254034">Поверителност</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Изтегляне</translation> <translation id="751961395872307827">Не може да се установи връзка със сайта</translation> <translation id="753225086557513863">Насрочено за по-късно</translation> -<translation id="7542481630195938534">Предложенията не могат да бъдат показани</translation> <translation id="7559975015014302720">Олекотеният режим е изключен</translation> <translation id="7562080006725997899">Данните за сърфирането се изчистват</translation> <translation id="756809126120519699">Данните в Chrome са изчистени</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 8f99bcd..ab3c110 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">প্রিন্ট</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> শেয়ার করা যাচ্ছে না</translation> <translation id="1477626028522505441">সার্ভার সমস্যার কারণে <ph name="FILE_NAME" /> ডাউনলোড করা যায়নি।</translation> +<translation id="1497470209855416291">ট্রায়াল বন্ধ করা হয়েছে</translation> <translation id="1506061864768559482">সার্চ ইঞ্জিন</translation> <translation id="1513352483775369820">বুকমার্কগুলি এবং ওয়েব ইতিহাস</translation> <translation id="1513858653616922153">পাসওয়ার্ড মুছুন</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">পরবর্তী ভিডিও দেখুন</translation> <translation id="2074143993849053708">Assistant-এ ভয়েস সার্চ করার সম্মতি দেওয়ার UI বন্ধ আছে</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> এর মধ্যে <ph name="RESULT_NUMBER" /> টি ফলাফল</translation> +<translation id="2083113399121613785">ট্রায়াল চালু করা আছে</translation> <translation id="2096012225669085171">বিভিন্ন ডিভাইস জুড়ে সিঙ্ক এবং ব্যক্তিগতকৃত করুন</translation> <translation id="2100273922101894616">অটো সাইন-ইন</translation> <translation id="2100314319871056947">টেক্সটটি ছোট ছোট ভাগে ভাগ করে পাঠানোর চেষ্টা করুন</translation> @@ -567,7 +569,6 @@ <translation id="5004416275253351869">Google অ্যাক্টিভিটির নিয়ন্ত্রণ</translation> <translation id="5005498671520578047">পাসওয়ার্ড কপি করুন</translation> <translation id="5011311129201317034"><ph name="SITE" /> এদের সঙ্গে সংযুক্ত হতে চায়</translation> -<translation id="5013696553129441713">নতুন কোনও প্রস্তাবনা নেই</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">অনুমতি দিন</translation> <translation id="5040262127954254034">গোপনীয়তা</translation> @@ -940,7 +941,6 @@ <translation id="7514365320538308">ডাউনলোড করুন</translation> <translation id="751961395872307827">সাইটের সাথে সংযোগ করা যাচ্ছে না</translation> <translation id="753225086557513863">পরে শুরু করার জন্য শিডিউল করা হয়েছে</translation> -<translation id="7542481630195938534">প্রস্তাবনা পাওয়া যাচ্ছে না</translation> <translation id="7559975015014302720">লাইট মোড বন্ধ আছে</translation> <translation id="7562080006725997899">ব্রাউজিং ইতিহাস সাফ করা হচ্ছে</translation> <translation id="756809126120519699">Chrome ডেটা সাফ হয়েছে</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 911140fc..cfc9df1 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Kontrole aktivnosti na Googleu</translation> <translation id="5005498671520578047">Kopiranje lozinke</translation> <translation id="5011311129201317034"><ph name="SITE" /> se želi povezati</translation> -<translation id="5013696553129441713">Nema novih prijedloga</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Dozvoli</translation> <translation id="5040262127954254034">Privatnost</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Preuzmi</translation> <translation id="751961395872307827">Greška prilikom povezivanja s web lokacijom</translation> <translation id="753225086557513863">Zakazano za kasnije</translation> -<translation id="7542481630195938534">Nije moguće dobiti prijedloge</translation> <translation id="7559975015014302720">Jednostavni način rada je isključen</translation> <translation id="7562080006725997899">Brisanje podataka pregledanja</translation> <translation id="756809126120519699">Chromeovi podaci su obrisani</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 04f910e..ceac826c 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Controls d'activitat de Google</translation> <translation id="5005498671520578047">Copia la contrasenya</translation> <translation id="5011311129201317034"><ph name="SITE" /> es vol connectar</translation> -<translation id="5013696553129441713">No hi ha cap suggeriment nou</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permet</translation> <translation id="5040262127954254034">Privadesa</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Baixa</translation> <translation id="751961395872307827">No es pot connectar amb el lloc web</translation> <translation id="753225086557513863">Programades per a més tard</translation> -<translation id="7542481630195938534">No es poden obtenir suggeriments</translation> <translation id="7559975015014302720">El mode bàsic està desactivat</translation> <translation id="7562080006725997899">S'estan esborrant les dades de navegació</translation> <translation id="756809126120519699">S'han esborrat les dades de Chrome</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 ee591fa..58911c95 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Ovládací prvky aktivity Google</translation> <translation id="5005498671520578047">Kopírování hesla</translation> <translation id="5011311129201317034">Web <ph name="SITE" /> žádá o připojení</translation> -<translation id="5013696553129441713">Žádné nové návrhy</translation> <translation id="5016205925109358554">Patková</translation> <translation id="5039804452771397117">Povolit</translation> <translation id="5040262127954254034">Ochrana soukromí</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Stáhnout</translation> <translation id="751961395872307827">K webu se nelze připojit</translation> <translation id="753225086557513863">Naplánováno na později</translation> -<translation id="7542481630195938534">Návrhy nelze načíst</translation> <translation id="7559975015014302720">Zjednodušený režim je vypnutý</translation> <translation id="7562080006725997899">Mazání údajů o prohlížení</translation> <translation id="756809126120519699">Vymazání údajů Chromu</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 02a5bf78..77b2e684 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Aktivitetsadministration på Google</translation> <translation id="5005498671520578047">Kopiér adgangskode</translation> <translation id="5011311129201317034"><ph name="SITE" /> vil gerne oprette forbindelse</translation> -<translation id="5013696553129441713">Der er ingen nye forslag</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Tillad</translation> <translation id="5040262127954254034">Privatliv</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Download</translation> <translation id="751961395872307827">Der kunne ikke oprettes forbindelse til websitet</translation> <translation id="753225086557513863">Planlagt til senere</translation> -<translation id="7542481630195938534">Forslagene kan ikke hentes</translation> <translation id="7559975015014302720">Lite-tilstand er deaktiveret</translation> <translation id="7562080006725997899">Browserdata ryddes</translation> <translation id="756809126120519699">Chrome-dataene blev ryddet</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 2eb3c67..fbaacdd 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google-Aktivitätseinstellungen</translation> <translation id="5005498671520578047">Passwort kopieren</translation> <translation id="5011311129201317034"><ph name="SITE" /> möchte eine Verbindung herstellen</translation> -<translation id="5013696553129441713">Keine neuen Vorschläge</translation> <translation id="5016205925109358554">Serifenschrift</translation> <translation id="5039804452771397117">Zulassen</translation> <translation id="5040262127954254034">Datenschutz</translation> @@ -593,6 +592,7 @@ <translation id="5222676887888702881">Abmelden</translation> <translation id="5230560987958996918"><ph name="SITE" /> möchte nach Bluetooth-Geräten in der Nähe suchen. Die folgenden Geräte wurden gefunden:</translation> <translation id="5233638681132016545">Neuer Tab</translation> +<translation id="5250483651202458397">Screenshot. Zum Schließen tippen.</translation> <translation id="526421993248218238">Fehler beim Laden der Seite</translation> <translation id="5271967389191913893">Das Gerät kann den Inhalt, der heruntergeladen werden soll, nicht öffnen.</translation> <translation id="5292796745632149097">Senden an</translation> @@ -838,6 +838,7 @@ <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> <translation id="6811034713472274749">Seitenansicht bereit</translation> +<translation id="6813446258015311409">In Chrome anmelden, geöffnet.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">Tab „<ph name="TAB_TITLE" />“ ausgewählt</translation> <translation id="6833996806551876956">Privacy Sandbox-Testmodus</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">Herunterladen</translation> <translation id="751961395872307827">Keine Verbindung zur Website möglich</translation> <translation id="753225086557513863">Für später geplant</translation> -<translation id="7542481630195938534">Vorschläge können nicht abgerufen werden</translation> <translation id="7559975015014302720">Lite-Modus ist deaktiviert</translation> <translation id="7562080006725997899">Browserdaten werden gelöscht</translation> <translation id="756809126120519699">Gelöschte Chrome-Daten</translation> @@ -1098,6 +1098,7 @@ <translation id="8583805026567836021">Kontodaten werden gelöscht</translation> <translation id="8587585930972369234">Zum Suchen gedrückt halten</translation> <translation id="860043288473659153">Name des Karteninhabers</translation> +<translation id="8602358303461588329">In Chrome anmelden, geschlossen.</translation> <translation id="860282621117673749">Benachrichtigungen bei Preisnachlässen</translation> <translation id="8616006591992756292">Unter <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> sind möglicherweise weitere Arten von Browserverlaufsdaten für Ihr Google-Konto gespeichert.</translation> <translation id="8617240290563765734">Soll die im heruntergeladenen Inhalt angegebene URL geöffnet werden?</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 3fc887c..4300c17 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Στοιχεία ελέγχου δραστηριότητας Google</translation> <translation id="5005498671520578047">Αντιγραφή κωδικού πρόσβασης</translation> <translation id="5011311129201317034">Ο ιστότοπος <ph name="SITE" /> επιθυμεί σύνδεση</translation> -<translation id="5013696553129441713">Δεν υπάρχουν νέες προτάσεις</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Επιτρέπεται</translation> <translation id="5040262127954254034">Απόρρητο</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Λήψη</translation> <translation id="751961395872307827">Δεν είναι δυνατή η σύνδεση στον ιστότοπο</translation> <translation id="753225086557513863">Προγραμματισμένο για αργότερα</translation> -<translation id="7542481630195938534">Δεν είναι δυνατή η λήψη προτάσεων</translation> <translation id="7559975015014302720">Η λειτουργία Lite είναι απενεργοποιημένη</translation> <translation id="7562080006725997899">Διαγραφή δεδομένων περιήγησης</translation> <translation id="756809126120519699">Τα δεδομένα του Chrome διαγράφηκαν</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 8bfeb0c..4e6d942 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">Google activity controls</translation> <translation id="5005498671520578047">Copy password</translation> <translation id="5011311129201317034"><ph name="SITE" /> wants to connect</translation> -<translation id="5013696553129441713">No new suggestions</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Allow</translation> <translation id="5040262127954254034">Privacy</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">Download</translation> <translation id="751961395872307827">Can't connect to the site</translation> <translation id="753225086557513863">Scheduled for later</translation> -<translation id="7542481630195938534">Can’t get suggestions</translation> <translation id="7559975015014302720">Lite mode is off</translation> <translation id="7562080006725997899">Clear browsing data</translation> <translation id="756809126120519699">Cleared Chrome data</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 774ad3b..1ef21b4 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Controles de actividad de Google</translation> <translation id="5005498671520578047">Copiar contraseña</translation> <translation id="5011311129201317034"><ph name="SITE" /> desea conectarse</translation> -<translation id="5013696553129441713">No hay sugerencias nuevas</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permitir</translation> <translation id="5040262127954254034">Privacidad</translation> @@ -940,7 +939,6 @@ <translation id="7514365320538308">Descargar</translation> <translation id="751961395872307827">No se puede conectar al sitio</translation> <translation id="753225086557513863">Programadas para más tarde</translation> -<translation id="7542481630195938534">No se pueden obtener sugerencias</translation> <translation id="7559975015014302720">El modo lite está desactivado</translation> <translation id="7562080006725997899">Borrando datos de navegación</translation> <translation id="756809126120519699">Datos de Chrome borrados</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 2398a1d5..b689729 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Controles de actividad de Google</translation> <translation id="5005498671520578047">Copiar contraseña</translation> <translation id="5011311129201317034"><ph name="SITE" /> quiere conectarse</translation> -<translation id="5013696553129441713">No hay sugerencias nuevas</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permitir</translation> <translation id="5040262127954254034">Privacidad</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Descargar</translation> <translation id="751961395872307827">No se puede establecer conexión con el sitio web</translation> <translation id="753225086557513863">Programada para más adelante</translation> -<translation id="7542481630195938534">No se pueden obtener sugerencias</translation> <translation id="7559975015014302720">El modo básico está desactivado</translation> <translation id="7562080006725997899">Borrando datos de navegación</translation> <translation id="756809126120519699">Datos de Chrome borrados</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 25797f2..4159c11 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google'i kontotegevuste haldus</translation> <translation id="5005498671520578047">Parooli kopeerimine</translation> <translation id="5011311129201317034"><ph name="SITE" /> soovib ühenduse luua</translation> -<translation id="5013696553129441713">Uusi soovitusi pole</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Luba</translation> <translation id="5040262127954254034">Privaatsus</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Laadi alla</translation> <translation id="751961395872307827">Saidiga ei saa ühendust luua</translation> <translation id="753225086557513863">Ajastatud hilisemaks</translation> -<translation id="7542481630195938534">Soovitusi ei saa hankida</translation> <translation id="7559975015014302720">Lihtsustatud režiim on väljas</translation> <translation id="7562080006725997899">Sirvimisandmete kustutamine</translation> <translation id="756809126120519699">Chrome'i andmed kustutati</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 7bf70a2..b753bb7 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google-ko jarduerak kontrolatzeko aukerak</translation> <translation id="5005498671520578047">Kopiatu pasahitza</translation> <translation id="5011311129201317034"><ph name="SITE" /> webguneak konektatu egin nahi du</translation> -<translation id="5013696553129441713">Ez dago iradokizun berririk</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Baimendu</translation> <translation id="5040262127954254034">Pribatutasuna</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Deskargatu</translation> <translation id="751961395872307827">Ezin da konektatu webgunera</translation> <translation id="753225086557513863">Geroago deskargatzeko programatuta</translation> -<translation id="7542481630195938534">Ezin dira lortu iradokizunak</translation> <translation id="7559975015014302720">Oinarrizko modua desaktibatuta dago</translation> <translation id="7562080006725997899">Arakatze-datuak garbitzen</translation> <translation id="756809126120519699">Garbitu dira Chrome-ko datuak</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 8246b5b..4914c3c 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">کنترلهای فعالیت Google</translation> <translation id="5005498671520578047">کپی گذرواژه</translation> <translation id="5011311129201317034"><ph name="SITE" /> میخواهد مرتبط شود</translation> -<translation id="5013696553129441713">هیچ پیشنهاد جدیدی نیست</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">اجازه دادن</translation> <translation id="5040262127954254034">حریمخصوصی</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">بارگیری</translation> <translation id="751961395872307827">نمیتوان به این سایت متصل شد</translation> <translation id="753225086557513863">برای فرصتی دیگر زمانبندی شده است</translation> -<translation id="7542481630195938534">دریافت پیشنهادها امکانپذیر نیست</translation> <translation id="7559975015014302720">«حالت ساده» خاموش است</translation> <translation id="7562080006725997899">پاک کردن دادههای مرور</translation> <translation id="756809126120519699">دادههای Chrome پاک شد</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 6ca0a2c..c9dbaa0a 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google-toimintojen hallinta</translation> <translation id="5005498671520578047">Kopioi salasana</translation> <translation id="5011311129201317034"><ph name="SITE" /> haluaa muodostaa yhteyden</translation> -<translation id="5013696553129441713">Ei uusia ehdotuksia</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Salli</translation> <translation id="5040262127954254034">Tietosuoja</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Lataa</translation> <translation id="751961395872307827">Yhteyden muodostaminen sivustoon epäonnistui</translation> <translation id="753225086557513863">Ajoitettu myöhemmäksi</translation> -<translation id="7542481630195938534">Ehdotusten haku epäonnistui</translation> <translation id="7559975015014302720">Yksinkertaistettu tila on pois päältä</translation> <translation id="7562080006725997899">Selaustietoja poistetaan</translation> <translation id="756809126120519699">Chrome-tiedot tyhjennetty</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 4dc8ded..705ea06 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Mga kontrol ng aktibidad sa Google</translation> <translation id="5005498671520578047">Kopyahin password</translation> <translation id="5011311129201317034">Gustong kumonekta ng <ph name="SITE" /></translation> -<translation id="5013696553129441713">Walang bagong suhestyon</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Payagan</translation> <translation id="5040262127954254034">Privacy</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">I-download</translation> <translation id="751961395872307827">Hindi makakonekta sa site</translation> <translation id="753225086557513863">Nakaiskedyul para sa ibang pagkakataon</translation> -<translation id="7542481630195938534">Hindi makakuha ng mga suhestyon</translation> <translation id="7559975015014302720">Naka-off ang Lite mode</translation> <translation id="7562080006725997899">Kini-clear ang data sa pag-browse</translation> <translation id="756809126120519699">Na-clear ang data ng Chrome</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 05fd76b..dc778c08 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Commandes d'activité Google</translation> <translation id="5005498671520578047">Copier mot de passe</translation> <translation id="5011311129201317034"><ph name="SITE" /> veut se connecter</translation> -<translation id="5013696553129441713">Aucune nouvelle suggestion</translation> <translation id="5016205925109358554">Avec empattement</translation> <translation id="5039804452771397117">Autoriser</translation> <translation id="5040262127954254034">Confidentialité</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Télécharger</translation> <translation id="751961395872307827">Impossible de se connecter à ce site</translation> <translation id="753225086557513863">Programmé pour plus tard</translation> -<translation id="7542481630195938534">Impossible d'obtenir des suggestions</translation> <translation id="7559975015014302720">Le mode simplifié est désactivé</translation> <translation id="7562080006725997899">Effacement des données de navigation en cours…</translation> <translation id="756809126120519699">Données de Chrome effacées</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 25d86f92..d7788d4 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Commandes Google relatives à l'activité</translation> <translation id="5005498671520578047">Copier mot de passe</translation> <translation id="5011311129201317034"><ph name="SITE" /> tente de se connecter</translation> -<translation id="5013696553129441713">Aucune nouvelle suggestion</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Autoriser</translation> <translation id="5040262127954254034">Confidentialité</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Télécharger</translation> <translation id="751961395872307827">Impossible de se connecter au site</translation> <translation id="753225086557513863">Téléchargement programmé pour plus tard</translation> -<translation id="7542481630195938534">Impossible d'obtenir des suggestions</translation> <translation id="7559975015014302720">Mode simplifié désactivé</translation> <translation id="7562080006725997899">Effacement des données de navigation en cours</translation> <translation id="756809126120519699">Données de Chrome effacées</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 53724761..20602d1 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Controis de actividade de Google</translation> <translation id="5005498671520578047">Copiar contrasinal</translation> <translation id="5011311129201317034"><ph name="SITE" /> quere conectarse</translation> -<translation id="5013696553129441713">Non hai ningunha suxestión nova</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permitir</translation> <translation id="5040262127954254034">Privacidade</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Descargar</translation> <translation id="751961395872307827">Non se puido establecer conexión co sitio</translation> <translation id="753225086557513863">Programada para máis tarde</translation> -<translation id="7542481630195938534">Non se puideron obter suxestións</translation> <translation id="7559975015014302720">O modo básico está desactivado</translation> <translation id="7562080006725997899">Borrando datos de navegación</translation> <translation id="756809126120519699">Borráronse os datos de Chrome</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 3780b4b..5575203 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">પ્રિન્ટ</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> શેર કરી શકતાં નથી</translation> <translation id="1477626028522505441">સર્વર સમસ્યાઓને કારણે <ph name="FILE_NAME" /> ડાઉનલોડ નિષ્ફળ થયું.</translation> +<translation id="1497470209855416291">અજમાયશ બંધ છે</translation> <translation id="1506061864768559482">શોધ એન્જિન</translation> <translation id="1513352483775369820">બુકમાર્ક્સ અને વેબ ઇતિહાસ</translation> <translation id="1513858653616922153">પાસવર્ડ ડિલીટ કરો</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">આગલો વીડિયો જુઓ</translation> <translation id="2074143993849053708">Assistant વૉઇસ શોધની સંમતિ માટેનું UI બંધ કર્યું</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> માંથી <ph name="RESULT_NUMBER" /> પરિણામ</translation> +<translation id="2083113399121613785">અજમાયશ ચાલુ છે</translation> <translation id="2096012225669085171">સમગ્ર ઉપકરણો પર સિંક કરો અને વ્યક્તિગત બનાવો</translation> <translation id="2100273922101894616">સ્વતઃ સાઇન-ઇન</translation> <translation id="2100314319871056947">ટેક્સ્ટને નાના-નાના ટૂકડામાં શેર કરી જુઓ</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google પ્રવૃત્તિ નિયંત્રણો</translation> <translation id="5005498671520578047">પાસવર્ડની કૉપિ કરો</translation> <translation id="5011311129201317034"><ph name="SITE" />, કનેક્ટ કરવા માગે છે</translation> -<translation id="5013696553129441713">કોઈ નવા સૂચનો નથી</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">મંજૂરી આપો</translation> <translation id="5040262127954254034">પ્રાઇવસી</translation> @@ -936,7 +937,6 @@ <translation id="7514365320538308">ડાઉનલોડ કરો</translation> <translation id="751961395872307827">સાઇટ સાથે કનેક્ટ કરી શકાતું નથી</translation> <translation id="753225086557513863">પછી માટે શેડ્યૂલ કરેલું</translation> -<translation id="7542481630195938534">સૂચનો મેળવી શકતાં નથી</translation> <translation id="7559975015014302720">લાઇટ મોડ બંધ છે</translation> <translation id="7562080006725997899">બ્રાઉઝિંગ ડેટા સાફ કરો</translation> <translation id="756809126120519699">Chrome ડેટા સાફ કર્યો</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 fac7a8a3..d4e54a4 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
@@ -440,7 +440,7 @@ <translation id="4170011742729630528">सेवा उपलब्ध नहीं है; बाद में फिर से प्रयास करें.</translation> <translation id="4179980317383591987"><ph name="AMOUNT" /> इस्तेमाल किए गए</translation> <translation id="4181841719683918333">भाषाएं</translation> -<translation id="4183868528246477015">'Google लेंस' से खोजें <ph name="BEGIN_NEW" />नया<ph name="END_NEW" /></translation> +<translation id="4183868528246477015">Google Lens से खोजें <ph name="BEGIN_NEW" />नया<ph name="END_NEW" /></translation> <translation id="4195643157523330669">नए टैब में खोलें</translation> <translation id="4198423547019359126">डाउनलोड करने की कोई जगह उपलब्ध नहीं है</translation> <translation id="4209895695669353772">Google की ओर से सुझाई गई मनमुताबिक सामग्री पाने के लिए, 'सिंक करें' को चालू करें</translation> @@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google गतिविधि नियंत्रण</translation> <translation id="5005498671520578047">पासवर्ड कॉपी करें</translation> <translation id="5011311129201317034"><ph name="SITE" /> कनेक्ट करना चाहती है</translation> -<translation id="5013696553129441713">कोई नया सुझाव नहीं है</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">अनुमति दें</translation> <translation id="5040262127954254034">निजता</translation> @@ -593,6 +592,7 @@ <translation id="5222676887888702881">साइन आउट करें</translation> <translation id="5230560987958996918"><ph name="SITE" /> आस-पास मौजूद ब्लूटूथ वाले डिवाइस स्कैन करना चाहती है. ये डिवाइस मिले हैं:</translation> <translation id="5233638681132016545">नया टैब</translation> +<translation id="5250483651202458397">स्क्रीनशॉट. बंद करने के लिए इस पर टैप करें.</translation> <translation id="526421993248218238">यह पेज लोड नहीं हो पा रहा है</translation> <translation id="5271967389191913893">डाउनलोड की जाने वाली सामग्री को डिवाइस नहीं खोल सकता.</translation> <translation id="5292796745632149097">इस पर भेजें</translation> @@ -838,6 +838,7 @@ <translation id="6767294960381293877">टैब शेयर करने के लिए चुने जाने वाले डिवाइस की सूची आधी खुली हुई है.</translation> <translation id="6783942555455976443">इस पेज को बाद के लिए सेव करें और रिमाइंडर पाएं</translation> <translation id="6811034713472274749">पेज देखने के लिए तैयार है</translation> +<translation id="6813446258015311409">'Chrome में साइन इन करें' पेज खोला गया.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" />, टैब, चुना गया</translation> <translation id="6833996806551876956">निजता सैंडबॉक्स ट्रायल</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">डाउनलोड करें</translation> <translation id="751961395872307827">साइट से कनेक्ट नहीं किया जा सका</translation> <translation id="753225086557513863">बाद में शुरू करने के लिए शेड्यूल किया गया</translation> -<translation id="7542481630195938534">सुझाव नहीं मिल पा रहे हैं</translation> <translation id="7559975015014302720">लाइट मोड बंद है</translation> <translation id="7562080006725997899">ब्राउज़िंग डेटा साफ़ हो रहा है</translation> <translation id="756809126120519699">साफ़ किया गया Chrome डेटा</translation> @@ -1098,6 +1098,7 @@ <translation id="8583805026567836021">खाते का डेटा साफ़ हो रहा है</translation> <translation id="8587585930972369234">खोजने के लिए दबाकर रखें</translation> <translation id="860043288473659153">कार्डधारक का नाम</translation> +<translation id="8602358303461588329">'Chrome में साइन इन करें' पेज बंद किया गया.</translation> <translation id="860282621117673749">कीमत में कमी की सूचनाएं</translation> <translation id="8616006591992756292">आपके Google खाते में <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> पर अन्य प्रकार के ब्राउज़िंग इतिहास हो सकतेे हैं.</translation> <translation id="8617240290563765734">सुझाया गया वह URL खोलें जिसे डाउनलोड की गई सामग्री में बताया गया है?</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 acbda6e..628bf155 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
@@ -566,7 +566,6 @@ <translation id="5004416275253351869">Kontrole aktivnosti na Googleu</translation> <translation id="5005498671520578047">Kopiranje zaporke</translation> <translation id="5011311129201317034">Web-lokacija <ph name="SITE" /> želi se povezati</translation> -<translation id="5013696553129441713">Nema novih prijedloga</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Dopusti</translation> <translation id="5040262127954254034">Privatnost</translation> @@ -937,7 +936,6 @@ <translation id="7514365320538308">Preuzmi</translation> <translation id="751961395872307827">Povezivanje s web-lokacijom nije uspjelo</translation> <translation id="753225086557513863">Zakazano za kasnije</translation> -<translation id="7542481630195938534">Prijedlozi se ne mogu dohvatiti</translation> <translation id="7559975015014302720">Jednostavni je način isključen</translation> <translation id="7562080006725997899">Brisanje podataka o pregledavanju</translation> <translation id="756809126120519699">Chromeovi su podaci izbrisani</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 92587909..c339d3a 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google Tevékenységvezérlők</translation> <translation id="5005498671520578047">Jelszó másolása</translation> <translation id="5011311129201317034">A(z) <ph name="SITE" /> csatlakozni szeretne</translation> -<translation id="5013696553129441713">Nincsenek új javaslatok</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Engedélyezés</translation> <translation id="5040262127954254034">Adatvédelem</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Letöltés</translation> <translation id="751961395872307827">Nem lehet csatlakozni a webhelyhez</translation> <translation id="753225086557513863">Későbbre ütemezve</translation> -<translation id="7542481630195938534">Nem sikerült lekérni a javaslatokat</translation> <translation id="7559975015014302720">Az Egyszerűsített mód ki van kapcsolva</translation> <translation id="7562080006725997899">Böngészési adatok törlése</translation> <translation id="756809126120519699">Chrome-adatok törölve</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 e794757..f8cee034 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google-ում գործողությունների հետագծում</translation> <translation id="5005498671520578047">Պատճենել գաղտնաբառը</translation> <translation id="5011311129201317034"><ph name="SITE" /> կայքն ուզում է միանալ</translation> -<translation id="5013696553129441713">Նոր առաջարկներ չկան</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Թույլ տալ</translation> <translation id="5040262127954254034">Գաղտնիություն</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Ներբեռնել</translation> <translation id="751961395872307827">Չի հաջողվում միանալ կայքին</translation> <translation id="753225086557513863">Պլանավորված է ավելի ուշ ժամանակահատվածի համար</translation> -<translation id="7542481630195938534">Չհաջողվեց ստանալ առաջարկները</translation> <translation id="7559975015014302720">Lite ռեժիմն անջատած է</translation> <translation id="7562080006725997899">Ջնջվում են զննարկման տվյալները</translation> <translation id="756809126120519699">Chrome-ի տվյալները ջնջվեցին</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 6c0fe56..e652596 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Kontrol aktivitas Google</translation> <translation id="5005498671520578047">Salin sandi</translation> <translation id="5011311129201317034"><ph name="SITE" /> ingin terhubung</translation> -<translation id="5013696553129441713">Tidak ada saran baru</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Izinkan</translation> <translation id="5040262127954254034">Privasi</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Download</translation> <translation id="751961395872307827">Tidak dapat terhubung ke situs</translation> <translation id="753225086557513863">Dijadwalkan untuk nanti</translation> -<translation id="7542481630195938534">Tidak bisa mendapatkan saran</translation> <translation id="7559975015014302720">Mode Ringan nonaktif</translation> <translation id="7562080006725997899">Menghapus data penjelajahan</translation> <translation id="756809126120519699">Data Chrome telah dihapus</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 385fe513..68a4f2f 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Virknistýringar Google</translation> <translation id="5005498671520578047">Afrita aðgangsorð</translation> <translation id="5011311129201317034"><ph name="SITE" /> vill tengjast</translation> -<translation id="5013696553129441713">Engar nýjar tillögur</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Leyfa</translation> <translation id="5040262127954254034">Persónuvernd</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Sækja</translation> <translation id="751961395872307827">Ekki er hægt að tengjast svæðinu</translation> <translation id="753225086557513863">Á áætlun síðar</translation> -<translation id="7542481630195938534">Ekki næst í tillögur</translation> <translation id="7559975015014302720">Slökkt er á léttútgáfu</translation> <translation id="7562080006725997899">Hreinsar vefskoðunargögn</translation> <translation id="756809126120519699">Chrome gögnum eytt</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 c37a684..6adba3c5 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Gestione attività Google</translation> <translation id="5005498671520578047">Copia password</translation> <translation id="5011311129201317034">Il sito <ph name="SITE" /> desidera collegarsi</translation> -<translation id="5013696553129441713">Nessun nuovo suggerimento</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Consenti</translation> <translation id="5040262127954254034">Privacy</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Scarica</translation> <translation id="751961395872307827">Impossibile connettersi al sito</translation> <translation id="753225086557513863">Programmato più tardi</translation> -<translation id="7542481630195938534">Impossibile ricevere suggerimenti</translation> <translation id="7559975015014302720">La modalità Lite non è attiva</translation> <translation id="7562080006725997899">Cancellazione dei dati di navigazione in corso</translation> <translation id="756809126120519699">Dati di Chrome cancellati</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 79f41a4..f4a8390 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">בקרת הפעילות בחשבון Google</translation> <translation id="5005498671520578047">העתקת הסיסמה</translation> <translation id="5011311129201317034"><ph name="SITE" /> מבקש להתחבר אל</translation> -<translation id="5013696553129441713">אין הצעות חדשות</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">זה בסדר</translation> <translation id="5040262127954254034">פרטיות</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">הורדה</translation> <translation id="751961395872307827">לא ניתן להתחבר לאתר</translation> <translation id="753225086557513863">ההורדה תוזמנה למועד מאוחר יותר</translation> -<translation id="7542481630195938534">לא ניתן לקבל הצעות</translation> <translation id="7559975015014302720">מצב הטעינה המהירה מושבת</translation> <translation id="7562080006725997899">ניקוי נתוני הגלישה מתבצע</translation> <translation id="756809126120519699">נתוני Chrome נוקו</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb index c26b4a28..caea25d 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
@@ -13,7 +13,7 @@ <translation id="1067922213147265141">他の Google サービス</translation> <translation id="107147699690128016">ファイル拡張子を変更すると、ファイルが別のアプリケーションで開かれる可能性があり、場合によってはデバイスに損害が生じます。</translation> <translation id="1100066534610197918">新しいタブをグループで開く</translation> -<translation id="1105960400813249514">画面キャプチャ</translation> +<translation id="1105960400813249514">スクリーン キャプチャ</translation> <translation id="1111673857033749125">他のデバイスに保存されているブックマークがここに表示されます。</translation> <translation id="1113597929977215864">簡易表示する</translation> <translation id="1118561384561215815">ウェブ上のタスクのサポート</translation> @@ -565,7 +565,6 @@ <translation id="5004416275253351869">Google アクティビティ管理</translation> <translation id="5005498671520578047">パスワードのコピー</translation> <translation id="5011311129201317034"><ph name="SITE" /> が接続を要求しています</translation> -<translation id="5013696553129441713">新しいおすすめ記事はありません</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">許可</translation> <translation id="5040262127954254034">プライバシー</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">ダウンロード</translation> <translation id="751961395872307827">サイトに接続できません</translation> <translation id="753225086557513863">後で開始</translation> -<translation id="7542481630195938534">おすすめの記事を取得できません</translation> <translation id="7559975015014302720">ライトモードはオフです</translation> <translation id="7562080006725997899">閲覧データの消去</translation> <translation id="756809126120519699">Chrome データの消去完了</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 337cd14..8ed6da8 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google აქტივობის მართვის საშუალებები</translation> <translation id="5005498671520578047">პაროლის კოპირება</translation> <translation id="5011311129201317034"><ph name="SITE" /> დაკავშირებას ითხოვს</translation> -<translation id="5013696553129441713">ახალი შემოთავაზებები არ არის</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">დაშვება</translation> <translation id="5040262127954254034">კონფიდენციალურობა</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">ჩამოტვირთვა</translation> <translation id="751961395872307827">საიტთან დაკავშირება ვერ ხერხდება</translation> <translation id="753225086557513863">დაგეგმილია სხვა დროისთვის</translation> -<translation id="7542481630195938534">შემოთავაზებების მიღება ვერ მოხერხდა</translation> <translation id="7559975015014302720">Lite რეჟიმი გამორთულია</translation> <translation id="7562080006725997899">დათვალიერების მონაცემების გასუფთავება</translation> <translation id="756809126120519699">Chrome მონაცემები გასუფთავდა</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 a01325e..ac6f8f2 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">Басып шығару</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> бөлісу мүмкін емес</translation> <translation id="1477626028522505441">Сервердегі ақаулықтар себебінен <ph name="FILE_NAME" /> жүктелмеді.</translation> +<translation id="1497470209855416291">Сынақ мерзімі өшірілген.</translation> <translation id="1506061864768559482">Іздеу жүйесі</translation> <translation id="1513352483775369820">Бетбелгілер мен веб-журнал</translation> <translation id="1513858653616922153">Құпия сөзді жою</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">Келесі бейнені көру</translation> <translation id="2074143993849053708">Assistant-ті дауыспен іздеуге пайдалану туралы келісім терезесі жабылған.</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> ішінен <ph name="RESULT_NUMBER" /> нәтиже</translation> +<translation id="2083113399121613785">Сынақ мерзімі қосылған.</translation> <translation id="2096012225669085171">Барлық құрылғыларда синхрондау және жекелендіру</translation> <translation id="2100273922101894616">Автоматты кіру</translation> <translation id="2100314319871056947">Мәтін тым үлкен, аз-аздан бөлісіп көріңіз.</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google әрекеттерді басқару элементтері</translation> <translation id="5005498671520578047">Құпия сөзді көшіру</translation> <translation id="5011311129201317034"><ph name="SITE" /> сайты байланыс орнатқысы келеді</translation> -<translation id="5013696553129441713">Жаңа ұсыныстар жоқ</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Рұқсат беру</translation> <translation id="5040262127954254034">Құпиялылық</translation> @@ -936,7 +937,6 @@ <translation id="7514365320538308">Жүктеу</translation> <translation id="751961395872307827">Сайтқа қосылу мүмкін емес</translation> <translation id="753225086557513863">Кейінірекке жоспарлау</translation> -<translation id="7542481630195938534">Ұсыныстар алынбайды</translation> <translation id="7559975015014302720">Lite режимі өшірулі</translation> <translation id="7562080006725997899">Шолу деректерін тазалау</translation> <translation id="756809126120519699">Chrome деректері өшірілді</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 06e1f9b75c..08650b9 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">ការគ្រប់គ្រងសកម្មភាព Google</translation> <translation id="5005498671520578047">ថតចម្លងពាក្យសម្ងាត់</translation> <translation id="5011311129201317034"><ph name="SITE" /> ចង់ភ្ជាប់</translation> -<translation id="5013696553129441713">មិនមានការណែនាំថ្មីទេ</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">អនុញ្ញាត</translation> <translation id="5040262127954254034">ឯកជនភាព</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">ទាញយក</translation> <translation id="751961395872307827">មិនអាចភ្ជាប់ទៅទំព័របានទេ</translation> <translation id="753225086557513863">ត្រូវបានកំណត់ពេលទៅពេលក្រោយ</translation> -<translation id="7542481630195938534">មិនអាចទទួលបានការណែនាំទេ</translation> <translation id="7559975015014302720">មុខងារស្រាលបានបិទ</translation> <translation id="7562080006725997899">ការជម្រះទិន្នន័យរុករក</translation> <translation id="756809126120519699">បានជម្រះទិន្នន័យ Chrome</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 1057ee6..ba2acc1 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">Google ಚಟುವಟಿಕೆ ನಿಯಂತ್ರಣಗಳು</translation> <translation id="5005498671520578047">ಪಾಸ್ವರ್ಡ್ ನಕಲಿಸಿ</translation> <translation id="5011311129201317034"><ph name="SITE" /> ಸಂಪರ್ಕಿಸಲು ಬಯಸುತ್ತದೆ</translation> -<translation id="5013696553129441713">ಯಾವುದೇ ಹೊಸ ಸಲಹೆಗಳಿಲ್ಲ</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">ಅನುಮತಿಸಿ</translation> <translation id="5040262127954254034">ಗೌಪ್ಯತೆ</translation> @@ -591,6 +590,7 @@ <translation id="5222676887888702881">ಸೈನ್ ಔಟ್</translation> <translation id="5230560987958996918">ಸಮೀಪದಲ್ಲಿರುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳಿಗಾಗಿ ಸ್ಕ್ಯಾನ್ ಮಾಡಲು <ph name="SITE" /> ಬಯಸುತ್ತದೆ. ಈ ಕೆಳಗಿನ ಸಾಧನಗಳು ಕಂಡುಬಂದಿವೆ:</translation> <translation id="5233638681132016545">ಹೊಸ ಟ್ಯಾಬ್</translation> +<translation id="5250483651202458397">ಸ್ಕ್ರೀನ್ಶಾಟ್. ಮುಚ್ಚಲು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="526421993248218238">ಈ ಪುಟವನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="5271967389191913893">ಡೌನ್ಲೋಡ್ ಮಾಡಬೇಕಾದ ವಿಷಯವನ್ನು ಸಾಧನಕ್ಕೆ ತೆರೆಯಲಾಗುತ್ತಿಲ್ಲ.</translation> <translation id="5292796745632149097">ಇಲ್ಲಿಗೆ ಕಳುಹಿಸಿ</translation> @@ -836,6 +836,7 @@ <translation id="6767294960381293877">ಟ್ಯಾಬ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕಾದ ಸಾಧನಗಳ ಪಟ್ಟಿಯನ್ನು ಅರ್ಧ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation> <translation id="6783942555455976443">ನಂತರದ ಬಳಕೆಗಾಗಿ ಈ ಪುಟವನ್ನು ಉಳಿಸಿ ಮತ್ತು ಜ್ಞಾಪನೆಯನ್ನು ಪಡೆಯಿರಿ</translation> <translation id="6811034713472274749">ವೀಕ್ಷಿಸಲು ಪುಟ ಸಿದ್ಧವಾಗಿದೆ</translation> +<translation id="6813446258015311409">Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ, ತೆರೆಯಲಾಗಿದೆ.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> ಟ್ಯಾಬ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</translation> <translation id="6833996806551876956">ಗೌಪ್ಯತೆ ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್ ಪ್ರಯೋಗ</translation> @@ -936,7 +937,6 @@ <translation id="7514365320538308">ಡೌನ್ಲೋಡ್</translation> <translation id="751961395872307827">ಸೈಟ್ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="753225086557513863">ನಂತರ ಪ್ರಾರಂಭಿಸಲು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ</translation> -<translation id="7542481630195938534">ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="7559975015014302720">ಲೈಟ್ ಮೋಡ್ ಆಫ್ ಆಗಿದೆ</translation> <translation id="7562080006725997899">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="756809126120519699">Chrome ಡೇಟಾ ತೆರವುಗೊಳಿಸಲಾಗಿದೆ</translation> @@ -1096,6 +1096,7 @@ <translation id="8583805026567836021">ಖಾತೆಯ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="8587585930972369234">ಹುಡುಕಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ</translation> <translation id="860043288473659153">ಕಾರ್ಡ್ಹೋಲ್ಡರ್ ಹೆಸರು</translation> +<translation id="8602358303461588329">Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ, ಮುಚ್ಚಲಾಗಿದೆ.</translation> <translation id="860282621117673749">ಬೆಲೆ ಕುಸಿತ ಎಚ್ಚರಿಕೆಗಳು</translation> <translation id="8616006591992756292">ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು.</translation> <translation id="8617240290563765734">ಡೌನ್ಲೋಡ್ ಮಾಡಲಾದ ವಿಷಯದಲ್ಲಿ ಸೂಚಿಸಲಾದ ನಿರ್ದಿಷ್ಟ URL ತೆರೆಯುವುದೇ?</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 be712b5..636a62b 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google 활동 제어</translation> <translation id="5005498671520578047">비밀번호 복사</translation> <translation id="5011311129201317034"><ph name="SITE" />에서 연결하려고 함</translation> -<translation id="5013696553129441713">새로운 추천 콘텐츠 없음</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">허용</translation> <translation id="5040262127954254034">개인정보 보호</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">다운로드</translation> <translation id="751961395872307827">사이트에 연결할 수 없습니다</translation> <translation id="753225086557513863">다운로드 예약</translation> -<translation id="7542481630195938534">추천을 받을 수 없음</translation> <translation id="7559975015014302720">라이트 모드 사용 중지됨</translation> <translation id="7562080006725997899">인터넷 사용 기록 삭제</translation> <translation id="756809126120519699">Chrome 데이터 삭제됨</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 163f0d9..ae652fe 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">Басып чыгаруу</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> менен бөлүшүү мүмкүн эмес</translation> <translation id="1477626028522505441">Сервердеги маселелерден улам <ph name="FILE_NAME" /> жүктөлүп алынган жок.</translation> +<translation id="1497470209855416291">Сыноо өчүрүлдү</translation> <translation id="1506061864768559482">Издөө каражаты</translation> <translation id="1513352483775369820">Кыстармалар жана издөө таржымалы</translation> <translation id="1513858653616922153">Сырсөздү жок кылуу</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">Кийинки видеону көрүү</translation> <translation id="2074143993849053708">Жардамчыга айтып издөөгө уруксат берүү интерфейси жабылды</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> ичинен <ph name="RESULT_NUMBER" /> натыйжа</translation> +<translation id="2083113399121613785">Сыноо иштетилди</translation> <translation id="2096012225669085171">Бардык түзмөктөрдө шайкештирүү жана жекечелештирүү</translation> <translation id="2100273922101894616">Авто кирүү</translation> <translation id="2100314319871056947">Текстти бир нече бөлүккө бөлүп анан бөлүшүп көрүңүз</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google'дагы аракеттерди көзөмөлдөө</translation> <translation id="5005498671520578047">Сырсөздү көчүрүү</translation> <translation id="5011311129201317034"><ph name="SITE" /> сайты туташканы жатат</translation> -<translation id="5013696553129441713">Жаңы сунуш жок</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Уруксат берүү</translation> <translation id="5040262127954254034">Купуялык</translation> @@ -936,7 +937,6 @@ <translation id="7514365320538308">Жүктөп алуу</translation> <translation id="751961395872307827">Сайтка туташпай жатат</translation> <translation id="753225086557513863">Кийинкиге графикке киргизүү</translation> -<translation id="7542481630195938534">Сунуштар жүктөлгөн жок</translation> <translation id="7559975015014302720">Жөнөкөй режим өчүк</translation> <translation id="7562080006725997899">Серептөө дайындары тазаланууда</translation> <translation id="756809126120519699">Chrome дайындары тазаланды</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 774e614..bf0e60f 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">ການຄວບຄຸມການເຄື່ອນໄຫວໃນ Google</translation> <translation id="5005498671520578047">ອັດສຳເນົາລະຫັດຜ່ານ</translation> <translation id="5011311129201317034"><ph name="SITE" /> ຕ້ອງການເຊື່ອມຕໍ່</translation> -<translation id="5013696553129441713">ບໍ່ມີການແນະນຳໃໝ່</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">ອະນຸຍາດ</translation> <translation id="5040262127954254034">ຄວາມເປັນສ່ວນຕົວ</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">ດາວໂຫລດ</translation> <translation id="751961395872307827">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເວັບໄຊໄດ້</translation> <translation id="753225086557513863">ກຳນົດເວລາສຳລັບພາຍຫຼັງແລ້ວ</translation> -<translation id="7542481630195938534">ບໍ່ສາມາດຮັບເອົາຄຳແນະນຳໄດ້</translation> <translation id="7559975015014302720">ໂໝດ Lite ປິດຢູ່</translation> <translation id="7562080006725997899">ກຳລັງລຶບຂໍ້ມູນການທ່ອງເນັດ</translation> <translation id="756809126120519699">ລຶບລ້າງຂໍ້ມູນ Chrome ແລ້ວ</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 ab2d824..5ef90a83 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">„Google“ veiklos valdikliai</translation> <translation id="5005498671520578047">Kopijuoti slaptažodį</translation> <translation id="5011311129201317034"><ph name="SITE" /> nori prisijungti</translation> -<translation id="5013696553129441713">Nėra jokių naujų pasiūlymų</translation> <translation id="5016205925109358554">Su užraitais</translation> <translation id="5039804452771397117">Leisti</translation> <translation id="5040262127954254034">Privatumas</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">Atsisiųsti</translation> <translation id="751961395872307827">Nepavyksta prisijungti prie svetainės</translation> <translation id="753225086557513863">Suplanuota atsisiųsti vėliau</translation> -<translation id="7542481630195938534">Nepavyksta gauti pasiūlymų</translation> <translation id="7559975015014302720">Supaprastintasis režimas išjungtas</translation> <translation id="7562080006725997899">Naršymo duomenų išvalymas</translation> <translation id="756809126120519699">Išvalyti „Chrome“ duomenys</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 98d1cad..16621cbc 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google aktivitātes vadīklas</translation> <translation id="5005498671520578047">Paroles kopēšana</translation> <translation id="5011311129201317034"><ph name="SITE" /> vēlas izveidot savienojumu</translation> -<translation id="5013696553129441713">Nav jaunu ieteikumu</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Atļaut</translation> <translation id="5040262127954254034">Konfidencialitāte</translation> @@ -940,7 +939,6 @@ <translation id="7514365320538308">Lejupielādēt</translation> <translation id="751961395872307827">Nevar izveidot savienojumu ar vietni.</translation> <translation id="753225086557513863">Ieplānota vēlāk</translation> -<translation id="7542481630195938534">Nevar iegūt ieteikumus.</translation> <translation id="7559975015014302720">Vienkāršotais režīms ir izslēgts</translation> <translation id="7562080006725997899">Notiek pārlūkošanas datu notīrīšana</translation> <translation id="756809126120519699">Chrome dati tika notīrīti</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 f9393ac..7dc49ca 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Контроли на активноста на Google</translation> <translation id="5005498671520578047">Копирање лозинка</translation> <translation id="5011311129201317034"><ph name="SITE" /> сака да се поврзе</translation> -<translation id="5013696553129441713">Нема нови предлози</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Дозволи</translation> <translation id="5040262127954254034">Приватност</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Преземи</translation> <translation id="751961395872307827">Не може да се поврзе со сајтот</translation> <translation id="753225086557513863">Закажано за подоцна</translation> -<translation id="7542481630195938534">Не може да се добијат предлози</translation> <translation id="7559975015014302720">„Лесниот режим“ е исклучен</translation> <translation id="7562080006725997899">Чистење податоци од прелистување</translation> <translation id="756809126120519699">Податоците на Chrome се исчистени</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 77dd1a1..11493f3e 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">അച്ചടിക്കുക</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> പങ്കിടാനാവുന്നില്ല</translation> <translation id="1477626028522505441">സെർവർ പ്രശ്നങ്ങൾ കാരണം <ph name="FILE_NAME" /> ഡൗൺലോഡ് ചെയ്യാനായില്ല.</translation> +<translation id="1497470209855416291">ട്രയൽ പ്രവർത്തനരഹിതമാക്കി</translation> <translation id="1506061864768559482">തിരയൽ യന്ത്രം</translation> <translation id="1513352483775369820">ബുക്ക്മാർക്കുകളും വെബ് ചരിത്രവും</translation> <translation id="1513858653616922153">പാസ്വേഡ് ഇല്ലാതാക്കുക</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">അടുത്ത വീഡിയോ കാണുക</translation> <translation id="2074143993849053708">Assistant ശബ്ദ തിരയൽ സമ്മത UI അടച്ചു</translation> <translation id="2082238445998314030"><ph name="RESULT_NUMBER" /> / <ph name="TOTAL_RESULTS" /> ഫലം</translation> +<translation id="2083113399121613785">ട്രയൽ പ്രവർത്തനക്ഷമമാക്കി</translation> <translation id="2096012225669085171">ഉപകരണങ്ങളിലുടനീളം സമന്വയിപ്പിക്കലും വ്യക്തിപരമാക്കലും നടത്തുക.</translation> <translation id="2100273922101894616">സ്വയമേവയുള്ള സൈൻ ഇൻ</translation> <translation id="2100314319871056947">ചെറിയ ഭാഗങ്ങളായി ടെക്സ്റ്റ് പങ്കിടാൻ ശ്രമിക്കൂ</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google പ്രവർത്തന നിയന്ത്രണങ്ങൾ</translation> <translation id="5005498671520578047">പാസ്വേഡ് പകർത്തുക</translation> <translation id="5011311129201317034"><ph name="SITE" /> കണക്റ്റുചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നു</translation> -<translation id="5013696553129441713">പുതിയ നിർദ്ദേശങ്ങളൊന്നുമില്ല</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">അനുവദിക്കൂ</translation> <translation id="5040262127954254034">സ്വകാര്യത</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">ഡൗൺലോഡ് ചെയ്യുക</translation> <translation id="751961395872307827">സൈറ്റിലേക്ക് കണക്റ്റ് ചെയ്യാനാവുന്നില്ല</translation> <translation id="753225086557513863">പിന്നീട് ഡൗൺലോഡ് ചെയ്യാൻ ഷെഡ്യൂൾ ചെയ്തു</translation> -<translation id="7542481630195938534">നിർദ്ദേശങ്ങൾ സ്വീകരിക്കാനാവില്ല</translation> <translation id="7559975015014302720">ലൈറ്റ് മോഡ് ഓഫാണ്</translation> <translation id="7562080006725997899">ബ്രൗസിംഗ് ഡാറ്റ മായ്ക്കൽ</translation> <translation id="756809126120519699">Chrome ഡാറ്റ മായ്ച്ചു</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 465cd7b..71c3641 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
@@ -566,7 +566,6 @@ <translation id="5004416275253351869">Google-н ашиглалт удирдлага</translation> <translation id="5005498671520578047">Нууц үг хуулах</translation> <translation id="5011311129201317034"><ph name="SITE" /> холбогдох хүсэлтэй байна</translation> -<translation id="5013696553129441713">Шинэ зөвлөмж алга</translation> <translation id="5016205925109358554">Сериф</translation> <translation id="5039804452771397117">Зөвшөөрөх</translation> <translation id="5040262127954254034">Нууцлал</translation> @@ -937,7 +936,6 @@ <translation id="7514365320538308">Татаж авах</translation> <translation id="751961395872307827">Сайтад холбогдох боломжгүй байна</translation> <translation id="753225086557513863">Дараа эхлэхээр хуваарилсан</translation> -<translation id="7542481630195938534">Зөвлөмж авах боломжгүй байна</translation> <translation id="7559975015014302720">Lite горим унтраалттай байна</translation> <translation id="7562080006725997899">Хөтөчийн мэдээллийг арилгаж байна</translation> <translation id="756809126120519699">Chrome-н өгөгдлийг устгасан</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 4f53f69..d541a97ea 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">Google ॲक्टिव्हिटी नियंत्रणे</translation> <translation id="5005498671520578047">पासवर्ड कॉपी करा</translation> <translation id="5011311129201317034"><ph name="SITE" /> कनेक्ट करू इच्छिते</translation> -<translation id="5013696553129441713">कोणत्याही नवीन सूचना नाहीत</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">परवानगी द्या</translation> <translation id="5040262127954254034">गोपनीयता</translation> @@ -591,6 +590,7 @@ <translation id="5222676887888702881">साइन आउट करा</translation> <translation id="5230560987958996918"><ph name="SITE" /> ला जवळपासची ब्लूटूथ डिव्हाइस स्कॅन करायची आहेत. खालील डिव्हाइस आढळली:</translation> <translation id="5233638681132016545">नवीन टॅब</translation> +<translation id="5250483651202458397">स्क्रीनशॉट. बंद करण्यासाठी टॅप करा.</translation> <translation id="526421993248218238">हे पेज लोड करू शकत नाही</translation> <translation id="5271967389191913893">डाउनलोड केली जाण्यासाठी डिव्हाइस आशय उघडू शकत नाही.</translation> <translation id="5292796745632149097">यांना पाठवा</translation> @@ -835,6 +835,7 @@ <translation id="6767294960381293877">अर्ध्या उंचीवर उघडलेल्या टॅबसह शेअर करण्यासाठी डिव्हाइसची सूची.</translation> <translation id="6783942555455976443">हे पेज नंतर वाचण्यासाठी सेव्ह करा आणि रिमाइंडर मिळवा</translation> <translation id="6811034713472274749">पेज पाहाण्यासाठी तयार आहे</translation> +<translation id="6813446258015311409">Chrome मध्ये साइन इन करा, उघडले.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> हा टॅब निवडला</translation> <translation id="6833996806551876956">गोपनीयता सॅंडबॉक्स याची चाचणी</translation> @@ -935,7 +936,6 @@ <translation id="7514365320538308">डाउनलोड करा</translation> <translation id="751961395872307827">साइटशी कनेक्ट करु शकत नाही</translation> <translation id="753225086557513863">नंतर सुरू करण्यासाठी शेड्युल केलेले</translation> -<translation id="7542481630195938534">सूचना मिळवू शकत नाही</translation> <translation id="7559975015014302720">लाइट मोड बंद आहे</translation> <translation id="7562080006725997899">ब्राउझिंग डेटा साफ करत आहे</translation> <translation id="756809126120519699">Chrome डेटा साफ केला</translation> @@ -1095,6 +1095,7 @@ <translation id="8583805026567836021">खाते डेटा साफ करत आहे</translation> <translation id="8587585930972369234">शोधण्यासाठी स्पर्श करा आणि धरून ठेवा</translation> <translation id="860043288473659153">कार्डधारकाचे नाव</translation> +<translation id="8602358303461588329">Chrome मध्ये साइन इन करा, बंद केले.</translation> <translation id="860282621117673749">किमतीमध्ये घट झाल्याच्या सूचना</translation> <translation id="8616006591992756292">तुमच्या Google खात्यात <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> वर ब्राउझिंग इतिहासाची अन्य स्वरूपे असू शकतात.</translation> <translation id="8617240290563765734">डाउनलोड केलेल्या आशयमध्ये नमूद केलेली सुचविलेली URL उघडायची?</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 d389c53..7b00d9d 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Kawalan aktiviti Google</translation> <translation id="5005498671520578047">Salin kata laluan</translation> <translation id="5011311129201317034"><ph name="SITE" /> ingin menyambung</translation> -<translation id="5013696553129441713">Tiada cadangan baharu</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Benarkan</translation> <translation id="5040262127954254034">Privasi</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Muat Turun</translation> <translation id="751961395872307827">Tidak dapat menyambung ke tapak</translation> <translation id="753225086557513863">Dijadualkan untuk kemudian</translation> -<translation id="7542481630195938534">Tidak boleh mendapatkan cadangan</translation> <translation id="7559975015014302720">Mod Ringkas dimatikan</translation> <translation id="7562080006725997899">Mengosongkan data penyemakan imbas</translation> <translation id="756809126120519699">Data Chrome dikosongkan</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 fd2dba6..041207c 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google လုပ်ဆောင်ချက် ထိန်းချုပ်မှုများ</translation> <translation id="5005498671520578047">စကားဝှက်ကို ကူးယူပါ</translation> <translation id="5011311129201317034"><ph name="SITE" /> သည် ချိတ်ဆက်လိုပါသည်</translation> -<translation id="5013696553129441713">အကြံပြုချက်အသစ်များ မရှိပါ</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">ခွင့်ပြုရန်</translation> <translation id="5040262127954254034">ကိုယ်ရေး</translation> @@ -937,7 +936,6 @@ <translation id="7514365320538308">ဒေါင်းလုဒ်</translation> <translation id="751961395872307827">ဝဘ်ဆိုက်နှင့် ချိတ်ဆက်၍မရပါ</translation> <translation id="753225086557513863">နောင်အတွက် စီစဉ်ထားသည်</translation> -<translation id="7542481630195938534">အကြံပြုချက်များကို ရယူ၍မရပါ</translation> <translation id="7559975015014302720">'အပေါ့စားမုဒ်' ပိတ်ထားသည်</translation> <translation id="7562080006725997899">ဘရောင်ဇာ ဒေတာကို ရှင်းရန်</translation> <translation id="756809126120519699">Chrome ဒေတာကို ရှင်းလင်းလိုက်ပါပြီ</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 58733c6c..6377305 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">प्रिन्ट गर्नुहोस्</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> आदान प्रदान गर्न सकिएन</translation> <translation id="1477626028522505441"><ph name="FILE_NAME" /> डाउनलोड सर्भरको समस्याको कारण असफल भयो।</translation> +<translation id="1497470209855416291">ट्रायल अफ गरिएको छ</translation> <translation id="1506061864768559482">सर्च इन्जिन</translation> <translation id="1513352483775369820">बुकमार्कहरू र वेब इतिहास</translation> <translation id="1513858653616922153">पासवर्ड मेट्नुहोस्</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">अर्को भिडियो हेर्नुहोस्</translation> <translation id="2074143993849053708">सहायकको प्रयोग गरी भ्वाइस सर्च गर्ने कुराको सहमति लिने UI बन्द गरिएको छ</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> को <ph name="RESULT_NUMBER" /> परिणाम</translation> +<translation id="2083113399121613785">ट्रायल अन गरिएको छ</translation> <translation id="2096012225669085171">यन्त्रहरूभरि सिंक र वैयक्तीकृत गर्नुहोस्</translation> <translation id="2100273922101894616">स्वत: साइन-इन</translation> <translation id="2100314319871056947">पाठलाई विभाजन गरी साना खण्ड बनाएर आदान प्रदान गरी हेर्नुहोस्</translation> @@ -564,7 +566,6 @@ <translation id="5004416275253351869">Google का क्रियाकलापसम्बन्धी नियन्त्रणहरू</translation> <translation id="5005498671520578047">पासवर्ड प्रतिलिपि गर्नुहोस्</translation> <translation id="5011311129201317034"><ph name="SITE" /> जडान गर्न चाहन्छ</translation> -<translation id="5013696553129441713">कुनै पनि नयाँ सुझाव छैन</translation> <translation id="5016205925109358554">सेरिफ</translation> <translation id="5039804452771397117">अनुमति दिनुहोस्</translation> <translation id="5040262127954254034">गोपनीयता</translation> @@ -937,7 +938,6 @@ <translation id="7514365320538308">डाउनलोड गर्नुहोस्</translation> <translation id="751961395872307827">साइटमा जडान गर्न सकिँदैन</translation> <translation id="753225086557513863">पछि डाउनलोड सुरु गर्ने गरी समयतालिका निर्धारण गरिएको</translation> -<translation id="7542481630195938534">सुझावहरू प्राप्त गर्न सकिएन</translation> <translation id="7559975015014302720">लाइट मोड निष्क्रिय छ</translation> <translation id="7562080006725997899">ब्राउजिङ डेटा मेटाउँदै</translation> <translation id="756809126120519699">Chrome को डेटालाई खाली गरियो</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 7a58367..91b2907 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">Google-activiteitsopties</translation> <translation id="5005498671520578047">Wachtwoord kopiëren</translation> <translation id="5011311129201317034"><ph name="SITE" /> wil verbinding maken</translation> -<translation id="5013696553129441713">Geen nieuwe suggesties</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Toestaan</translation> <translation id="5040262127954254034">Privacy</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">Downloaden</translation> <translation id="751961395872307827">Kan geen verbinding maken met de site</translation> <translation id="753225086557513863">Gepland voor later</translation> -<translation id="7542481630195938534">Kan suggesties niet ophalen</translation> <translation id="7559975015014302720">Lite-versie is uitgeschakeld</translation> <translation id="7562080006725997899">Browsegegevens wissen</translation> <translation id="756809126120519699">Chrome-gegevens gewist</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 158fb20..c3d299d 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google Aktivitetslagring</translation> <translation id="5005498671520578047">Kopiér passordet</translation> <translation id="5011311129201317034"><ph name="SITE" /> vil koble til</translation> -<translation id="5013696553129441713">Ingen nye forslag</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Tillat</translation> <translation id="5040262127954254034">Personvern</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Last ned</translation> <translation id="751961395872307827">Kan ikke koble til nettstedet</translation> <translation id="753225086557513863">Planlagt til senere</translation> -<translation id="7542481630195938534">Kan ikke hente forslag</translation> <translation id="7559975015014302720">Forenklet modus er av</translation> <translation id="7562080006725997899">Sletter nettlesingsdata</translation> <translation id="756809126120519699">Chrome-dataene er slettet</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 2ad4a21..1a7d867 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">ପ୍ରିଣ୍ଟ କରନ୍ତୁ</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> ସେୟାର୍ କରାଯାଇ ପାରିବ ନାହିଁ</translation> <translation id="1477626028522505441">ସର୍ଭର୍ ସମସ୍ୟା ଯୋଗୁଁ <ph name="FILE_NAME" /> ଡାଉନ୍ଲୋଡ୍ ହେବାରେ ବିଫଳ ହେଲା।</translation> +<translation id="1497470209855416291">ଟ୍ରାଏଲ୍ ଅକ୍ଷମ କରାଯାଇଛି</translation> <translation id="1506061864768559482">ସନ୍ଧାନ ଇଞ୍ଜିନ୍</translation> <translation id="1513352483775369820">ବୁକ୍ମାର୍କ ଏବଂ ୱେବ୍ ଇତିବୃତ୍ତି</translation> <translation id="1513858653616922153">ପାସ୍ୱାର୍ଡକୁ ଡିଲିଟ୍ କରନ୍ତୁ</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">ପରବର୍ତ୍ତୀ ଭିଡିଓ ଦେଖନ୍ତୁ</translation> <translation id="2074143993849053708">Assistantର ଭଏସ୍ ମାଧ୍ୟମରେ ସନ୍ଧାନ ପାଇଁ ସମ୍ମତିର ui ବନ୍ଦ ହୋଇଛି</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" />ର <ph name="RESULT_NUMBER" />ଟି ଫଳାଫଳ</translation> +<translation id="2083113399121613785">ଟ୍ରାଏଲ୍ ସକ୍ଷମ କରାଯାଇଛି</translation> <translation id="2096012225669085171">ସମସ୍ତ ଡିଭାଇସ୍ରେ ସିଙ୍କ୍ ଏବଂ ବ୍ୟକ୍ତିଗତକୃତ କରନ୍ତୁ</translation> <translation id="2100273922101894616">ସ୍ୱତଃ ସାଇନ୍-ଇନ୍</translation> <translation id="2100314319871056947">ଛୋଟ ଛୋଟ ଭାଗରେ ଟେକ୍ସଟ୍ ସେୟାର୍ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google କାର୍ଯ୍ୟକଳାପ ନିୟନ୍ତ୍ରଣ</translation> <translation id="5005498671520578047">ପାସ୍ୱର୍ଡ କପି କରନ୍ତୁ</translation> <translation id="5011311129201317034"><ph name="SITE" /> ସଂଯୋଗ ହେବାକୁ ଚାହୁଁଛି</translation> -<translation id="5013696553129441713">କୌଣସି ନୂଆ ପ୍ରସ୍ତାବ ନାହିଁ</translation> <translation id="5016205925109358554">ସେରିଫ୍</translation> <translation id="5039804452771397117">ଅନୁମତି</translation> <translation id="5040262127954254034">ଗୋପନୀୟତା</translation> @@ -935,7 +936,6 @@ <translation id="7514365320538308">ଡାଉନ୍ଲୋଡ୍ କରନ୍ତୁ</translation> <translation id="751961395872307827">ସାଇଟ୍କୁ ସଂଯୋଗ କରିପାରିବ ନାହିଁ।</translation> <translation id="753225086557513863">ପରବର୍ତ୍ତୀ ସମୟ ପାଇଁ ସିଡୁଲ୍ କରାଯାଇଛି</translation> -<translation id="7542481630195938534">ପରାମର୍ଶ ପ୍ରାପ୍ତ କରିପାରିଲା ନାହିଁ</translation> <translation id="7559975015014302720">ଲାଇଟ୍ ମୋଡ୍ ବନ୍ଦ ଅଛି</translation> <translation id="7562080006725997899">ବ୍ରାଇଜିଂ ଡାଟା ଖାଲି ହେଉଛି</translation> <translation id="756809126120519699">Chrome ଡାଟା ଖାଲି କରାଯାଇଛି</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 48e1683..eb29fe3 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">ਪ੍ਰਿੰਟ ਕਰੋ</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> ਨੂੰ ਸਾਂਝਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="1477626028522505441">ਸਰਵਰ ਸਮੱਸਿਆਵਾਂ ਦੇ ਕਾਰਨ <ph name="FILE_NAME" /> ਡਾਊਨਲੋਡ ਅਸਫ਼ਲ ਰਿਹਾ।</translation> +<translation id="1497470209855416291">ਪਰਖ ਬੰਦ ਹੈ</translation> <translation id="1506061864768559482">ਖੋਜ ਇੰਜਣ</translation> <translation id="1513352483775369820">ਬੁੱਕਮਾਰਕ ਅਤੇ ਵੈੱਬ ਇਤਿਹਾਸ</translation> <translation id="1513858653616922153">ਪਾਸਵਰਡ ਮਿਟਾਓ</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">ਅਗਲਾ ਵੀਡੀਓ ਦੇਖੋ</translation> <translation id="2074143993849053708">Assistant ਦੀ ਅਵਾਜ਼ੀ ਖੋਜ ਲਈ ਸਹਿਮਤੀ ਵਾਲਾ UI ਬੰਦ ਹੈ</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> ਦਾ <ph name="RESULT_NUMBER" /> ਨਤੀਜਾ</translation> +<translation id="2083113399121613785">ਪਰਖ ਚਾਲੂ ਹੈ</translation> <translation id="2096012225669085171">ਡੀਵਾਈਸਾਂ ਵਿਚਾਲੇ ਸਮਕਾਲੀਕਰਨ ਕਰੋ ਅਤੇ ਵਿਅਕਤੀਗਤ ਬਣਾਓ</translation> <translation id="2100273922101894616">ਸਵੈਚਲਿਤ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="2100314319871056947">ਲਿਖਤ ਨੂੰ ਵਧੇਰੇ ਛੋਟੇ ਹਿੱਸਿਆਂ ਵਿੱਚ ਸਾਂਝਾ ਕਰਕੇ ਦੇਖੋ</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google ਸਰਗਰਮੀ ਕੰਟਰੋਲ</translation> <translation id="5005498671520578047">ਪਾਸਵਰਡ ਕਾਪੀ ਕਰੋ</translation> <translation id="5011311129201317034"><ph name="SITE" /> ਕਨੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ</translation> -<translation id="5013696553129441713">ਕੋਈ ਨਵੇਂ ਸੁਝਾਅ ਨਹੀਂ ਹਨ</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">ਆਗਿਆ ਦਿਓ</translation> <translation id="5040262127954254034">ਪ੍ਰਾਈਵੇਸੀ</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">ਡਾਊਨਲੋਡ ਕਰੋ</translation> <translation id="751961395872307827">ਸਾਈਟ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="753225086557513863">ਬਾਅਦ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਨਿਯਤ ਕੀਤਾ ਗਿਆ</translation> -<translation id="7542481630195938534">ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ</translation> <translation id="7559975015014302720">ਲਾਈਟ ਮੋਡ ਬੰਦ ਹੈ</translation> <translation id="7562080006725997899">ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟਾ ਹਟਾ ਰਿਹਾ ਹੈ</translation> <translation id="756809126120519699">Chrome ਡਾਟਾ ਕਲੀਅਰ ਕੀਤਾ ਗਿਆ</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 55df426..ab2bb77 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
@@ -566,7 +566,6 @@ <translation id="5004416275253351869">Zarządzanie aktywnością w Google</translation> <translation id="5005498671520578047">Skopiuj hasło</translation> <translation id="5011311129201317034"><ph name="SITE" /> chce się połączyć</translation> -<translation id="5013696553129441713">Brak nowych sugestii</translation> <translation id="5016205925109358554">Szeryfowa</translation> <translation id="5039804452771397117">Zezwalaj</translation> <translation id="5040262127954254034">Prywatność</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">Pobierz</translation> <translation id="751961395872307827">Nie można połączyć się ze stroną</translation> <translation id="753225086557513863">Zaplanowano na później</translation> -<translation id="7542481630195938534">Nie można uzyskać sugestii</translation> <translation id="7559975015014302720">Wersja uproszczona jest wyłączona</translation> <translation id="7562080006725997899">Czyszczenie danych przeglądania</translation> <translation id="756809126120519699">Wyczyszczono dane Chrome</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 3626fc7..4c9c253 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
@@ -568,7 +568,6 @@ <translation id="5004416275253351869">Controles de atividade do Google</translation> <translation id="5005498671520578047">Copiar senha</translation> <translation id="5011311129201317034"><ph name="SITE" /> deseja se conectar</translation> -<translation id="5013696553129441713">Nenhuma nova sugestão</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permitir</translation> <translation id="5040262127954254034">Privacidade</translation> @@ -939,7 +938,6 @@ <translation id="7514365320538308">Fazer o download</translation> <translation id="751961395872307827">Não foi possível se conectar ao site</translation> <translation id="753225086557513863">Programado para mais tarde</translation> -<translation id="7542481630195938534">Não é possível exibir as sugestões</translation> <translation id="7559975015014302720">Modo Lite desativado</translation> <translation id="7562080006725997899">Limpando dados de navegação</translation> <translation id="756809126120519699">Dados do Chrome apagados</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 99fe3ad1..b224255 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Controlos da atividade Google</translation> <translation id="5005498671520578047">Copiar palavra-passe</translation> <translation id="5011311129201317034"><ph name="SITE" /> pretende estabelecer ligação</translation> -<translation id="5013696553129441713">Não existem novas sugestões.</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permitir</translation> <translation id="5040262127954254034">Privacidade</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Transferir</translation> <translation id="751961395872307827">Não é possível estabelecer ligação ao site.</translation> <translation id="753225086557513863">Agendado para mais tarde</translation> -<translation id="7542481630195938534">Não é possível obter sugestões</translation> <translation id="7559975015014302720">O Modo Lite está desativado.</translation> <translation id="7562080006725997899">A limpar dados de navegação</translation> <translation id="756809126120519699">Dados do Chrome limpos</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 366a816..38d624e 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Opțiuni privind activitatea Google</translation> <translation id="5005498671520578047">Copiază parola</translation> <translation id="5011311129201317034"><ph name="SITE" /> dorește să se conecteze</translation> -<translation id="5013696553129441713">Nicio sugestie nouă</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permite</translation> <translation id="5040262127954254034">Confidențialitate</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Descarcă</translation> <translation id="751961395872307827">Nu se poate realiza conexiunea la site</translation> <translation id="753225086557513863">Programată pentru mai târziu</translation> -<translation id="7542481630195938534">Nu se pot obține sugestii</translation> <translation id="7559975015014302720">Modul Lite este dezactivat</translation> <translation id="7562080006725997899">Se șterg datele de navigare</translation> <translation id="756809126120519699">Datele Chrome au fost șterse</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 0be85a2..51797a7 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Отслеживание действий в Google</translation> <translation id="5005498671520578047">Копировать пароль</translation> <translation id="5011311129201317034">Сайт <ph name="SITE" /> запрашивает подключение</translation> -<translation id="5013696553129441713">Новых рекомендаций нет</translation> <translation id="5016205925109358554">С засечками</translation> <translation id="5039804452771397117">Разрешить</translation> <translation id="5040262127954254034">Конфиденциальность</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Скачать</translation> <translation id="751961395872307827">Не удалось подключиться к сайту</translation> <translation id="753225086557513863">Начнется позже</translation> -<translation id="7542481630195938534">Не удалось загрузить рекомендации</translation> <translation id="7559975015014302720">Упрощенный режим отключен</translation> <translation id="7562080006725997899">Очистить историю</translation> <translation id="756809126120519699">Данные Chrome удалены</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 0a14948..c1ce8d0 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google ක්රියාකාරකම් පාලන</translation> <translation id="5005498671520578047">මුරපදය පිටපත් කරන්න</translation> <translation id="5011311129201317034"><ph name="SITE" /> හට සම්බන්ධ වීමට අවශ්යයි</translation> -<translation id="5013696553129441713">නව යෝජනා නැත</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">ඉඩදෙන්න</translation> <translation id="5040262127954254034">රහස්යතාවය</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">බාගන්න</translation> <translation id="751961395872307827">අඩවියට සම්බන්ධ විය නොහැකිය</translation> <translation id="753225086557513863">පසුවට කාලසටහන්ගත කළ</translation> -<translation id="7542481630195938534">යෝජනා ලබා ගත නොහැක</translation> <translation id="7559975015014302720">සැහැල්ලු ප්රකාරය ක්රියා විරහිතයි</translation> <translation id="7562080006725997899">බ්රව්ස් කිරීමේ දත්ත හිස් කරන්න</translation> <translation id="756809126120519699">Chrome දත්ත හිස් කෙරිණි</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 d265464f..0dfb6de 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Riadenie aktivity Google</translation> <translation id="5005498671520578047">Kopírovanie hesla</translation> <translation id="5011311129201317034"><ph name="SITE" /> žiada o pripojenie</translation> -<translation id="5013696553129441713">Žiadne nové návrhy</translation> <translation id="5016205925109358554">Pätkové</translation> <translation id="5039804452771397117">Povoliť</translation> <translation id="5040262127954254034">Ochrana súkromia</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Stiahnuť</translation> <translation id="751961395872307827">Nedá sa pripojiť k webu</translation> <translation id="753225086557513863">Naplánované na neskôr</translation> -<translation id="7542481630195938534">Návrhy sa nedajú získať</translation> <translation id="7559975015014302720">Zjednodušený režim je vypnutý</translation> <translation id="7562080006725997899">Vymazávajú sa údaje prehliadania</translation> <translation id="756809126120519699">Údaje Chromu boli vymazané</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 1ff95e5..759eced5 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Googlovi kontrolniki za dejavnost</translation> <translation id="5005498671520578047">Kopiranje gesla</translation> <translation id="5011311129201317034"><ph name="SITE" /> se želite povezati</translation> -<translation id="5013696553129441713">Ni novih predlogov</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Dovoli</translation> <translation id="5040262127954254034">Zasebnost</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Prenos</translation> <translation id="751961395872307827">Povezave s spletnim mestom ni mogoče vzpostaviti</translation> <translation id="753225086557513863">Načrtovano za pozneje</translation> -<translation id="7542481630195938534">Prejemanje predlogov ni mogoče</translation> <translation id="7559975015014302720">Lahki način je izklopljen</translation> <translation id="7562080006725997899">Brisanje podatkov brskanja</translation> <translation id="756809126120519699">Chromovi podatki so izbrisani.</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 a553cb8..1dff5db 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Kontrollet e aktivitetit të Google</translation> <translation id="5005498671520578047">Kopjo fjalëkalimin</translation> <translation id="5011311129201317034"><ph name="SITE" /> dëshiron që të lidhet</translation> -<translation id="5013696553129441713">Nuk ka sugjerime të reja</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Lejo</translation> <translation id="5040262127954254034">Privatësia</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Shkarko</translation> <translation id="751961395872307827">Nuk mund të lidhet me sajtin</translation> <translation id="753225086557513863">Planifikuar për më vonë</translation> -<translation id="7542481630195938534">Sugjerimet nuk mund të merren</translation> <translation id="7559975015014302720">"Modaliteti i lehtë" është joaktiv</translation> <translation id="7562080006725997899">Të dhënat e pastrimit të shfletimit</translation> <translation id="756809126120519699">Të dhënat e Chrome u pastruan</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 2188cdc..4b9f9a6 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google kontrole aktivnosti</translation> <translation id="5005498671520578047">Kopiranje lozinke</translation> <translation id="5011311129201317034"><ph name="SITE" /> želi da se poveže</translation> -<translation id="5013696553129441713">Nema novih predloga</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Dozvoli</translation> <translation id="5040262127954254034">Privatnost</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Preuzmi</translation> <translation id="751961395872307827">Povezivanje sa sajtom nije uspelo</translation> <translation id="753225086557513863">Zakazano za kasnije</translation> -<translation id="7542481630195938534">Ne možete da dobijete predloge</translation> <translation id="7559975015014302720">Lite režim je isključen</translation> <translation id="7562080006725997899">Brisanje podataka pregledanja</translation> <translation id="756809126120519699">Chrome podaci su obrisani</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 c179b1a4..083719f 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google контроле активности</translation> <translation id="5005498671520578047">Копирање лозинке</translation> <translation id="5011311129201317034"><ph name="SITE" /> жели да се повеже</translation> -<translation id="5013696553129441713">Нема нових предлога</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Дозволи</translation> <translation id="5040262127954254034">Приватност</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Преузми</translation> <translation id="751961395872307827">Повезивање са сајтом није успело</translation> <translation id="753225086557513863">Заказано за касније</translation> -<translation id="7542481630195938534">Не можете да добијете предлоге</translation> <translation id="7559975015014302720">Lite режим је искључен</translation> <translation id="7562080006725997899">Брисање података прегледања</translation> <translation id="756809126120519699">Chrome подаци су обрисани</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 9087aab..92eab4d 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Googles aktivitetsinställningar</translation> <translation id="5005498671520578047">Kopiera lösenord</translation> <translation id="5011311129201317034"><ph name="SITE" /> vill ansluta</translation> -<translation id="5013696553129441713">Inga nya förslag</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Tillåt</translation> <translation id="5040262127954254034">Sekretess</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Ladda ned</translation> <translation id="751961395872307827">Det gick inte att ansluta till webbplatsen</translation> <translation id="753225086557513863">Schemalagd till senare</translation> -<translation id="7542481630195938534">Det går inte att få förslag</translation> <translation id="7559975015014302720">Begränsat läge har inaktiverats</translation> <translation id="7562080006725997899">Tar bort webbinformation</translation> <translation id="756809126120519699">Data i Chrome har rensats</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 a0da328..61d7bbbc 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Vidhibiti vya shughuli za Google</translation> <translation id="5005498671520578047">Nakili nenosiri</translation> <translation id="5011311129201317034"><ph name="SITE" /> inataka kuunganisha</translation> -<translation id="5013696553129441713">Hakuna mapendekezo mapya</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Ruhusu</translation> <translation id="5040262127954254034">Faragha</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Pakua</translation> <translation id="751961395872307827">Imeshindwa kuunganisha kwenye tovuti</translation> <translation id="753225086557513863">Imeratibiwa kuanza baadaye</translation> -<translation id="7542481630195938534">Imeshindwa kupata mapendekezo</translation> <translation id="7559975015014302720">Umezima hali nyepesi</translation> <translation id="7562080006725997899">Inafuta data ya kuvinjari</translation> <translation id="756809126120519699">Data ya Chrome imefutwa</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 5149301..8a50c9b 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">அச்சிடுக</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" />ஐப் பகிர முடியவில்லை</translation> <translation id="1477626028522505441">சேவையகச் சிக்கல்களால் <ph name="FILE_NAME" />ஐப் பதிவிறக்க முடியவில்லை.</translation> +<translation id="1497470209855416291">டிரையல் முடக்கப்பட்டுள்ளது</translation> <translation id="1506061864768559482">தேடல் இன்ஜின்</translation> <translation id="1513352483775369820">புத்தகக்குறிகளும் இணைய வரலாறும்</translation> <translation id="1513858653616922153">கடவுச்சொல்லை நீக்கு</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">அடுத்த வீடியோவைக் காட்டு</translation> <translation id="2074143993849053708">குரல் தேடலுக்கு Assistantடைப் பயன்படுத்துவதற்கான ஒப்புதல் UI மூடப்பட்டது</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> முடிவுகளில் <ph name="RESULT_NUMBER" />வது முடிவு</translation> +<translation id="2083113399121613785">டிரையல் இயக்கப்பட்டுள்ளது</translation> <translation id="2096012225669085171">பல சாதனங்களுக்கிடையில் ஒத்திசைக்கலாம், தனிப்பயனாக்கலாம்</translation> <translation id="2100273922101894616">தானாக உள்நுழையவும்</translation> <translation id="2100314319871056947">சிறுசிறு பகுதியாக உரையைப் பகிர முயலவும்</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google செயல்பாட்டுக் கட்டுப்பாடுகள்</translation> <translation id="5005498671520578047">கடவுச்சொல்லை நகலெடு</translation> <translation id="5011311129201317034"><ph name="SITE" /> இணைய விரும்புகிறது</translation> -<translation id="5013696553129441713">புதிய பரிந்துரைகள் இல்லை</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">அனுமதி</translation> <translation id="5040262127954254034">தனியுரிமை</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">பதிவிறக்கு</translation> <translation id="751961395872307827">தளத்துடன் இணைக்க முடியவில்லை</translation> <translation id="753225086557513863">பிறகு திட்டமிடப்பட்டுள்ளது</translation> -<translation id="7542481630195938534">பரிந்துரைகளைப் பெற முடியவில்லை</translation> <translation id="7559975015014302720">லைட் பயன்முறை முடக்கப்பட்டுள்ளது</translation> <translation id="7562080006725997899">உலாவிய தரவை அழிக்கிறது</translation> <translation id="756809126120519699">Chrome தரவு அழிக்கப்பட்டது</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 9f3535b..b53885e6 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">ప్రింట్</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> షేర్ చేయడం సాధ్యపడలేదు</translation> <translation id="1477626028522505441">సర్వర్ సమస్యల కారణంగా <ph name="FILE_NAME" /> డౌన్లోడ్ విఫలమైంది.</translation> +<translation id="1497470209855416291">ట్రయల్ డిజేబుల్ చేయబడింది</translation> <translation id="1506061864768559482">సెర్చ్ ఇంజిన్</translation> <translation id="1513352483775369820">బుక్మార్క్లు మరియు వెబ్ చరిత్ర</translation> <translation id="1513858653616922153">పాస్వర్డ్ను తొలగించు</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">తర్వాతి వీడియోను చూడండి</translation> <translation id="2074143993849053708">Assistant వాయిస్ సెర్చ్ సమ్మతి UI మూసివేయబడింది</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" />లో <ph name="RESULT_NUMBER" />వ ఫలితం</translation> +<translation id="2083113399121613785">ట్రయల్ ఎనేబుల్ చేయబడింది</translation> <translation id="2096012225669085171">అన్ని పరికరాలలో సింక్ చేయండి మరియు వ్యక్తిగతీకరించండి</translation> <translation id="2100273922101894616">ఆటోమేటిక్ సైన్-ఇన్</translation> <translation id="2100314319871056947">వచనాన్ని చిన్న భాగాలుగా చేసి షేర్ చేయడానికి ప్రయత్నించండి</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google కార్యకలాప నియంత్రణలు</translation> <translation id="5005498671520578047">పాస్వర్డ్ కాపీచేయడం</translation> <translation id="5011311129201317034"><ph name="SITE" /> దీనికి కనెక్ట్ చేయాలనుకుంటోంది</translation> -<translation id="5013696553129441713">కొత్త సూచనలు ఏవీ లేవు</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">అనుమతించు</translation> <translation id="5040262127954254034">గోప్యత</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">డౌన్లోడ్ చేయి</translation> <translation id="751961395872307827">సైట్కు కనెక్ట్ చేయడం సాధ్యపడలేదు</translation> <translation id="753225086557513863">తరువాత డౌన్లోడ్ చేయడానికి షెడ్యూల్ చేయబడింది</translation> -<translation id="7542481630195938534">సూచనలను పొందడం సాధ్యపడదు</translation> <translation id="7559975015014302720">లైట్ మోడ్ ఆఫ్ చేయబడింది</translation> <translation id="7562080006725997899">బ్రౌజింగ్ డేటాను తీసివేస్తోంది</translation> <translation id="756809126120519699">Chrome డేటా తీసివేయబడింది</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 bec0477..d711385 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
@@ -565,7 +565,6 @@ <translation id="5004416275253351869">ส่วนควบคุมกิจกรรมของ Google</translation> <translation id="5005498671520578047">คัดลอกรหัสผ่าน</translation> <translation id="5011311129201317034"><ph name="SITE" /> ต้องการเชื่อมต่อ</translation> -<translation id="5013696553129441713">ไม่มีคำแนะนำใหม่</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">อนุญาต</translation> <translation id="5040262127954254034">ความเป็นส่วนตัว</translation> @@ -936,7 +935,6 @@ <translation id="7514365320538308">ดาวน์โหลด</translation> <translation id="751961395872307827">เชื่อมต่อเว็บไซต์ไม่ได้</translation> <translation id="753225086557513863">ตั้งเวลาไว้ให้เริ่มภายหลัง</translation> -<translation id="7542481630195938534">รับคำแนะนำไม่ได้</translation> <translation id="7559975015014302720">โหมด Lite ปิดอยู่</translation> <translation id="7562080006725997899">กำลังล้างข้อมูลการท่องเว็บ</translation> <translation id="756809126120519699">ล้างข้อมูล Chrome แล้ว</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 7d35b95..a887b2e 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google etkinlik kontrolleri</translation> <translation id="5005498671520578047">Şifreyi kopyalayın</translation> <translation id="5011311129201317034"><ph name="SITE" /> bağlanmak istiyor</translation> -<translation id="5013696553129441713">Yeni öneri yok</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">İzin ver</translation> <translation id="5040262127954254034">Gizlilik</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">İndir</translation> <translation id="751961395872307827">Siteye bağlanılamıyor</translation> <translation id="753225086557513863">Daha sonrası için programlandı.</translation> -<translation id="7542481630195938534">Öneriler alınamıyor</translation> <translation id="7559975015014302720">Basit mod kapalı</translation> <translation id="7562080006725997899">Göz atma verileri temizleniyor</translation> <translation id="756809126120519699">Chrome verileri temizlendi</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 61a0691e..740d8fe 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Керування активністю в Google</translation> <translation id="5005498671520578047">Копіювати пароль</translation> <translation id="5011311129201317034">Сайт <ph name="SITE" /> хоче підключитися</translation> -<translation id="5013696553129441713">Немає нових пропозицій</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Дозволити</translation> <translation id="5040262127954254034">Конфіденційність</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Завантажити</translation> <translation id="751961395872307827">Немає з’єднання із сайтом</translation> <translation id="753225086557513863">Заплановано на пізніше</translation> -<translation id="7542481630195938534">Не вдається отримати пропозиції</translation> <translation id="7559975015014302720">Спрощений режим вимкнено</translation> <translation id="7562080006725997899">Очищення даних веб-перегляду</translation> <translation id="756809126120519699">Дані Chrome видалено</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 2be42c1..01f9cbd 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
@@ -72,6 +72,7 @@ <translation id="1430915738399379752">پرنٹ کریں</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> کا اشتراک نہیں کیا جا سکتا</translation> <translation id="1477626028522505441">سروس کے مسائل کی وجہ سے <ph name="FILE_NAME" /> کو ڈاؤن لوڈ کرنا ناکام ہوگیا۔</translation> +<translation id="1497470209855416291">ٹرائل غیر فعال ہے</translation> <translation id="1506061864768559482">تلاش انجن</translation> <translation id="1513352483775369820">بُک مارکس اور ویب سرگزشت</translation> <translation id="1513858653616922153">پاس ورڈ حذف کریں</translation> @@ -152,6 +153,7 @@ <translation id="2068748236079642969">اگلی ویڈیو دیکھیں</translation> <translation id="2074143993849053708">اسسٹنٹ صوتی تلاش کی رضامندی ui بند کی گئی ہے</translation> <translation id="2082238445998314030">نتیجہ <ph name="RESULT_NUMBER" /> از <ph name="TOTAL_RESULTS" /></translation> +<translation id="2083113399121613785">ٹرائل فعال ہے</translation> <translation id="2096012225669085171">سبھی آلات پر مطابقت پذیری اور ذاتی نوعیت سازی کریں</translation> <translation id="2100273922101894616">خودکار سائن ان</translation> <translation id="2100314319871056947">چھوٹے ٹکڑوں میں متن کا اشتراک کرنے کی کوشش کریں</translation> @@ -565,7 +567,6 @@ <translation id="5004416275253351869">Google سرگرمی کنٹرولز</translation> <translation id="5005498671520578047">پاس ورڈ کاپی کریں</translation> <translation id="5011311129201317034"><ph name="SITE" /> منسلک ہونا چاہتی ہے</translation> -<translation id="5013696553129441713">کوئی نئی تجاویز نہیں</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">اجازت دیں</translation> <translation id="5040262127954254034">رازداری</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">ڈاؤن لوڈ کریں</translation> <translation id="751961395872307827">سائٹ سے منسلک نہیں کیا جا سکتا</translation> <translation id="753225086557513863">بعد کیلئے شیڈول کیا گیا</translation> -<translation id="7542481630195938534">تجاویز حاصل نہیں کی جا سکیں</translation> <translation id="7559975015014302720">لائٹ موڈ آف ہے</translation> <translation id="7562080006725997899">براؤزنگ ڈیٹا صاف کرنا</translation> <translation id="756809126120519699">Chrome ڈیٹا صاف کر دیا گیا</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 bebce0b..d967b4c1 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google hisobidagi harakatlarni kuzatish</translation> <translation id="5005498671520578047">Parolni nusxalash</translation> <translation id="5011311129201317034"><ph name="SITE" /> qurilmangiz bilan aloqa o‘rnatmoqchi</translation> -<translation id="5013696553129441713">Hech qanday yangi tavsiya topilmadi</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Ruxsat berish</translation> <translation id="5040262127954254034">Shaxsiy ma’lumotlar</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Yuklab olish</translation> <translation id="751961395872307827">Saytga ulanib bo‘lmadi</translation> <translation id="753225086557513863">Keyinroqqa qoldirilgan</translation> -<translation id="7542481630195938534">Tavsiyalar yuklanmadi</translation> <translation id="7559975015014302720">Lite rejimi yoqilmagan</translation> <translation id="7562080006725997899">Brauzer tarixini tozalash</translation> <translation id="756809126120519699">Chrome ma’lumotlari tozalandi</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 8e25c9a8..9a2b579 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Kiểm soát hoạt động trên Google</translation> <translation id="5005498671520578047">Sao chép mật khẩu</translation> <translation id="5011311129201317034"><ph name="SITE" /> muốn kết nối</translation> -<translation id="5013696553129441713">Không có nội dung đề xuất mới</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Cho phép</translation> <translation id="5040262127954254034">Quyền riêng tư</translation> @@ -593,6 +592,7 @@ <translation id="5222676887888702881">Đăng xuất</translation> <translation id="5230560987958996918"><ph name="SITE" /> muốn quét tìm các thiết bị Bluetooth ở gần và đã tìm thấy các thiết bị sau đây:</translation> <translation id="5233638681132016545">Thẻ mới</translation> +<translation id="5250483651202458397">Ảnh chụp màn hình. Nhấn để đóng.</translation> <translation id="526421993248218238">Không thể tải trang này</translation> <translation id="5271967389191913893">Thiết bị không thể mở nội dung được tải xuống.</translation> <translation id="5292796745632149097">Gửi đến</translation> @@ -838,6 +838,7 @@ <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> <translation id="6811034713472274749">Trang hiện đã sẵn sàng cho bạn xem</translation> +<translation id="6813446258015311409">Đã mở trang Đăng nhập vào Chrome.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" />, thẻ, đã chọn</translation> <translation id="6833996806551876956">Dùng thử hộp cát bảo vệ quyền riêng tư</translation> @@ -938,7 +939,6 @@ <translation id="7514365320538308">Tải xuống</translation> <translation id="751961395872307827">Không thể kết nối với trang web</translation> <translation id="753225086557513863">Đã lên lịch tải xuống</translation> -<translation id="7542481630195938534">Không thể nhận nội dung đề xuất</translation> <translation id="7559975015014302720">Chế độ thu gọn đang tắt</translation> <translation id="7562080006725997899">Xóa dữ liệu duyệt web</translation> <translation id="756809126120519699">Đã xóa dữ liệu Chrome</translation> @@ -1098,6 +1098,7 @@ <translation id="8583805026567836021">Xóa dữ liệu tài khoản</translation> <translation id="8587585930972369234">Chạm và giữ để tìm kiếm</translation> <translation id="860043288473659153">Tên chủ thẻ</translation> +<translation id="8602358303461588329">Đã đóng trang Đăng nhập vào Chrome.</translation> <translation id="860282621117673749">Thông báo khi có mặt hàng giảm giá</translation> <translation id="8616006591992756292">Tài khoản Google của bạn có thể có các dạng lịch sử duyệt web khác tại <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Mở URL đề xuất được chỉ định trong nội dung được tải xuống?</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 bbd06930d..64df08c 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google 活动控件</translation> <translation id="5005498671520578047">复制密码</translation> <translation id="5011311129201317034"><ph name="SITE" /> 希望连接到以下所选设备:</translation> -<translation id="5013696553129441713">没有新建议</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">允许</translation> <translation id="5040262127954254034">隐私权</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">下载</translation> <translation id="751961395872307827">无法连接到该网站</translation> <translation id="753225086557513863">已安排为延后下载</translation> -<translation id="7542481630195938534">无法获取建议</translation> <translation id="7559975015014302720">精简模式已关闭</translation> <translation id="7562080006725997899">正在清除浏览数据</translation> <translation id="756809126120519699">已清除 Chrome 数据</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 4c91466..32a8484c 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google 活動控制項</translation> <translation id="5005498671520578047">複製密碼</translation> <translation id="5011311129201317034"><ph name="SITE" /> 要求連接至</translation> -<translation id="5013696553129441713">沒有新建議</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">允許</translation> <translation id="5040262127954254034">私隱權</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">下載</translation> <translation id="751961395872307827">無法連接網站</translation> <translation id="753225086557513863">已預定稍後下載</translation> -<translation id="7542481630195938534">無法取得建議</translation> <translation id="7559975015014302720">精簡模式已關閉</translation> <translation id="7562080006725997899">正在清除瀏覽資料</translation> <translation id="756809126120519699">已清除 Chrome 資料</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 5b051d3..c0cf343cb 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Google 活動控制項</translation> <translation id="5005498671520578047">複製密碼</translation> <translation id="5011311129201317034"><ph name="SITE" /> 要求連線</translation> -<translation id="5013696553129441713">沒有新的建議</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">允許</translation> <translation id="5040262127954254034">隱私權</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">下載</translation> <translation id="751961395872307827">無法連線至網站</translation> <translation id="753225086557513863">排定稍後下載的檔案</translation> -<translation id="7542481630195938534">無法取得建議</translation> <translation id="7559975015014302720">精簡模式已關閉</translation> <translation id="7562080006725997899">正在清除瀏覽資料</translation> <translation id="756809126120519699">已清除 Chrome 資料</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 a181023..1aac103 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
@@ -567,7 +567,6 @@ <translation id="5004416275253351869">Izilawuli zomsebenzi we-Google</translation> <translation id="5005498671520578047">Kopisha iphasiwedi</translation> <translation id="5011311129201317034"><ph name="SITE" /> ufuna ukuxhuma</translation> -<translation id="5013696553129441713">Azikho iziphakamiso ezintsha</translation> <translation id="5016205925109358554">I-Serif</translation> <translation id="5039804452771397117">Vumela</translation> <translation id="5040262127954254034">Ubumfihlo</translation> @@ -938,7 +937,6 @@ <translation id="7514365320538308">Landa</translation> <translation id="751961395872307827">Ayikwazi ukuxhumeka kusayithi</translation> <translation id="753225086557513863">Kushejulelwe kamuva</translation> -<translation id="7542481630195938534">Ayikwazi ukuthola iziphakamiso</translation> <translation id="7559975015014302720">Imodi elula ivaliwe</translation> <translation id="7562080006725997899">Isula idatha yokudlulisa amehlo</translation> <translation id="756809126120519699">Idatha ye-Chrome esuliwe</translation>
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc index a76289f..7d48896 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc
@@ -2615,7 +2615,8 @@ // Verify that the in-app shelf should be shown when the app icon receives // the accessibility focus. -IN_PROC_BROWSER_TEST_F(HotseatShelfAppBrowserTest, EnableChromeVox) { +// TODO(crbug.com/1177126) Re-enable test +IN_PROC_BROWSER_TEST_F(HotseatShelfAppBrowserTest, DISABLED_EnableChromeVox) { ash::Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true); test::SpeechMonitor speech_monitor;
diff --git a/chrome/browser/ui/ash/launcher/shelf_context_menu_unittest.cc b/chrome/browser/ui/ash/launcher/shelf_context_menu_unittest.cc index 1458774..09b1257 100644 --- a/chrome/browser/ui/ash/launcher/shelf_context_menu_unittest.cc +++ b/chrome/browser/ui/ash/launcher/shelf_context_menu_unittest.cc
@@ -631,7 +631,8 @@ // Checks the context menu for a "normal" crostini app (i.e. a registered one). // Particularly, we ensure that the density changing option exists. -TEST_F(ShelfContextMenuTest, CrostiniNormalApp) { +// TODO(crbug.com/1177126) Re-enable test +TEST_F(ShelfContextMenuTest, DISABLED_CrostiniNormalApp) { const std::string app_name = "foo"; crostini_helper()->AddApp(crostini::CrostiniTestHelper::BasicApp(app_name)); app_service_test().FlushMojoCalls();
diff --git a/chrome/browser/ui/autofill/autofill_bubble_controller_base.h b/chrome/browser/ui/autofill/autofill_bubble_controller_base.h index 38dfeaa..421966b 100644 --- a/chrome/browser/ui/autofill/autofill_bubble_controller_base.h +++ b/chrome/browser/ui/autofill/autofill_bubble_controller_base.h
@@ -41,8 +41,6 @@ bubble_view_ = bubble_view; } - void SetShownTimestampToNow(); - private: // Remove the |bubble_view_| and hide the bubble. void HideBubble();
diff --git a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc index c4da88cf..df9d873 100644 --- a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc +++ b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc
@@ -4,15 +4,12 @@ #include "chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h" -#include "ash/constants/ash_features.h" -#include "ash/public/cpp/shelf_config.h" #include "ash/public/cpp/shell_window_ids.h" #include "ash/public/cpp/window_backdrop.h" #include "ash/public/cpp/window_properties.h" #include "base/bind.h" #include "base/strings/utf_string_conversions.h" #include "base/system/sys_info.h" -#include "chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h" #include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_service_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" @@ -31,11 +28,8 @@ #include "components/strings/grit/components_strings.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" -#include "net/base/url_util.h" #include "ui/aura/window.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/display/display.h" -#include "ui/display/screen.h" #include "ui/gfx/native_widget_types.h" namespace chromeos { @@ -47,9 +41,6 @@ constexpr int kPreferredDialogHeightPx = 640; constexpr int kPreferredDialogWidthPx = 768; -constexpr char kOobeDialogHeightParamKey[] = "dialog-height"; -constexpr char kOobeDialogWidthParamKey[] = "dialog-width"; - } // namespace // static @@ -94,42 +85,23 @@ } MultiDeviceSetupDialog::MultiDeviceSetupDialog() - : SystemWebDialogDelegate(CreateMultiDeviceSetupURL(), base::string16()) {} + : SystemWebDialogDelegate(GURL(chrome::kChromeUIMultiDeviceSetupUrl), + base::string16()) {} MultiDeviceSetupDialog::~MultiDeviceSetupDialog() { for (auto& callback : on_close_callbacks_) std::move(callback).Run(); } -GURL MultiDeviceSetupDialog::CreateMultiDeviceSetupURL() { - GURL gurl(chrome::kChromeUIMultiDeviceSetupUrl); - gfx::Size size; - GetDialogSize(&size); - gurl = net::AppendQueryParameter(gurl, kOobeDialogHeightParamKey, - base::NumberToString(size.height())); - gurl = net::AppendQueryParameter(gurl, kOobeDialogWidthParamKey, - base::NumberToString(size.width())); - return gurl; -} - void MultiDeviceSetupDialog::GetDialogSize(gfx::Size* size) const { - if (features::IsNewOobeLayoutEnabled()) { - const gfx::Size display_size = - display::Screen::GetScreen()->GetPrimaryDisplay().size(); - const bool is_horizontal = display_size.width() > display_size.height(); - const gfx::Size dialog_size = CalculateOobeDialogSize( - display_size, ash::ShelfConfig::Get()->shelf_size(), is_horizontal); - size->SetSize(dialog_size.width(), dialog_size.height()); - } else { - // Note: The size is calculated once based on the current screen orientation - // and is not ever updated. It might be possible to resize the dialog upon - // each screen rotation, but https://crbug.com/1030993 prevents this from - // working. - // TODO(https://crbug.com/1030993): Explore resizing the dialog dynamically. - static const gfx::Size dialog_size = ComputeDialogSizeForInternalScreen( - gfx::Size(kPreferredDialogWidthPx, kPreferredDialogHeightPx)); - size->SetSize(dialog_size.width(), dialog_size.height()); - } + // Note: The size is calculated once based on the current screen orientation + // and is not ever updated. It might be possible to resize the dialog upon + // each screen rotation, but https://crbug.com/1030993 prevents this from + // working. + // TODO(https://crbug.com/1030993): Explore resizing the dialog dynamically. + static const gfx::Size dialog_size = ComputeDialogSizeForInternalScreen( + gfx::Size(kPreferredDialogWidthPx, kPreferredDialogHeightPx)); + size->SetSize(dialog_size.width(), dialog_size.height()); } void MultiDeviceSetupDialog::OnDialogClosed(const std::string& json_retval) {
diff --git a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h index ea362586..eab6f4d 100644 --- a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h +++ b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h
@@ -46,8 +46,6 @@ void OnDialogClosed(const std::string& json_retval) override; private: - GURL CreateMultiDeviceSetupURL(); - static MultiDeviceSetupDialog* current_instance_; static gfx::NativeWindow containing_window_;
diff --git a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_localized_strings_provider.cc b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_localized_strings_provider.cc index 4c5223d..dd595b04c 100644 --- a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_localized_strings_provider.cc
@@ -136,9 +136,6 @@ "wifiSyncEnabled", base::FeatureList::IsEnabled(chromeos::features::kWifiSyncAndroid)); - html_source->AddBoolean("newLayoutEnabled", - chromeos::features::IsNewOobeLayoutEnabled()); - for (const auto& entry : GetLocalizedStringsWithPlaceholders()) html_source->AddString(entry.name, entry.localized_string); }
diff --git a/chrome/browser/ui/webui/video_tutorials/video_player_ui.cc b/chrome/browser/ui/webui/video_tutorials/video_player_ui.cc index a7bae3a..e0bc9e9d 100644 --- a/chrome/browser/ui/webui/video_tutorials/video_player_ui.cc +++ b/chrome/browser/ui/webui/video_tutorials/video_player_ui.cc
@@ -40,9 +40,6 @@ network::mojom::CSPDirectiveName::MediaSrc, "media-src https:;"); source->OverrideContentSecurityPolicy( network::mojom::CSPDirectiveName::StyleSrc, "style-src 'self';"); - source->OverrideContentSecurityPolicy( - network::mojom::CSPDirectiveName::ScriptSrc, - "script-src chrome-untrusted://resources/ 'self';"); auto* browser_context = web_ui->GetWebContents()->GetBrowserContext(); content::WebUIDataSource::Add(browser_context, source);
diff --git a/chrome/browser/web_applications/components/web_app_install_utils.cc b/chrome/browser/web_applications/components/web_app_install_utils.cc index 754deac..89660e91 100644 --- a/chrome/browser/web_applications/components/web_app_install_utils.cc +++ b/chrome/browser/web_applications/components/web_app_install_utils.cc
@@ -221,10 +221,8 @@ web_app_info->display_override = manifest.display_override; // Create the WebApplicationInfo icons list *outside* of |web_app_info|, so - // that we can decide later whether or not to replace the existing icons array - // (conditionally on whether there were any that didn't have purpose ANY). + // that we can decide later whether or not to replace the existing icons. std::vector<WebApplicationIconInfo> web_app_icons; - bool has_purpose_any = false; for (const auto& icon : manifest.icons) { // An icon's purpose vector should never be empty (the manifest parser // should have added ANY if there was no purpose specified in the manifest). @@ -254,9 +252,6 @@ info.purpose = purpose; web_app_icons.push_back(std::move(info)); - if (purpose == IconPurpose::ANY) - has_purpose_any = true; - // Limit the number of icons we store on the user's machine. if (web_app_icons.size() == kMaxIcons) break; @@ -265,9 +260,9 @@ if (web_app_icons.size() == kMaxIcons) break; } - // If any icons are specified in the manifest, they take precedence over any - // we picked up from the web_app stuff. - if (has_purpose_any) + // If any icons are correctly specified in the manifest, they take precedence + // over any we picked up from web page metadata. + if (!web_app_icons.empty()) web_app_info->icon_infos = std::move(web_app_icons); web_app_info->file_handlers = manifest.file_handlers;
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 3640181..ade0da7 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
@@ -221,6 +221,24 @@ EXPECT_EQ(2, purpose_to_count[IconPurpose::MASKABLE]); } +TEST(WebAppInstallUtils, + UpdateWebAppInfoFromManifest_MaskableIconOnly_UsesManifestIcons) { + blink::Manifest manifest; + blink::Manifest::ImageResource icon; + icon.src = AppIcon1(); + icon.purpose = {Purpose::MASKABLE}; + manifest.icons.push_back(icon); + // WebApplicationInfo has existing icons (simulating found in page metadata). + WebApplicationInfo web_app_info; + WebApplicationIconInfo icon_info; + web_app_info.icon_infos.push_back(icon_info); + web_app_info.icon_infos.push_back(icon_info); + + UpdateWebAppInfoFromManifest(manifest, AppManifestUrl(), &web_app_info); + // Metadata icons are replaced by manifest icon. + EXPECT_EQ(1U, web_app_info.icon_infos.size()); +} + TEST(WebAppInstallUtils, UpdateWebAppInfoFromManifest_ShareTarget) { blink::Manifest manifest; WebApplicationInfo web_app_info;
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 79a3670f..a254684 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1613001202-6ef218cbf7480c8ae793fe9b5cc2ae6ec8870c75.profdata +chrome-linux-master-1613023195-8377895b1b15403ecc837429f439cadb3042b611.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index c9db1cf..dc0abb4 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1612979846-d7c647575837d460d0c274770ac2364327206664.profdata +chrome-mac-master-1613023195-94b18c9dfd197defef9d6948d2f80fcdef826da3.profdata
diff --git a/chrome/common/service_process_util.cc b/chrome/common/service_process_util.cc index 5c96858..ec5c6806 100644 --- a/chrome/common/service_process_util.cc +++ b/chrome/common/service_process_util.cc
@@ -118,7 +118,7 @@ #if defined(OS_LINUX) || defined(OS_CHROMEOS) if (crash_reporter::IsCrashpadEnabled()) { - command_line->AppendSwitch(crash_reporter::kEnableCrashpad); + command_line->AppendSwitch(switches::kEnableCrashpad); pid_t pid; if (crash_reporter::GetHandlerSocket(nullptr, &pid)) {
diff --git a/chrome/services/printing/print_backend_service_impl.cc b/chrome/services/printing/print_backend_service_impl.cc index 3b3ba3f..135a369 100644 --- a/chrome/services/printing/print_backend_service_impl.cc +++ b/chrome/services/printing/print_backend_service_impl.cc
@@ -32,6 +32,25 @@ print_backend_ = PrintBackend::CreateInstance(locale); } +void PrintBackendServiceImpl::EnumeratePrinters( + mojom::PrintBackendService::EnumeratePrintersCallback callback) { + if (!print_backend_) { + DLOG(ERROR) + << "Print backend instance has not been initialized for locale."; + std::move(callback).Run(base::nullopt); + return; + } + + PrinterList printer_list; + if (!print_backend_->EnumeratePrinters(&printer_list)) { + DLOG(ERROR) << "EnumeratePrinters failed, last error is " + << logging::GetLastSystemErrorCode(); + std::move(callback).Run(base::nullopt); + return; + } + std::move(callback).Run(std::move(printer_list)); +} + void PrintBackendServiceImpl::GetDefaultPrinterName( mojom::PrintBackendService::GetDefaultPrinterNameCallback callback) { if (!print_backend_) { @@ -48,6 +67,8 @@ mojom::PrintBackendService::GetPrinterSemanticCapsAndDefaultsCallback callback) { if (!print_backend_) { + DLOG(ERROR) + << "Print backend instance has not been initialized for locale."; std::move(callback).Run(base::nullopt); return; } @@ -68,6 +89,8 @@ const std::string& printer_name, mojom::PrintBackendService::FetchCapabilitiesCallback callback) { if (!print_backend_) { + DLOG(ERROR) + << "Print backend instance has not been initialized for locale."; std::move(callback).Run(base::nullopt, base::nullopt, base::nullopt); return; }
diff --git a/chrome/services/printing/print_backend_service_impl.h b/chrome/services/printing/print_backend_service_impl.h index 820e4c9..85a2f15 100644 --- a/chrome/services/printing/print_backend_service_impl.h +++ b/chrome/services/printing/print_backend_service_impl.h
@@ -28,6 +28,8 @@ private: friend class PrintBackendServiceTestImpl; + using EnumeratePrintersCallback = + base::OnceCallback<void(const base::Optional<PrinterList>& printer_list)>; using GetDefaultPrinterCallback = base::OnceCallback<void(const base::Optional<std::string>& printer_name)>; using GetPrinterSemanticCapsAndDefaultsCallback = base::OnceCallback<void( @@ -39,6 +41,8 @@ // mojom::PrintBackendService implementation: void Init(const std::string& locale) override; + void EnumeratePrinters( + mojom::PrintBackendService::EnumeratePrintersCallback callback) override; void GetDefaultPrinterName( mojom::PrintBackendService::GetDefaultPrinterNameCallback callback) override;
diff --git a/chrome/services/printing/public/mojom/print_backend_service.mojom b/chrome/services/printing/public/mojom/print_backend_service.mojom index 36588eaf..7e1d1d1 100644 --- a/chrome/services/printing/public/mojom/print_backend_service.mojom +++ b/chrome/services/printing/public/mojom/print_backend_service.mojom
@@ -14,6 +14,11 @@ // interface to the underlying data source. Init(string locale); + // Enumerates the list of installed local and network printers. + // No value provided for `printer_list` if there is a failure. + EnumeratePrinters() + => (array<PrinterBasicInfo>? printer_list); + // Gets the default printer name from the data source. // No value for `printer_name` is provided if there is a failure. GetDefaultPrinterName()
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index d10e11d..96a033e 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -1769,6 +1769,7 @@ ] sources += [ + "../browser/apps/app_service/media_access_browsertest.cc", "../browser/apps/app_service/notifications_browsertest.cc", "../browser/apps/app_service/web_apps_base_browsertest.cc", "../browser/apps/icon_standardizer_unittest.cc",
diff --git a/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc b/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc index 16470d46..17dd3ce 100644 --- a/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc +++ b/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc
@@ -52,7 +52,8 @@ SyncWebSocketImpl sock(context_getter_.get()); } -TEST_F(SyncWebSocketImplTest, Connect) { +// TODO(crbug.com/1177142) Re-enable test +TEST_F(SyncWebSocketImplTest, DISABLED_Connect) { SyncWebSocketImpl sock(context_getter_.get()); ASSERT_TRUE(sock.Connect(server_.web_socket_url())); }
diff --git a/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js b/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js index 58ec2576..f1413b21d 100644 --- a/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js +++ b/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js
@@ -675,6 +675,11 @@ Effective: 'UserPolicy', UserPolicy: '77696669325F50534B' }, + HiddenSSID: { + Active: false, + Effective: 'UserPolicy', + UserPolicy: false, + }, Frequency: 5000, FrequencyList: [2400, 5000], Passphrase: {
diff --git a/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js b/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js index c1361ba3..4d39bb6 100644 --- a/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js +++ b/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js
@@ -15,6 +15,25 @@ */ let testProxy; + /** + * A mock to intercept User Action logging calls and verify how many times + * they were called. + */ + class MetricsPrivateMock { + constructor() { + this.userActionMap = new Map(); + } + + getUserActionCount(metricName) { + return this.userActionMap.get(metricName) || 0; + } + + recordUserAction(metricName) { + this.userActionMap.set( + metricName, this.getUserActionCount(metricName) + 1); + } + } + setup(() => { PolymerTest.clearBody(); @@ -22,6 +41,7 @@ testProxy.handler = TestBrowserProxy.fromClass(chromeCart.mojom.CartHandlerRemote); ChromeCartProxy.instance_ = testProxy; + chrome.metricsPrivate = new MetricsPrivateMock(); // Not show welcome surface by default. testProxy.handler.setResultFor( 'getWarmWelcomeVisible', Promise.resolve({visible: false})); @@ -198,12 +218,19 @@ loadTimeData.getString('modulesCartModuleMenuHideToastMessage'), hideToastMessage); assertEquals(1, testProxy.handler.getCallCount('hideCartModule')); + assertEquals( + chrome.metricsPrivate.getUserActionCount('NewTabPage.Carts.HideModule'), + 1); // Act. hideRestoreCallback(); // Assert. assertEquals(1, testProxy.handler.getCallCount('restoreHiddenCartModule')); + assertEquals( + chrome.metricsPrivate.getUserActionCount( + 'NewTabPage.Carts.UndoHideModule'), + 1); // Act. waitForDismissEvent = eventToPromise('dismiss-module', moduleElement); @@ -217,12 +244,20 @@ loadTimeData.getString('modulesCartModuleMenuRemoveToastMessage'), removeToastMessage); assertEquals(1, testProxy.handler.getCallCount('removeCartModule')); + assertEquals( + chrome.metricsPrivate.getUserActionCount( + 'NewTabPage.Carts.RemoveModule'), + 1); // Act. removeRestoreCallback(); // Assert. assertEquals(1, testProxy.handler.getCallCount('restoreRemovedCartModule')); + assertEquals( + chrome.metricsPrivate.getUserActionCount( + 'NewTabPage.Carts.UndoRemoveModule'), + 1); }); test('dismiss and undo single cart item in module', async () => { @@ -373,6 +408,10 @@ // Assert. checkScrollButtonVisibility(moduleElement, true, true); checkVisibleRange(moduleElement, 4, 7); + assertEquals( + chrome.metricsPrivate.getUserActionCount( + 'NewTabPage.Carts.RightScrollClick'), + 1); // Act. waitForRightScrollVisibilityChange = @@ -385,6 +424,10 @@ // Assert. checkScrollButtonVisibility(moduleElement, true, false); checkVisibleRange(moduleElement, 6, 9); + assertEquals( + chrome.metricsPrivate.getUserActionCount( + 'NewTabPage.Carts.RightScrollClick'), + 2); // Act. waitForRightScrollVisibilityChange = @@ -397,6 +440,10 @@ // Assert. checkScrollButtonVisibility(moduleElement, true, true); checkVisibleRange(moduleElement, 2, 5); + assertEquals( + chrome.metricsPrivate.getUserActionCount( + 'NewTabPage.Carts.LeftScrollClick'), + 1); // Act. waitForLeftScrollVisibilityChange = @@ -409,6 +456,10 @@ // Assert. checkScrollButtonVisibility(moduleElement, false, true); checkVisibleRange(moduleElement, 0, 3); + assertEquals( + chrome.metricsPrivate.getUserActionCount( + 'NewTabPage.Carts.LeftScrollClick'), + 2); // Remove the observer. cartCarousel.removeEventListener('scroll', onScroll);
diff --git a/chromecast/media/cma/backend/mixer/post_processors/post_processor_unittest.cc b/chromecast/media/cma/backend/mixer/post_processors/post_processor_unittest.cc index 691c0a2..f7e2443 100644 --- a/chromecast/media/cma/backend/mixer/post_processors/post_processor_unittest.cc +++ b/chromecast/media/cma/backend/mixer/post_processors/post_processor_unittest.cc
@@ -256,7 +256,8 @@ ::testing::UnitTest::GetInstance()->current_test_info(); LOG(INFO) << test_info->test_suite_name() << "." << test_info->name() << " At " << sample_rate - << " frames per second CPU usage: " << std::defaultfloat + << " frames per second and channels number " << num_input_channels + << " CPU usage: " << std::defaultfloat << 100.0 * (stop_clock - start_clock) / (CLOCKS_PER_SEC * effective_duration) << "%";
diff --git a/chromeos/components/phonehub/OWNERS b/chromeos/components/phonehub/OWNERS index 5189b388..a85c70e 100644 --- a/chromeos/components/phonehub/OWNERS +++ b/chromeos/components/phonehub/OWNERS
@@ -1 +1,2 @@ khorimoto@chromium.org +vecore@google.com
diff --git a/chromeos/network/onc/onc_utils.cc b/chromeos/network/onc/onc_utils.cc index c71993e..608f805 100644 --- a/chromeos/network/onc/onc_utils.cc +++ b/chromeos/network/onc/onc_utils.cc
@@ -202,6 +202,12 @@ FillInHexSSIDFieldsInOncObject(kNetworkConfigurationSignature, &network); } +// Sets HiddenSSID fields in all entries in the |network_configs| list. +void SetHiddenSSIDFieldsInNetworks(base::Value* network_configs) { + for (auto& network : network_configs->GetList()) + SetHiddenSSIDFieldInOncObject(kNetworkConfigurationSignature, &network); +} + // Given a GUID->PEM certificate mapping |certs_by_guid|, looks up the PEM // encoded certificate referenced by |guid_ref|. If a match is found, sets // |*pem_encoded| to the PEM encoded certificate and returns true. Otherwise, @@ -851,6 +857,33 @@ base::Value(base::HexEncode(ssid_string.c_str(), ssid_string.size()))); } +void SetHiddenSSIDFieldInOncObject(const OncValueSignature& signature, + base::Value* onc_object) { + DCHECK(onc_object->is_dict()); + if (&signature == &kWiFiSignature) + SetHiddenSSIDField(onc_object); + + // Recurse into nested objects. + for (auto it : onc_object->DictItems()) { + if (!it.second.is_dict()) + continue; + + const OncFieldSignature* field_signature = + GetFieldSignature(signature, it.first); + if (!field_signature) + continue; + + SetHiddenSSIDFieldInOncObject(*field_signature->value_signature, + &it.second); + } +} + +void SetHiddenSSIDField(base::Value* wifi_fields) { + if (wifi_fields->FindKey(::onc::wifi::kHiddenSSID)) + return; + wifi_fields->SetKey(::onc::wifi::kHiddenSSID, base::Value(false)); +} + base::Value MaskCredentialsInOncObject(const OncValueSignature& signature, const base::Value& onc_object, const std::string& mask) { @@ -969,6 +1002,8 @@ if (validated_networks && validated_networks->GetAsList(&validated_networks_list)) { FillInHexSSIDFieldsInNetworks(validated_networks_list); + // Set HiddenSSID to default value to solve the issue crbug.com/1171837 + SetHiddenSSIDFieldsInNetworks(validated_networks_list); CertPEMsByGUIDMap server_and_ca_certs = GetServerAndCACertsByGUID(*certificates);
diff --git a/chromeos/network/onc/onc_utils.h b/chromeos/network/onc/onc_utils.h index 1331f9a..9bb5298 100644 --- a/chromeos/network/onc/onc_utils.h +++ b/chromeos/network/onc/onc_utils.h
@@ -86,6 +86,17 @@ COMPONENT_EXPORT(CHROMEOS_NETWORK) void FillInHexSSIDField(base::Value* wifi_fields); +// Sets missing HiddenSSID fields to default value that is specified in the ONC +// specification. The object of |onc_object| is modified in place. +COMPONENT_EXPORT(CHROMEOS_NETWORK) +void SetHiddenSSIDFieldInOncObject(const OncValueSignature& signature, + base::Value* onc_object); + +// If the HiddenSSID field is not set, sets it to default value(false). If the +// HiddenSSID field is set already, does nothing. +COMPONENT_EXPORT(CHROMEOS_NETWORK) +void SetHiddenSSIDField(base::Value* wifi_fields); + // Creates a copy of |onc_object| with all values of sensitive fields replaced // by |mask|. To find sensitive fields, signature and field name are checked // with the function FieldIsCredential().
diff --git a/chromeos/network/onc/onc_utils_unittest.cc b/chromeos/network/onc/onc_utils_unittest.cc index b75b1a2..f07d6eb 100644 --- a/chromeos/network/onc/onc_utils_unittest.cc +++ b/chromeos/network/onc/onc_utils_unittest.cc
@@ -206,6 +206,43 @@ } } +TEST(ONCUtils, SetHiddenSSIDField_WithNoValueSet) { + // WiFi configuration that doesn't have HiddenSSID field set. + std::unique_ptr<base::DictionaryValue> wifi_onc = + test_utils::ReadTestDictionary("wifi_clientcert_with_cert_pems.onc"); + base::Value* wifi_fields = wifi_onc->FindKey("WiFi"); + + ASSERT_FALSE(wifi_fields->FindKey(::onc::wifi::kHiddenSSID)); + SetHiddenSSIDField(wifi_fields); + base::Value* hidden_ssid_field = + wifi_fields->FindKey(::onc::wifi::kHiddenSSID); + ASSERT_TRUE(hidden_ssid_field); + EXPECT_FALSE(hidden_ssid_field->GetBool()); +} + +TEST(ONCUtils, SetHiddenSSIDField_WithValueSetFalse) { + // WiFi configuration that have HiddenSSID field set to false. + std::unique_ptr<base::DictionaryValue> wifi_onc = + test_utils::ReadTestDictionary( + "translation_of_shill_wifi_with_state.onc"); + base::Value* wifi_fields = wifi_onc->FindKey("WiFi"); + + ASSERT_TRUE(wifi_fields->FindKey(::onc::wifi::kHiddenSSID)); + SetHiddenSSIDField(wifi_fields); + EXPECT_FALSE(wifi_fields->FindKey(::onc::wifi::kHiddenSSID)->GetBool()); +} + +TEST(ONCUtils, SetHiddenSSIDField_WithValueSetTrue) { + // WiFi configuration that have HiddenSSID field set to true. + std::unique_ptr<base::DictionaryValue> wifi_onc = + test_utils::ReadTestDictionary("wifi_with_hidden_ssid.onc"); + base::Value* wifi_fields = wifi_onc->FindKey("WiFi"); + + ASSERT_TRUE(wifi_fields->FindKey(::onc::wifi::kHiddenSSID)); + SetHiddenSSIDField(wifi_fields); + EXPECT_TRUE(wifi_fields->FindKey(::onc::wifi::kHiddenSSID)->GetBool()); +} + TEST(ONCPasswordVariable, PasswordAvailable) { const auto wifi_onc = test_utils::ReadTestDictionary( "wifi_eap_ttls_with_password_variable.onc");
diff --git a/chromeos/process_proxy/process_output_watcher_unittest.cc b/chromeos/process_proxy/process_output_watcher_unittest.cc index 7dfc294..9db4cd1 100644 --- a/chromeos/process_proxy/process_output_watcher_unittest.cc +++ b/chromeos/process_proxy/process_output_watcher_unittest.cc
@@ -308,7 +308,8 @@ RunTest(test_cases); } -TEST_F(ProcessOutputWatcherTest, FourByteUTF8) { +// TODO(crbug.com/1177137) Re-enable test +TEST_F(ProcessOutputWatcherTest, DISABLED_FourByteUTF8) { std::vector<TestCase> test_cases; test_cases.push_back(TestCase("\xf0\xa4\xad", false, "")); test_cases.push_back(TestCase("\xa2", false, "\xf0\xa4\xad\xa2"));
diff --git a/chromeos/strings/chromeos_strings_af.xtb b/chromeos/strings/chromeos_strings_af.xtb index e964d814..5f745e8a 100644 --- a/chromeos/strings/chromeos_strings_af.xtb +++ b/chromeos/strings/chromeos_strings_af.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Stawing</translation> <translation id="5154917547274118687">Geheue</translation> <translation id="5168185087976003268">Batterygesondheid</translation> -<translation id="520299634122159966">Geen skandeerders is beskikbaar nie</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familie</translation> <translation id="5760715441271661976">Portaalstatus</translation> -<translation id="5781694279199921985">Stoor Sessie-loglêer</translation> <translation id="5797428682393400134">SUKSES</translation> <translation id="5832805196449965646">Voeg persoon by</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />-toets is gekanselleer</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Kon nie skandering kanselleer nie</translation> <translation id="6766275201586212568">Mislukte DNS-resolusies</translation> <translation id="6768237774506518020">Hoë DNS-resolusiemislukkingkoers</translation> -<translation id="6839141349259399400">Kan jy nie aan skandeerders koppel nie?</translation> <translation id="6853312040151791195">Ontlaaikoers</translation> <translation id="6898743098396957679">Kon nie skandering voltooi nie</translation> <translation id="6911383237894364323">Kan nie aan mediabedieners koppel nie</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Laai tans; <ph name="TIME_VALUE" /> tot vol</translation> <translation id="708426984172631313">GESTOP</translation> <translation id="7143207342074048698">Koppel tans</translation> +<translation id="7144878232160441200">Probeer weer</translation> <translation id="714876143603641390">LAN-konnektiwiteit</translation> <translation id="7162487448488904999">Galery</translation> <translation id="7177485034254901881">Hierdie <ph name="DEVICE_TYPE" /> word bestuur deur <ph name="MANAGER" />. Administrateurs kan die toestel oor 'n afstand opstel.</translation>
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index dacc221..fb08f8e 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">ማረጋገጥ</translation> <translation id="5154917547274118687">ማህደረ ትውስታ</translation> <translation id="5168185087976003268">የባትሪ ጤንነት</translation> -<translation id="520299634122159966">ምንም ቃኚዎች አይገኙም</translation> <translation id="5212543919916444558">እኔ ላግዝ የምችልበት ምንም ነገር በእርስዎ ማያ ገጽ ላይ አላገኘሁም። ማንኛውም ነገር እኔን ለመጠየቅ ማይክሮፎኑን መታ አድርገው ይሞክሩ።</translation> <translation id="5222676887888702881">ዘግተህ ውጣ</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ቤተሰብ</translation> <translation id="5760715441271661976">የመተላለፊያ ሁኔታ</translation> -<translation id="5781694279199921985">የክፍለ-ጊዜ ምዝግብ ማስታወሻን አስቀምጥ</translation> <translation id="5797428682393400134">ተሳክቷል</translation> <translation id="5832805196449965646">ሰው አክል</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> ሙከራ ተሰርዟል</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">መቃኘትን መሰረዝ አልተቻለም</translation> <translation id="6766275201586212568">ያልተሳኩ የዲኤንኤስ ጥራቶች</translation> <translation id="6768237774506518020">ከፍተኛ የዲኤንኤስ ጥራት አለመሳካት ብዛት</translation> -<translation id="6839141349259399400">ከመቃኛዎች ጋር መገናኘት አልተቻለም?</translation> <translation id="6853312040151791195">የኃይል ማለቂያ ፍጥነት</translation> <translation id="6898743098396957679">ቅኝትን ማጠናቀቅ አልተቻለም</translation> <translation id="6911383237894364323">ወደ ሚዲያ አገልጋዮች መገናኘት አልተቻለም</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">በመሙላት ላይ፣ ሙሉ እስኪሆን ድረስ <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">ቆሟል</translation> <translation id="7143207342074048698">በመያያዝ ላይ</translation> +<translation id="7144878232160441200">እንደገና ሞክር</translation> <translation id="714876143603641390">የላን ተገናኝነት</translation> <translation id="7162487448488904999">ማዕከለ-ስዕላት</translation> <translation id="7177485034254901881">ይህ <ph name="DEVICE_TYPE" /> በ<ph name="MANAGER" /> የሚተዳደር ነው። አስተዳዳሪዎች መሣሪያውን ከርቀት ማዋቀር ይችላሉ።</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb index dc6043c..2b3428b 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">المصادقة</translation> <translation id="5154917547274118687">الذاكرة</translation> <translation id="5168185087976003268">حالة البطارية</translation> -<translation id="520299634122159966">لا تتوفّر أجهزة مسح ضوئي.</translation> <translation id="5212543919916444558">يتعذَّر عليَّ العثور على شيء مفيد في هذه الشاشة. يُرجى تجربة النقر على الميكروفون لمطالبتي بأي شيء.</translation> <translation id="5222676887888702881">تسجيل الخروج</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">العائلة</translation> <translation id="5760715441271661976">حالة المدخل</translation> -<translation id="5781694279199921985">حفظ سجلّ الجلسة</translation> <translation id="5797428682393400134">نجح الاختبار</translation> <translation id="5832805196449965646">إضافة شخص</translation> <translation id="5844247382766192936">تم إلغاء اختبار <ph name="TEST_NAME" />.</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">تعذّر إلغاء عملية المسح الضوئي.</translation> <translation id="6766275201586212568">تعذَّر التحويل باستخدام نظام أسماء النطاقات (DNS).</translation> <translation id="6768237774506518020">إن متوسط تعطُّل التحويل باستخدام نظام أسماء النطاقات (DNS) عالٍ.</translation> -<translation id="6839141349259399400">هل يتعذَّر الاتصال بالماسحات الضوئية؟</translation> <translation id="6853312040151791195">معدّل تفريغ الشحن</translation> <translation id="6898743098396957679">تعذَّر إكمال عملية "المسح الضوئي"</translation> <translation id="6911383237894364323">تعذَّر الاتصال بخوادم الوسائط.</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">جارٍ الشحن. تتبقَّى <ph name="TIME_VALUE" /> حتى اكتمال الشحن.</translation> <translation id="708426984172631313">متوقّف</translation> <translation id="7143207342074048698">اتصال</translation> +<translation id="7144878232160441200">إعادة المحاولة</translation> <translation id="714876143603641390">الاتصال بشبكة LAN</translation> <translation id="7162487448488904999">معرض الصور</translation> <translation id="7177485034254901881">يدير <ph name="MANAGER" /> جهاز <ph name="DEVICE_TYPE" /> هذا. ويمكن للمشرفين إعداد هذا الجهاز عن بُعد.</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index 5b31a447..1c9ed91 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -90,6 +90,7 @@ <translation id="315738237743207937">কেপ্টিভ প’ৰ্টেল চিনাক্ত কৰা হৈছে</translation> <translation id="3188257591659621405">মোৰ ফাইলসমূহ</translation> <translation id="3199982728237701504">নথি ফীডাৰ (দুফাল থকা)</translation> +<translation id="3226405216343213872">স্কেনাৰ বিচাৰি থকা হৈছে</translation> <translation id="3246869037381808805">১ দিনতকৈ পুৰণি প্ৰিণ্ট কাৰ্যসমূহ আঁতৰোৱা হ’ব</translation> <translation id="3268178239013324452">বিফল হৈছে - দুৱাৰ খোল খাই আছে</translation> <translation id="3310640316857623290">DNSৰ বিলম্বতা যথেষ্ট পৰিমাণে অনুমতি দিয়া সীমাতকৈ ওপৰত আছে</translation> @@ -178,7 +179,6 @@ <translation id="5142961317498132443">বিশ্বাসযোগ্যতাৰ প্ৰমাণীকৰণ</translation> <translation id="5154917547274118687">মেম’ৰি</translation> <translation id="5168185087976003268">বেটাৰীৰ অৱস্থা</translation> -<translation id="520299634122159966">কোনো স্কেনাৰ নাই</translation> <translation id="5212543919916444558">আপোনাক সহায় কৰিব পৰাকৈ মই আপোনাৰ স্ক্ৰীণত একো বিচাৰি পোৱা নাই। মোক কিবা সুধিবলৈ মাইকটো টিপক।</translation> <translation id="5222676887888702881">ছাইন আউট কৰক</translation> @@ -209,7 +209,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">পৰিয়াল</translation> <translation id="5760715441271661976">প’ৰ্টেল ষ্টে’ট</translation> -<translation id="5781694279199921985">ছেশ্বনৰ লগ ছেভ কৰক</translation> <translation id="5797428682393400134">সফল</translation> <translation id="5832805196449965646">অন্য লোক যোগ কৰক</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> পৰীক্ষাটো বাতিল কৰা হৈছে</translation> @@ -259,7 +258,6 @@ <translation id="6756731097889387912">স্কেনিং বাতিল কৰিব পৰা নগ’ল</translation> <translation id="6766275201586212568">DNSৰ সমাধান বিফল হৈছে</translation> <translation id="6768237774506518020">DNSৰ সমাধান বিফল হোৱাৰ হাৰ উচ্চ</translation> -<translation id="6839141349259399400">স্কেনাৰৰ সৈতে সংযোগ কৰিব পৰা নাই নেকি?</translation> <translation id="6853312040151791195">চাৰ্জ খৰচ হোৱাৰ হাৰ</translation> <translation id="6898743098396957679">স্কেনিং সম্পূৰ্ণ কৰিব পৰা নগ’ল</translation> <translation id="6911383237894364323">মিডিয়া ছাৰ্ভাৰৰ সৈতে সংযোগ কৰিব পৰা নগ’ল</translation> @@ -270,6 +268,7 @@ <translation id="7059230779847288458">চাৰ্জ কৰি থকা হৈছে, সম্পূৰ্ণ হ’বলৈ <ph name="TIME_VALUE" /> বাকী</translation> <translation id="708426984172631313">বন্ধ হৈছে</translation> <translation id="7143207342074048698">সংযোগ হৈছে</translation> +<translation id="7144878232160441200">পুনৰ চেষ্টা কৰক</translation> <translation id="714876143603641390">LAN সংযোগ</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881">এই <ph name="DEVICE_TYPE" />টো <ph name="MANAGER" />এ পৰিচালনা কৰে। প্ৰশাসকে দূৰৰ পৰাই ডিভাইচটো কনফিগাৰ কৰিব পাৰে।</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index ff61fdc..c2ddb8f2 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">İdentifikasiya</translation> <translation id="5154917547274118687">Yaddaş</translation> <translation id="5168185087976003268">Enerji statusu</translation> -<translation id="520299634122159966">Əlçatan skaner yoxdur</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Ailə</translation> <translation id="5760715441271661976">Portal Vəziyyəti</translation> -<translation id="5781694279199921985">Sessiya qeydlərini saxlayın</translation> <translation id="5797428682393400134">UĞURLU OLDU</translation> <translation id="5832805196449965646">Şəxs əlavə edin</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Test ləğv edilib</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Skanlamanı ləğv etmək mümkün olmadı</translation> <translation id="6766275201586212568">DNS həlləri alınmadı</translation> <translation id="6768237774506518020">DNS həllinin alınmama faizi yüksəkdir</translation> -<translation id="6839141349259399400">Skanerlərə qoşula bilmirsiniz?</translation> <translation id="6853312040151791195">Deşarj faizi</translation> <translation id="6898743098396957679">Skanlamanı tamamlamaq mümkün olmadı</translation> <translation id="6911383237894364323">Media serverlərinə qoşulmaq olmur</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Şarj edilir, tam dolana qədər <ph name="TIME_VALUE" /> qalıb</translation> <translation id="708426984172631313">DAYANDIRILIB</translation> <translation id="7143207342074048698">Qoşulur</translation> +<translation id="7144878232160441200">Yenidən cəhd edin</translation> <translation id="714876143603641390">Lan Bağlantısı</translation> <translation id="7162487448488904999">Qalereya</translation> <translation id="7177485034254901881">Bu <ph name="DEVICE_TYPE" /> <ph name="MANAGER" /> tərəfindən idarə olunur. Administratorlar cihazı məsafədən konfiqurasiya edə bilər.</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb index fef5cb8..852ff90a 100644 --- a/chromeos/strings/chromeos_strings_be.xtb +++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Аўтэнтыфікацыя</translation> <translation id="5154917547274118687">Памяць</translation> <translation id="5168185087976003268">Стан акумулятара</translation> -<translation id="520299634122159966">Няма даступных сканераў</translation> <translation id="5212543919916444558">Я не магу знайсці на экране нічога, з чым я мог бы вам дапамагчы. Каб спытаць мяне аб чым-небудзь, паспрабуйце дакрануцца да мікрафона.</translation> <translation id="5222676887888702881">Выйсці</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Сям'я</translation> <translation id="5760715441271661976">Стан партала</translation> -<translation id="5781694279199921985">Захаваць журнал сеанса</translation> <translation id="5797428682393400134">ПРОЙДЗЕНА</translation> <translation id="5832805196449965646">Дадаць карыстальніка</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />: тэст скасаваны</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Не ўдалося скасаваць сканіраванне</translation> <translation id="6766275201586212568">Збой супастаўленняў імён DNS</translation> <translation id="6768237774506518020">Высокі працэнт збояў супастаўленняў імён DNS</translation> -<translation id="6839141349259399400">Не ўдаецца падключыцца да сканераў?</translation> <translation id="6853312040151791195">Хуткасць разрадкі</translation> <translation id="6898743098396957679">Не ўдалося завяршыць сканіраванне</translation> <translation id="6911383237894364323">Не ўдалося падключыцца да сервераў мультымедыя</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Ідзе зарадка, <ph name="TIME_VALUE" /> да поўнай зарадкі</translation> <translation id="708426984172631313">СПЫНЕНА</translation> <translation id="7143207342074048698">Падключэнне</translation> +<translation id="7144878232160441200">Паўтарыць</translation> <translation id="714876143603641390">Магчымасць падключэння LAN</translation> <translation id="7162487448488904999">Галерэя</translation> <translation id="7177485034254901881">Гэтай прыладай <ph name="DEVICE_TYPE" /> кіруе <ph name="MANAGER" />. Адміністратары могуць аддалена задаваць налады прылады.</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb index 5168c55..c01d767c 100644 --- a/chromeos/strings/chromeos_strings_bg.xtb +++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Удостоверяване</translation> <translation id="5154917547274118687">Памет</translation> <translation id="5168185087976003268">Състояние на батерията</translation> -<translation id="520299634122159966">Няма налични скенери</translation> <translation id="5212543919916444558">На екрана ви не намирам нищо, за което да мога да ви помогна. Докоснете иконата на микрофон, за да ме попитате каквото и да е.</translation> <translation id="5222676887888702881">Изход</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Семейство</translation> <translation id="5760715441271661976">Състояние на портала</translation> -<translation id="5781694279199921985">Запазване на регистрационния файл за сесията</translation> <translation id="5797428682393400134">УСПЕХ</translation> <translation id="5832805196449965646">Добавяне на човек</translation> <translation id="5844247382766192936">Тестът „<ph name="TEST_NAME" />“ бе прекратен</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Сканирането не бе отменено</translation> <translation id="6766275201586212568">Неуспешни преобразувания от DNS</translation> <translation id="6768237774506518020">Голям процент неуспехи при преобразуването от DNS</translation> -<translation id="6839141349259399400">Не можете да свържете скенерите?</translation> <translation id="6853312040151791195">Скорост на разреждане</translation> <translation id="6898743098396957679">Сканирането не бе завършено</translation> <translation id="6911383237894364323">Не може да се установи връзка с мултимедийните сървъри</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Зарежда се: <ph name="TIME_VALUE" /> до пълно зареждане</translation> <translation id="708426984172631313">СПРЯН</translation> <translation id="7143207342074048698">Свързва се</translation> +<translation id="7144878232160441200">Повторен опит</translation> <translation id="714876143603641390">Връзка с LAN</translation> <translation id="7162487448488904999">Галерия</translation> <translation id="7177485034254901881">Това устройство <ph name="DEVICE_TYPE" /> се управлява от <ph name="MANAGER" />. Администраторите може да го конфигурират отдалечено.</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb index c47097e..6e8d73c 100644 --- a/chromeos/strings/chromeos_strings_bn.xtb +++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">প্রমাণীকরণ</translation> <translation id="5154917547274118687">স্মৃতি</translation> <translation id="5168185087976003268">ব্যাটারির স্বাস্থ্য</translation> -<translation id="520299634122159966">স্ক্যানার উপলভ্য নেই</translation> <translation id="5212543919916444558">আপনাকে সাহায্য করতে পারি এমন কিছুই আপনার স্ক্রিনে আমি খুঁজে পাইনি। আমাকে কিছু জিজ্ঞাসা করতে মাইকে ট্যাপ করুন।</translation> <translation id="5222676887888702881">সাইন-আউট করুন</translation> <translation id="5252456968953390977">রোমিং</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">পরিবারিক</translation> <translation id="5760715441271661976">পোর্টালের স্থিতি</translation> -<translation id="5781694279199921985">সেশন লগ সেভ করুন</translation> <translation id="5797428682393400134">সফল হয়েছে</translation> <translation id="5832805196449965646">একজন ব্যক্তিকে যোগ করুন</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> পরীক্ষা বাতিল করা হয়েছে</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">স্ক্যানিং বাতিল করা যায়নি</translation> <translation id="6766275201586212568">DNS রেজোলিউশন সফল হয়নি</translation> <translation id="6768237774506518020">DNS রেজোলিউশনের বেশি ফেল রেট</translation> -<translation id="6839141349259399400">স্ক্যানারের সাথে কানেক্ট করা যাচ্ছে না?</translation> <translation id="6853312040151791195">ডিসচার্জ হওয়ার রেট</translation> <translation id="6898743098396957679">স্ক্যানিং সম্পূর্ণ করা যায়নি</translation> <translation id="6911383237894364323">মিডিয়া সার্ভারে কানেক্ট করা যায়নি</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">চার্জ করা হচ্ছে, সম্পূর্ণ চার্জ হতে <ph name="TIME_VALUE" /> সময় লাগবে</translation> <translation id="708426984172631313">থেমে গেছে</translation> <translation id="7143207342074048698">সংযুক্ত হচ্ছে</translation> +<translation id="7144878232160441200">আবার চেষ্টা করুন</translation> <translation id="714876143603641390">Lan কানেক্টিভিটি</translation> <translation id="7162487448488904999">গ্যালারি</translation> <translation id="7177485034254901881"><ph name="MANAGER" />-এর মাধ্যমে এই <ph name="DEVICE_TYPE" /> ম্যানেজ করা হয়। অ্যাডমিনিস্ট্রেটর অন্য জায়গা থেকে ডিভাইসটি কনফিগার করতে পারেন।</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index b81f994..1352f77 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentifikacija</translation> <translation id="5154917547274118687">Memorija</translation> <translation id="5168185087976003268">Stanje baterije</translation> -<translation id="520299634122159966">Nije dostupan nijedan skener</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Porodica</translation> <translation id="5760715441271661976">Stanje portala</translation> -<translation id="5781694279199921985">Sačuvaj zapisnik sesije</translation> <translation id="5797428682393400134">USPJEŠNO</translation> <translation id="5832805196449965646">Dodaj osobu</translation> <translation id="5844247382766192936">Test "<ph name="TEST_NAME" />" je otkazan</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Otkazivanje skeniranja nije uspjelo</translation> <translation id="6766275201586212568">DNS rezolucije nisu uspjele</translation> <translation id="6768237774506518020">Visoka stopa neuspjeha DNS rezolucije</translation> -<translation id="6839141349259399400">Nije se moguće povezati na skenere?</translation> <translation id="6853312040151791195">Brzina pražnjenja</translation> <translation id="6898743098396957679">Završavanje skeniranja nije uspjelo</translation> <translation id="6911383237894364323">Povezivanje s medijskim serverima nije uspjelo</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Punjenje – <ph name="TIME_VALUE" /> do potpune napunjenosti</translation> <translation id="708426984172631313">ZAUSTAVLJENO</translation> <translation id="7143207342074048698">Povezivanje</translation> +<translation id="7144878232160441200">Pokušajte ponovo.</translation> <translation id="714876143603641390">Povezivost LAN-a</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7177485034254901881">Ovim uređajem <ph name="DEVICE_TYPE" /> upravlja <ph name="MANAGER" />. Administratori mogu daljinski konfigurirati uređaj.</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb index 9d78387..3f01e04 100644 --- a/chromeos/strings/chromeos_strings_ca.xtb +++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autenticació</translation> <translation id="5154917547274118687">Memòria</translation> <translation id="5168185087976003268">Estat de la bateria</translation> -<translation id="520299634122159966">No hi ha cap escàner disponible</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Família</translation> <translation id="5760715441271661976">Estat del portal</translation> -<translation id="5781694279199921985">Desa el registre de sessió</translation> <translation id="5797428682393400134">SUPERADA</translation> <translation id="5832805196449965646">Afegeix una persona</translation> <translation id="5844247382766192936">La prova <ph name="TEST_NAME" /> s'ha cancel·lat</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">No s'ha pogut cancel·lar l'escaneig</translation> <translation id="6766275201586212568">Algunes resolucions de DNS han fallat</translation> <translation id="6768237774506518020">El percentatge d'error de la resolució de DNS és alt</translation> -<translation id="6839141349259399400">No et pots connectar als escàners?</translation> <translation id="6853312040151791195">Percentatge de descàrrega</translation> <translation id="6898743098396957679">No s'ha pogut completar l'escaneig</translation> <translation id="6911383237894364323">No es pot connectar als servidors multimèdia</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">S'està carregant. <ph name="TIME_VALUE" /> per completar la càrrega.</translation> <translation id="708426984172631313">ATURAT</translation> <translation id="7143207342074048698">Connectant</translation> +<translation id="7144878232160441200">Torna-ho a provar</translation> <translation id="714876143603641390">Connectivitat de la LAN</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7177485034254901881">Aquest dispositiu <ph name="DEVICE_TYPE" /> està gestionat per <ph name="MANAGER" />. És possible que els administradors el configurin de manera remota.</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb index cdf145e..4cbc31a 100644 --- a/chromeos/strings/chromeos_strings_cs.xtb +++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Ověření</translation> <translation id="5154917547274118687">Paměť</translation> <translation id="5168185087976003268">Opotřebení baterie</translation> -<translation id="520299634122159966">Nejsou k dispozici žádné skenery</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Rodina</translation> <translation id="5760715441271661976">Stav portálu</translation> -<translation id="5781694279199921985">Uložit protokol relace</translation> <translation id="5797428682393400134">ÚSPĚCH</translation> <translation id="5832805196449965646">Přidat uživatele</translation> <translation id="5844247382766192936">Test <ph name="TEST_NAME" /> byl zrušen</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Skenování se nepodařilo zrušit</translation> <translation id="6766275201586212568">Neúspěšné překlady DNS</translation> <translation id="6768237774506518020">Vysoká míra selhání překladu DNS</translation> -<translation id="6839141349259399400">Nemůžete se připojit ke skenerům?</translation> <translation id="6853312040151791195">Rychlost vybíjení</translation> <translation id="6898743098396957679">Skenování nelze dokončit</translation> <translation id="6911383237894364323">Nelze se připojit k mediálním serverům</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Nabíjení, <ph name="TIME_VALUE" /> do úplného nabití</translation> <translation id="708426984172631313">ZASTAVENO</translation> <translation id="7143207342074048698">Připojování</translation> +<translation id="7144878232160441200">Opakovat</translation> <translation id="714876143603641390">Připojení k síti LAN</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7177485034254901881">Toto zařízení <ph name="DEVICE_TYPE" /> spravuje doména <ph name="MANAGER" />. Administrátoři mohou zařízení vzdáleně konfigurovat.</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb index ce030a0d..aff7902 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Godkendelse</translation> <translation id="5154917547274118687">Hukommelse</translation> <translation id="5168185087976003268">Batteriets tilstand</translation> -<translation id="520299634122159966">Der er ingen tilgængelige scannere</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> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familie</translation> <translation id="5760715441271661976">Tilstand for portal</translation> -<translation id="5781694279199921985">Gem sessionslogfil</translation> <translation id="5797428682393400134">GENNEMFØRT</translation> <translation id="5832805196449965646">Tilføj person</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />-testen er annulleret</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">Scanningen kunne ikke annulleres</translation> <translation id="6766275201586212568">Mislykkede DNS-opslag</translation> <translation id="6768237774506518020">Høj fejlrate for DNS-opslag</translation> -<translation id="6839141349259399400">Kan du ikke oprette forbindelse til scannere?</translation> <translation id="6853312040151791195">Afladningshastighed</translation> <translation id="6898743098396957679">Scanningen kunne ikke gennemføres</translation> <translation id="6911383237894364323">Der kunne ikke oprettes forbindelse til medieservere</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">Oplader, fuldt opladet om <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">STOPPET</translation> <translation id="7143207342074048698">Tilslutter</translation> +<translation id="7144878232160441200">Prøv igen</translation> <translation id="714876143603641390">LAN-forbindelse</translation> <translation id="7162487448488904999">Galleri</translation> <translation id="7177485034254901881">Denne <ph name="DEVICE_TYPE" /> administreres af <ph name="MANAGER" />. Administratorer kan fjernkonfigurere enheden.</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb index c638805..f41ada94 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -90,6 +90,7 @@ <translation id="315738237743207937">Captive Portal erkannt</translation> <translation id="3188257591659621405">Meine Dateien</translation> <translation id="3199982728237701504">Dokumenteneinzug (beidseitig)</translation> +<translation id="3226405216343213872">Suche nach Scannern läuft</translation> <translation id="3246869037381808805">Druckaufträge, die älter als 1 Tag sind, werden entfernt</translation> <translation id="3268178239013324452">Fehlgeschlagen – Druckerklappe offen</translation> <translation id="3310640316857623290">Die DNS-Latenz liegt deutlich über dem zulässigen Grenzwert</translation> @@ -178,7 +179,6 @@ <translation id="5142961317498132443">Authentifizierung</translation> <translation id="5154917547274118687">Speicher</translation> <translation id="5168185087976003268">Akkuzustand</translation> -<translation id="520299634122159966">Keine Scanner verfügbar</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> @@ -209,7 +209,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familie</translation> <translation id="5760715441271661976">Portal-Status</translation> -<translation id="5781694279199921985">Sitzungsprotokoll speichern</translation> <translation id="5797428682393400134">FERTIG</translation> <translation id="5832805196449965646">Person hinzufügen</translation> <translation id="5844247382766192936">Test „<ph name="TEST_NAME" />“ wurde abgebrochen</translation> @@ -259,7 +258,6 @@ <translation id="6756731097889387912">Scannen konnte nicht abgebrochen werden</translation> <translation id="6766275201586212568">Fehlgeschlagene DNS-Auflösungen</translation> <translation id="6768237774506518020">Hohe Fehlerrate bei der DNS-Auflösung</translation> -<translation id="6839141349259399400">Verbindung mit Scanner nicht möglich?</translation> <translation id="6853312040151791195">Entladestrom</translation> <translation id="6898743098396957679">Scan konnte nicht abgeschlossen werden</translation> <translation id="6911383237894364323">Verbindung zu Medienservern kann nicht hergestellt werden</translation> @@ -270,6 +268,7 @@ <translation id="7059230779847288458">Vollständig geladen in <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">ABGEBROCHEN</translation> <translation id="7143207342074048698">Verbindung...</translation> +<translation id="7144878232160441200">Wiederholen</translation> <translation id="714876143603641390">LAN-Konnektivität</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7177485034254901881">Dieses <ph name="DEVICE_TYPE" /> wird von <ph name="MANAGER" /> verwaltet. Administratoren können das Gerät per Remotezugriff konfigurieren.</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb index 095393ef..4ab546bf 100644 --- a/chromeos/strings/chromeos_strings_el.xtb +++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Έλεγχος ταυτότητας</translation> <translation id="5154917547274118687">Μνήμη</translation> <translation id="5168185087976003268">Κατάσταση μπαταρίας</translation> -<translation id="520299634122159966">Δεν υπάρχουν διαθέσιμοι σαρωτές.</translation> <translation id="5212543919916444558">Δεν βρέθηκε κάτι με το οποίο να μπορώ να σας βοηθήσω στην οθόνη σας. Πατήστε στο μικρόφωνο για να ρωτήσετε οτιδήποτε θέλετε.</translation> <translation id="5222676887888702881">Έξοδος</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Οικογένεια</translation> <translation id="5760715441271661976">Κατάσταση πύλης</translation> -<translation id="5781694279199921985">Αποθήκευση αρχείου καταγραφής περιόδου λειτουργίας</translation> <translation id="5797428682393400134">ΕΠΙΤΥΧΙΑ</translation> <translation id="5832805196449965646">Προσθήκη ατόμου</translation> <translation id="5844247382766192936">Η δοκιμή <ph name="TEST_NAME" /> ακυρώθηκε.</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Δεν ήταν δυνατή η ακύρωση της σάρωσης.</translation> <translation id="6766275201586212568">Αποτυχημένες αναλύσεις DNS</translation> <translation id="6768237774506518020">Υψηλό ποσοστό αποτυχίας ανάλυσης DNS</translation> -<translation id="6839141349259399400">Δεν είναι δυνατή η σύνδεση σε σαρωτές;</translation> <translation id="6853312040151791195">Ρυθμός εκφόρτισης</translation> <translation id="6898743098396957679">Δεν ήταν δυνατή η ολοκλήρωση της σάρωσης.</translation> <translation id="6911383237894364323">Δεν είναι δυνατή η σύνδεση σε διακομιστές πολυμέσων.</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Φόρτιση, απομένουν <ph name="TIME_VALUE" /> μέχρι την ολοκλήρωση</translation> <translation id="708426984172631313">ΔΙΑΚΟΠΗΚΕ</translation> <translation id="7143207342074048698">Σύνδεση</translation> +<translation id="7144878232160441200">Επανάληψη</translation> <translation id="714876143603641390">Συνδεσιμότητα LAN</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881">Η διαχείριση της συσκευής <ph name="DEVICE_TYPE" /> γίνεται από τον τομέα <ph name="MANAGER" />. Οι διαχειριστές μπορούν να διαμορφώσουν τη συσκευή απομακρυσμένα.</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index 6780920..dc0ad92 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Authentication</translation> <translation id="5154917547274118687">Memory</translation> <translation id="5168185087976003268">Battery health</translation> -<translation id="520299634122159966">No available scanners</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Family</translation> <translation id="5760715441271661976">Portal state</translation> -<translation id="5781694279199921985">Save session log</translation> <translation id="5797428682393400134">SUCCESS</translation> <translation id="5832805196449965646">Add Person</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Test has been cancelled</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Couldn't cancel scanning</translation> <translation id="6766275201586212568">Failed DNS resolutions</translation> <translation id="6768237774506518020">High DNS resolution failure rate</translation> -<translation id="6839141349259399400">Can't connect to scanners?</translation> <translation id="6853312040151791195">Discharging rate</translation> <translation id="6898743098396957679">Couldn't complete scanning</translation> <translation id="6911383237894364323">Unable to connect to media servers</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Charging; <ph name="TIME_VALUE" /> until full</translation> <translation id="708426984172631313">STOPPED</translation> <translation id="7143207342074048698">Connecting</translation> +<translation id="7144878232160441200">Retry</translation> <translation id="714876143603641390">LAN connectivity</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881">This <ph name="DEVICE_TYPE" /> is managed by <ph name="MANAGER" />. Administrators may remotely configure the device.</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index b9b177d..08173d70 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">Autenticación</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Estado de la batería</translation> -<translation id="520299634122159966">No hay escáneres disponibles</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> @@ -210,7 +209,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familia</translation> <translation id="5760715441271661976">Estado del portal</translation> -<translation id="5781694279199921985">Guardar el registro de la sesión</translation> <translation id="5797428682393400134">COMPLETA</translation> <translation id="5832805196449965646">Agregar a una persona</translation> <translation id="5844247382766192936">Se canceló la prueba de <ph name="TEST_NAME" />.</translation> @@ -260,7 +258,6 @@ <translation id="6756731097889387912">No se pudo cancelar el escaneo</translation> <translation id="6766275201586212568">Resoluciones DNS con error</translation> <translation id="6768237774506518020">Tasa alta de errores para la resolución de DNS</translation> -<translation id="6839141349259399400">¿No puedes establecer conexión con los escáneres?</translation> <translation id="6853312040151791195">Velocidad de descarga</translation> <translation id="6898743098396957679">No se pudo completar el escaneo</translation> <translation id="6911383237894364323">No es posible conectarse a los servidores de medios</translation> @@ -271,6 +268,7 @@ <translation id="7059230779847288458">Cargando, <ph name="TIME_VALUE" /> para completar la carga</translation> <translation id="708426984172631313">DETENIDA</translation> <translation id="7143207342074048698">Conectando</translation> +<translation id="7144878232160441200">Volver a intentar</translation> <translation id="714876143603641390">Conectividad LAN</translation> <translation id="7162487448488904999">Galería</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> administra el dispositivo <ph name="DEVICE_TYPE" />. Los administradores pueden configurarlo de forma remota.</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb index 111469e..b2725f2 100644 --- a/chromeos/strings/chromeos_strings_es.xtb +++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autenticación</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Estado de la batería</translation> -<translation id="520299634122159966">No hay escáneres disponibles</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">Itinerancia</translation> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familia</translation> <translation id="5760715441271661976">Estado de portal</translation> -<translation id="5781694279199921985">Guardar registro de la sesión</translation> <translation id="5797428682393400134">CORRECTO</translation> <translation id="5832805196449965646">Añadir perfil</translation> <translation id="5844247382766192936">La prueba <ph name="TEST_NAME" /> se ha cancelado</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">No se ha podido cancelar el análisis</translation> <translation id="6766275201586212568">Errores de resoluciones de DNS</translation> <translation id="6768237774506518020">Tasa de errores de resolución de DNS alta</translation> -<translation id="6839141349259399400">¿No se puede establecer conexión con ningún escáner?</translation> <translation id="6853312040151791195">Velocidad de descarga</translation> <translation id="6898743098396957679">No se ha podido completar el análisis</translation> <translation id="6911383237894364323">No se ha podido conectar con los servidores multimedia</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">Cargando (<ph name="TIME_VALUE" /> para completar la carga)</translation> <translation id="708426984172631313">DETENIDA</translation> <translation id="7143207342074048698">Conectando</translation> +<translation id="7144878232160441200">Reintentar</translation> <translation id="714876143603641390">Conectividad LAN</translation> <translation id="7162487448488904999">Galería</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> gestiona este <ph name="DEVICE_TYPE" />. Los administradores pueden configurar el dispositivo de forma remota.</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb index 177d05a..adb69ae 100644 --- a/chromeos/strings/chromeos_strings_et.xtb +++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentimine</translation> <translation id="5154917547274118687">Mälu</translation> <translation id="5168185087976003268">Aku seisukord</translation> -<translation id="520299634122159966">Ühtegi skannerit pole saadaval</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Perekond</translation> <translation id="5760715441271661976">Portaali olek</translation> -<translation id="5781694279199921985">Salvesta seansi logi</translation> <translation id="5797428682393400134">ÕNNESTUS</translation> <translation id="5832805196449965646">Lisa inimene</translation> <translation id="5844247382766192936">Test <ph name="TEST_NAME" /> tühistati</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Skannimist ei õnnestunud tühistada</translation> <translation id="6766275201586212568">Ebaõnnestunud DNS-lahendused</translation> <translation id="6768237774506518020">DNS-lahenduste ebaõnnestumiste kõrge määr</translation> -<translation id="6839141349259399400">Kas skanneritega ei õnnestu ühendust luua?</translation> <translation id="6853312040151791195">Tühjenemise kiirus</translation> <translation id="6898743098396957679">Skannimist ei saanud lõpule viia</translation> <translation id="6911383237894364323">Meediaserveritega ei õnnestu ühendust luua</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Laadimine, täislaadimiseks kulub <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">PEATATUD</translation> <translation id="7143207342074048698">Ühendamine</translation> +<translation id="7144878232160441200">Proovi uuesti</translation> <translation id="714876143603641390">LAN-i ühenduvus</translation> <translation id="7162487448488904999">Galerii</translation> <translation id="7177485034254901881">Seadet <ph name="DEVICE_TYPE" /> haldab <ph name="MANAGER" />. Administraatorid saavad seda seadet kaugühenduse teel seadistada.</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb index c922583..5fb71ff8 100644 --- a/chromeos/strings/chromeos_strings_eu.xtb +++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentifikazioa</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Bateriaren egoera</translation> -<translation id="520299634122159966">Ez dago eskanerrik erabilgarri</translation> <translation id="5212543919916444558">Ezin dizut lagundu pantailako ezerekin. Sakatu mikrofonoa zerbait galdetu nahi badidazu.</translation> <translation id="5222676887888702881">Amaitu saioa</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familia</translation> <translation id="5760715441271661976">Atariaren egoera</translation> -<translation id="5781694279199921985">Gorde saioaren erregistroa</translation> <translation id="5797428682393400134">GAINDITU DA</translation> <translation id="5832805196449965646">Gehitu pertsona bat</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> proba bertan behera utzi da</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Ezin izan da bertan behera utzi eskaneatzeko prozesua</translation> <translation id="6766275201586212568">huts egin dute DNS bidezko ebazpenek</translation> <translation id="6768237774506518020">DNS bidezko ebazpenen hutsegite-tasa altua</translation> -<translation id="6839141349259399400">Ezin zara konektatu eskanerretara?</translation> <translation id="6853312040151791195">Bateriaren deskargatze-abiadura</translation> <translation id="6898743098396957679">Ezin izan da amaitu eskaneatzeko prozesua</translation> <translation id="6911383237894364323">Ezin da konektatu multimedia-zerbitzarietara</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Kargatzen; <ph name="TIME_VALUE" /> geratzen dira guztiz kargatu arte</translation> <translation id="708426984172631313">GELDITUTA</translation> <translation id="7143207342074048698">Konektatzen</translation> +<translation id="7144878232160441200">Saiatu berriro</translation> <translation id="714876143603641390">LAN sarearen konexioa</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> domeinuak kudeatzen du <ph name="DEVICE_TYPE" /> gailua. Baliteke administratzaileek urrunetik konfiguratzea gailua.</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index 22b1b45..a5a30f6 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">اصالتسنجی</translation> <translation id="5154917547274118687">حافظه</translation> <translation id="5168185087976003268">سلامت باتری</translation> -<translation id="520299634122159966">اسکنری دردسترس نیست</translation> <translation id="5212543919916444558">در صفحهتان چیزی پیدا نمیکنم تا درمورد آن کمکتان کنم. برای درخواست از من، روی میکروفون ضربه بزنید.</translation> <translation id="5222676887888702881">خروج از سیستم</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">خانواده</translation> <translation id="5760715441271661976">وضعیت درگاه</translation> -<translation id="5781694279199921985">ذخیره گزارش «جلسه»</translation> <translation id="5797428682393400134">موفقیتآمیز</translation> <translation id="5832805196449965646">افزودن شخص</translation> <translation id="5844247382766192936">«آزمایش <ph name="TEST_NAME" />» لغو شده است</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">اسکن کردن لغو نشد</translation> <translation id="6766275201586212568">تفکیک ساناد انجام نشد</translation> <translation id="6768237774506518020">میزان خطای تفکیک ساناد بالا است</translation> -<translation id="6839141349259399400">نمیتوانید به اسکنر متصل شوید؟</translation> <translation id="6853312040151791195">سرعت تخلیه شارژ</translation> <translation id="6898743098396957679">اسکن تکمیل نشد</translation> <translation id="6911383237894364323">امکان اتصال به سرورهای رسانه وجود ندارد</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">درحال شارژ، <ph name="TIME_VALUE" /> تا شارژ کامل</translation> <translation id="708426984172631313">متوقف شده است</translation> <translation id="7143207342074048698">در حال اتصال</translation> +<translation id="7144878232160441200">سعی مجدد</translation> <translation id="714876143603641390">اتصال LAN</translation> <translation id="7162487448488904999">گالری</translation> <translation id="7177485034254901881">این <ph name="DEVICE_TYPE" /> توسط <ph name="MANAGER" /> مدیریت میشود. سرپرستان میتوانند این دستگاه را ازراهدور پیکربندی کنند.</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb index 84fbfba..bdbd3d5 100644 --- a/chromeos/strings/chromeos_strings_fi.xtb +++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Todennus</translation> <translation id="5154917547274118687">Muisti</translation> <translation id="5168185087976003268">Akun toiminta</translation> -<translation id="520299634122159966">Skannereita ei saatavilla</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Perhe</translation> <translation id="5760715441271661976">Portaalitila</translation> -<translation id="5781694279199921985">Tallenna käyttökertaloki</translation> <translation id="5797428682393400134">ONNISTUI</translation> <translation id="5832805196449965646">Lisää henkilö</translation> <translation id="5844247382766192936">Testi on peruttu: <ph name="TEST_NAME" /></translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Skannausta ei voitu perua</translation> <translation id="6766275201586212568">Hylätyt DNS-selvitykset</translation> <translation id="6768237774506518020">Suuri DNS-selvitysten hylkäysprosentti</translation> -<translation id="6839141349259399400">Etkö pysty yhdistämään skannereihin?</translation> <translation id="6853312040151791195">Tyhjentymisnopeus</translation> <translation id="6898743098396957679">Skannausta ei voitu tehdä loppuun</translation> <translation id="6911383237894364323">Mediapalvelimiin ei saada yhteyttä</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Ladataan, täynnä <ph name="TIME_VALUE" /> päästä</translation> <translation id="708426984172631313">LOPETETTU</translation> <translation id="7143207342074048698">Yhdistetään</translation> +<translation id="7144878232160441200">Yritä uudelleen</translation> <translation id="714876143603641390">LAN-yhteys</translation> <translation id="7162487448488904999">Galleria</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> ylläpitää tätä: <ph name="DEVICE_TYPE" />. Järjestelmänvalvojat voivat määrittää laitteen etänä.</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb index f1d1c1a0..9943df71 100644 --- a/chromeos/strings/chromeos_strings_fil.xtb +++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Pag-authenticate</translation> <translation id="5154917547274118687">Memorya</translation> <translation id="5168185087976003268">Tagal ng baterya</translation> -<translation id="520299634122159966">Walang available na scanner</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Pamilya</translation> <translation id="5760715441271661976">Status ng Portal</translation> -<translation id="5781694279199921985">I-save ang Log ng session</translation> <translation id="5797428682393400134">TAGUMPAY</translation> <translation id="5832805196449965646">Magdagdag ng Tao</translation> <translation id="5844247382766192936">Nakansela ang pagsubok sa <ph name="TEST_NAME" /></translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Hindi makansela ang pag-scan</translation> <translation id="6766275201586212568">May mga hindi naisagawang pagresolba sa DNS</translation> <translation id="6768237774506518020">Mataas na rate ng hindi naisagawang pagresolba sa DNS</translation> -<translation id="6839141349259399400">Hindi makakonekta sa mga scanner?</translation> <translation id="6853312040151791195">Rate ng Pag-discharge</translation> <translation id="6898743098396957679">Hindi makumpleto ang pag-scan</translation> <translation id="6911383237894364323">Hindi makakonekta sa mga media server</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Nagcha-charge, <ph name="TIME_VALUE" /> hanggang sa mapuno</translation> <translation id="708426984172631313">INIHINTO</translation> <translation id="7143207342074048698">Kumokonekta</translation> +<translation id="7144878232160441200">Subukang muli</translation> <translation id="714876143603641390">Pagkakonekta sa Lan</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881">Pinapamahalaan ng <ph name="MANAGER" /> ang <ph name="DEVICE_TYPE" /> na ito. Puwedeng i-configure ng mga administrator ang device sa remote na paraan.</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb index 5f4758d..605c96b 100644 --- a/chromeos/strings/chromeos_strings_fr-CA.xtb +++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Authentification</translation> <translation id="5154917547274118687">Mémoire</translation> <translation id="5168185087976003268">État de la pile</translation> -<translation id="520299634122159966">Aucun numériseur disponible</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Famille</translation> <translation id="5760715441271661976">État du portail</translation> -<translation id="5781694279199921985">Enregistrer le journal de la session</translation> <translation id="5797428682393400134">OPÉRATION RÉUSSIE</translation> <translation id="5832805196449965646">Ajouter une personne</translation> <translation id="5844247382766192936">Le test <ph name="TEST_NAME" /> a été annulé</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Impossible d'annuler la numérisation</translation> <translation id="6766275201586212568">Échec de résolutions DNS</translation> <translation id="6768237774506518020">Taux d'échec élevé des résolutions DNS</translation> -<translation id="6839141349259399400">Impossible d'établir la connexion avec les numériseurs?</translation> <translation id="6853312040151791195">Vitesse de décharge</translation> <translation id="6898743098396957679">Impossible de terminer la numérisation</translation> <translation id="6911383237894364323">Impossible de se connecter aux serveurs multimédias</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">En recharge : <ph name="TIME_VALUE" /> avant que la pile soit rechargée</translation> <translation id="708426984172631313">ARRÊTÉ</translation> <translation id="7143207342074048698">Connexion…</translation> +<translation id="7144878232160441200">Réessayer</translation> <translation id="714876143603641390">Connectivité LAN</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7177485034254901881">Ce <ph name="DEVICE_TYPE" /> est géré par <ph name="MANAGER" />. Les administrateurs peuvent configurer l'appareil à distance.</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index 379bd29..e6a73f249 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Authentification</translation> <translation id="5154917547274118687">Mémoire</translation> <translation id="5168185087976003268">État de la batterie</translation> -<translation id="520299634122159966">Aucun scanner disponible</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Famille</translation> <translation id="5760715441271661976">État du portail</translation> -<translation id="5781694279199921985">Enregistrer le journal de session</translation> <translation id="5797428682393400134">TEST RÉUSSI</translation> <translation id="5832805196449965646">Ajouter une personne</translation> <translation id="5844247382766192936">Le test <ph name="TEST_NAME" /> a été annulé</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Impossible d'annuler la numérisation</translation> <translation id="6766275201586212568">Échec de résolutions DNS</translation> <translation id="6768237774506518020">Taux d'échec élevé des résolutions DNS</translation> -<translation id="6839141349259399400">Impossible d'établir la connexion avec les scanners ?</translation> <translation id="6853312040151791195">Vitesse de décharge</translation> <translation id="6898743098396957679">Échec de la numérisation</translation> <translation id="6911383237894364323">Impossible de se connecter aux serveurs multimédias</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Recharge en cours, complète dans <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">ARRÊTÉ</translation> <translation id="7143207342074048698">Connexion</translation> +<translation id="7144878232160441200">Réessayer</translation> <translation id="714876143603641390">Connectivité LAN</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7177485034254901881">Votre <ph name="DEVICE_TYPE" /> est géré par <ph name="MANAGER" />. Les administrateurs peuvent le configurer à distance.</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb index 966620d..2af5b48b 100644 --- a/chromeos/strings/chromeos_strings_gl.xtb +++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -68,7 +68,7 @@ <translation id="2461822463642141190">Actual</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> <translation id="2517472476991765520">Buscar</translation> -<translation id="2570743873672969996">Executando proba de <ph name="TEST_NAME" />...</translation> +<translation id="2570743873672969996">Executando proba de <ph name="TEST_NAME" />…</translation> <translation id="2585245331261708204">Novidades de Chrome OS</translation> <translation id="2620436844016719705">Sistema</translation> <translation id="2740531572673183784">Aceptar</translation> @@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autenticación</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Estado da batería</translation> -<translation id="520299634122159966">Non hai ningún escáner dispoñible</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familia</translation> <translation id="5760715441271661976">Estado do portal</translation> -<translation id="5781694279199921985">Gardar rexistro da sesión</translation> <translation id="5797428682393400134">SUPEROUSE</translation> <translation id="5832805196449965646">Engadir unha persoa</translation> <translation id="5844247382766192936">Cancelouse a proba de <ph name="TEST_NAME" /></translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Non se puido cancelar o escaneo</translation> <translation id="6766275201586212568">Produciuse un erro coas resolucións de DNS</translation> <translation id="6768237774506518020">Hai un alto índice de erros relacionados coas resolucións de DNS</translation> -<translation id="6839141349259399400">Non podes conectarte a ningún escáner?</translation> <translation id="6853312040151791195">Taxa de descarga</translation> <translation id="6898743098396957679">Non se puido completar o escaneado</translation> <translation id="6911383237894364323">Non se puido establecer conexión cos servidores multimedia</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Cargando (<ph name="TIME_VALUE" /> para completar a carga)</translation> <translation id="708426984172631313">PROBA DETIDA</translation> <translation id="7143207342074048698">Conectando</translation> +<translation id="7144878232160441200">Volver tentar</translation> <translation id="714876143603641390">Conectividade LAN</translation> <translation id="7162487448488904999">Galería</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> xestiona este dispositivo (<ph name="DEVICE_TYPE" />). Os administradores poden configuralo de forma remota.</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index e32e88d..f2c7dc4 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">પ્રમાણીકરણ</translation> <translation id="5154917547274118687">મેમરી</translation> <translation id="5168185087976003268">બૅટરીની ક્ષમતા</translation> -<translation id="520299634122159966">કોઈ સ્કૅનર ઉપલબ્ધ નથી</translation> <translation id="5212543919916444558">મને તમારી સ્ક્રીન પર એવી કોઈપણ વસ્તુ મળી નથી કે જેમાં હું તમારી સહાય કરી શકું. મને કંઈપણ પૂછવા માટે માઇકને ટૅપ કરી જુઓ.</translation> <translation id="5222676887888702881">સાઇન આઉટ</translation> <translation id="5252456968953390977">રોમિંગ</translation> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">કુટુંબ</translation> <translation id="5760715441271661976">પોર્ટલની સ્થિતિ</translation> -<translation id="5781694279199921985">સત્રનો લૉગ સાચવો</translation> <translation id="5797428682393400134">સફળ રહ્યું</translation> <translation id="5832805196449965646">વ્યક્તિ ઉમેરો</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />નું પરીક્ષણ રદ કરવામાં આવ્યું</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">સ્કૅન કરવાનું કાર્ય રદ કરી શક્યા નથી</translation> <translation id="6766275201586212568">નિષ્ફળ રહેલા DNS રિઝોલ્યુશન</translation> <translation id="6768237774506518020">DNS રિઝોલ્યુશન નિષ્ફળતાનો ઉચ્ચ રેટ</translation> -<translation id="6839141349259399400">સ્કૅનર સાથે કનેક્ટ કરી શકતા નથી?</translation> <translation id="6853312040151791195">ડિસ્ચાર્જ થવાની ટકાવારી</translation> <translation id="6898743098396957679">સ્કૅન કરવાની પ્રક્રિયા પૂર્ણ કરી શક્યાં નહીં</translation> <translation id="6911383237894364323">મીડિયા સર્વર સાથે કનેક્ટ કરી શકાયું નથી</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">ચાર્જ થઈ રહી છે, પૂર્ણ ચાર્જ થવામાં <ph name="TIME_VALUE" /> બાકી</translation> <translation id="708426984172631313">રોકવામાં આવ્યું</translation> <translation id="7143207342074048698">કનેક્ટિંગ</translation> +<translation id="7144878232160441200">ફરી પ્રયત્ન કરો</translation> <translation id="714876143603641390">LAN કનેક્ટિવિટી</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> દ્વારા <ph name="DEVICE_TYPE" />ને મેનેજ કરવામાં આવે છે. વ્યવસ્થાપકો દ્વારા ડિવાઇસને રિમોટલી કન્ફિગર કરવામાં આવી શકે છે.</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index db6726c..494a803 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -90,6 +90,7 @@ <translation id="315738237743207937">कैप्टिव पोर्टल की पहचान की गई</translation> <translation id="3188257591659621405">मेरी फ़ाइलें</translation> <translation id="3199982728237701504">डॉक्यूमेंट फ़ीडर (दो तरफ़ वाला)</translation> +<translation id="3226405216343213872">स्कैनर खोजे जा रहे हैं</translation> <translation id="3246869037381808805">एक दिन से ज़्यादा पुरानी, प्रिंट की गई फ़ाइलों को हटा दिया जाएगा</translation> <translation id="3268178239013324452">प्रिंट नहीं हो पाया - प्रिंटर का दरवाज़ा खुला है</translation> <translation id="3310640316857623290">डीएनएस, इंतज़ार की समयसीमा से बहुत ऊपर है</translation> @@ -178,7 +179,6 @@ <translation id="5142961317498132443">पहचान करना</translation> <translation id="5154917547274118687">मेमोरी</translation> <translation id="5168185087976003268">बैटरी की स्थिति</translation> -<translation id="520299634122159966">कोई भी स्कैनर उपलब्ध नहीं है</translation> <translation id="5212543919916444558">मुझे आपकी स्क्रीन पर ऐसा कुछ नहीं मिला जिसमें मैं आपकी सहायता कर पाऊं. मुझे कुछ पूछने के लिए माइक टैप करके देखें.</translation> <translation id="5222676887888702881">साइन आउट करें</translation> @@ -209,7 +209,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">परिवार</translation> <translation id="5760715441271661976">पोर्टल की स्थिति</translation> -<translation id="5781694279199921985">सेशन लॉग सेव करें</translation> <translation id="5797428682393400134">सफल</translation> <translation id="5832805196449965646">व्यक्ति जोड़ें</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> टेस्ट को रद्द कर दिया गया है</translation> @@ -259,7 +258,6 @@ <translation id="6756731097889387912">स्कैन करने की प्रोसेस रद्द नहीं हो सकी</translation> <translation id="6766275201586212568">वे डीएनएस रिज़ॉल्यूशन जो नहीं हो पाए</translation> <translation id="6768237774506518020">डीएनएस रिज़ॉल्यूशन नहीं हो पाने की बढ़ी हुई दर</translation> -<translation id="6839141349259399400">क्या आप स्कैनर से कनेक्ट नहीं कर पा रहे हैं?</translation> <translation id="6853312040151791195">डिस्चार्ज होने की दर</translation> <translation id="6898743098396957679">स्कैन नहीं किया जा सका</translation> <translation id="6911383237894364323">मीडिया सर्वर से कनेक्ट नहीं किया जा सका</translation> @@ -270,6 +268,7 @@ <translation id="7059230779847288458">चार्ज हो रहा है, पूरा चार्ज होने में <ph name="TIME_VALUE" /> लगेंगे</translation> <translation id="708426984172631313">रोका गया</translation> <translation id="7143207342074048698">कनेक्टिंग</translation> +<translation id="7144878232160441200">फिर से प्रयास करें</translation> <translation id="714876143603641390">LAN कनेक्टिविटी</translation> <translation id="7162487448488904999">गैलरी</translation> <translation id="7177485034254901881">इस <ph name="DEVICE_TYPE" /> को <ph name="MANAGER" /> प्रबंधित करता है. एडमिन इस डिवाइस को किसी दूसरी जगह से भी कॉन्फ़िगर कर सकते हैं.</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb index 6d9ef32..d48eb0a 100644 --- a/chromeos/strings/chromeos_strings_hr.xtb +++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -8,6 +8,7 @@ <translation id="1075811647922107217">Veličina stranice</translation> <translation id="1124772482545689468">Korisnik</translation> <translation id="1128128132059598906">EAP-TTLS</translation> +<translation id="1175697296044146566">Ovim uređajem <ph name="DEVICE_TYPE" /> upravlja <ph name="MANAGER" />.</translation> <translation id="1195447618553298278">Nepoznata pogreška.</translation> <translation id="1204296502688602597">Latencija DNS-a</translation> <translation id="123124571410524056">Moguć je portal</translation> @@ -67,6 +68,7 @@ <translation id="2461822463642141190">Trenutačno</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> <translation id="2517472476991765520">Traži</translation> +<translation id="2570743873672969996">Pokretanje testa <ph name="TEST_NAME" />...</translation> <translation id="2585245331261708204">Novo u OS-u Chrome</translation> <translation id="2620436844016719705">Sustav</translation> <translation id="2740531572673183784">U redu</translation> @@ -176,7 +178,6 @@ <translation id="5142961317498132443">Autentifikacija</translation> <translation id="5154917547274118687">Memorija</translation> <translation id="5168185087976003268">Zdravlje baterije</translation> -<translation id="520299634122159966">Nije dostupan nijedan skener</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> @@ -207,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Obitelj</translation> <translation id="5760715441271661976">Stanje portala</translation> -<translation id="5781694279199921985">Spremi zapisnik sesije</translation> <translation id="5797428682393400134">USPJEH</translation> <translation id="5832805196449965646">Dodaj osobu</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Test je otkazan</translation> @@ -257,7 +257,6 @@ <translation id="6756731097889387912">Otkazivanje skeniranja nije uspjelo</translation> <translation id="6766275201586212568">Neuspješna razrješavanja DNS-a</translation> <translation id="6768237774506518020">Visoka stopa neuspješnih razrješavanja DNS-a</translation> -<translation id="6839141349259399400">Ne možete se povezati sa skenerima?</translation> <translation id="6853312040151791195">Brzina pražnjenja</translation> <translation id="6898743098396957679">Skeniranje nije dovršeno</translation> <translation id="6911383237894364323">Povezivanje s medijskim poslužiteljima nije uspjelo</translation> @@ -268,6 +267,7 @@ <translation id="7059230779847288458">Punjenje, <ph name="TIME_VALUE" /> do potpune napunjenosti</translation> <translation id="708426984172631313">ZAUSTAVLJENO</translation> <translation id="7143207342074048698">Povezivanje</translation> +<translation id="7144878232160441200">Pokušaj ponovno</translation> <translation id="714876143603641390">LAN povezivost</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7177485034254901881">Ovim uređajem <ph name="DEVICE_TYPE" /> upravlja <ph name="MANAGER" />. Administratori mogu konfigurirati uređaj na daljinu.</translation> @@ -320,6 +320,8 @@ <translation id="8352772353338965963">Dodajte račun na višestruku prijavu. Svim računima na koje ste prijavljeni može se pristupiti bez zaporke, pa bi se ta značajka trebala upotrebljavati samo s pouzdanim računima.</translation> <translation id="8364946094152050673">Prazni poslužitelji naziva</translation> <translation id="8372477600026034341">Dodatni hostovi</translation> +<translation id="8395584934117017006">Uređajem <ph name="DEVICE_TYPE" /> upravlja poduzeće</translation> +<translation id="8398927464629426868">Brzina punjenja ili pražnjenja uređaja</translation> <translation id="8461329675984532579">Naziv davatelja usluge kućne mreže</translation> <translation id="8475690821716466388">Wi-Fi mreža zaštićena je slabim protokolom WEP PSK</translation> <translation id="8477551185774834963">Latencija DNS-a malo iznad dopuštenog praga</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb index ddeb06f..2e18642e 100644 --- a/chromeos/strings/chromeos_strings_hu.xtb +++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Hitelesítés</translation> <translation id="5154917547274118687">Memória</translation> <translation id="5168185087976003268">Akkumulátor egészsége</translation> -<translation id="520299634122159966">Nincsenek rendelkezésre álló szkennerek</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Család</translation> <translation id="5760715441271661976">Portál állapota</translation> -<translation id="5781694279199921985">Munkamenetnapló mentése</translation> <translation id="5797428682393400134">SIKERÜLT</translation> <translation id="5832805196449965646">Személy hozzáadása</translation> <translation id="5844247382766192936">Teszt (<ph name="TEST_NAME" />) megszakítva</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Nem sikerült a beolvasás megszakítása.</translation> <translation id="6766275201586212568">Sikertelen DNS-feloldások</translation> <translation id="6768237774506518020">Magas hibaarány DNS-feloldásnál</translation> -<translation id="6839141349259399400">Nem tud szkennerhez csatlakozni?</translation> <translation id="6853312040151791195">Lemerítési sebesség</translation> <translation id="6898743098396957679">Nem sikerült befejezni a beolvasást</translation> <translation id="6911383237894364323">Nem lehet csatlakozni a médiaszerverekhez.</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Töltés. (<ph name="TIME_VALUE" /> a teljes feltöltésig.)</translation> <translation id="708426984172631313">LEÁLLÍTVA</translation> <translation id="7143207342074048698">Csatlakozás</translation> +<translation id="7144878232160441200">Újra</translation> <translation id="714876143603641390">LAN-csatlakozás</translation> <translation id="7162487448488904999">Galéria</translation> <translation id="7177485034254901881">Ezt a(z) <ph name="DEVICE_TYPE" /> eszközt a(z) <ph name="MANAGER" /> kezeli. A rendszergazdák távolról konfigurálhatják az eszközt.</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb index 7847102..145c0d6 100644 --- a/chromeos/strings/chromeos_strings_hy.xtb +++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Նույնականացում</translation> <translation id="5154917547274118687">Հիշողություն</translation> <translation id="5168185087976003268">Մարտկոցի կարգավիճակը</translation> -<translation id="520299634122159966">Հասանելի սկաներներ չկան</translation> <translation id="5212543919916444558">Չհաջողվեց գտնել քարտեր էկրանին: Փորձեք օգտագործել խոսափողը` առաջադրանքներ տալու համար:</translation> <translation id="5222676887888702881">Դուրս գրվել</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Ընտանիք</translation> <translation id="5760715441271661976">Պորտալի վիճակը</translation> -<translation id="5781694279199921985">Պահել աշխատաշրջանի տվյալները</translation> <translation id="5797428682393400134">ՀԱՋՈՂՎԵՑ</translation> <translation id="5832805196449965646">Ավելացնել անձ</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> թեստը չեղարկվել է</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Չհաջողվեց չեղարկել սկանավորումը</translation> <translation id="6766275201586212568">DNS-ի անհաջող լուծումներ</translation> <translation id="6768237774506518020">DNS-ի լուծման խափանումների բարձր մակարդակ</translation> -<translation id="6839141349259399400">Չի՞ հաջողվում միանալ սկաներներին։</translation> <translation id="6853312040151791195">Լիցքաթափման արագությունը</translation> <translation id="6898743098396957679">Չհաջողվեց ավարտել սկանավորումը</translation> <translation id="6911383237894364323">Չհաջողվեց միանալ մեդիա սերվերներին</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Լիցքավորում, մնացել է <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">ԴԱԴԱՐԵՑՎԱԾ Է</translation> <translation id="7143207342074048698">Միացում</translation> +<translation id="7144878232160441200">Նորից փորձել</translation> <translation id="714876143603641390">LAN-ի կապ</translation> <translation id="7162487448488904999">Ցուցասրահ</translation> <translation id="7177485034254901881">Այս <ph name="DEVICE_TYPE" /> սարքը կառավարվում է <ph name="MANAGER" />-ի կողմից։ Ադմինիստրատորները կարող են հեռակա փոխել սարքի կարգավորումները։</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb index 07fa756..bc2d2e86 100644 --- a/chromeos/strings/chromeos_strings_id.xtb +++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentikasi</translation> <translation id="5154917547274118687">Memori</translation> <translation id="5168185087976003268">Kesehatan baterai</translation> -<translation id="520299634122159966">Tidak ada pemindai yang tersedia</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Keluarga</translation> <translation id="5760715441271661976">Status Portal</translation> -<translation id="5781694279199921985">Simpan Log sesi</translation> <translation id="5797428682393400134">BERHASIL</translation> <translation id="5832805196449965646">Tambahkan Pengguna</translation> <translation id="5844247382766192936">Pengujian <ph name="TEST_NAME" /> telah dibatalkan</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Tidak dapat membatalkan pemindaian</translation> <translation id="6766275201586212568">Resolusi DNS gagal</translation> <translation id="6768237774506518020">Tingkat kegagalan resolusi DNS tinggi</translation> -<translation id="6839141349259399400">Tidak dapat terhubung ke pemindai?</translation> <translation id="6853312040151791195">Kecepatan pemakaian daya</translation> <translation id="6898743098396957679">Tidak dapat menyelesaikan pemindaian</translation> <translation id="6911383237894364323">Tidak dapat terhubung ke server media</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Mengisi daya, <ph name="TIME_VALUE" /> sampai penuh</translation> <translation id="708426984172631313">DIHENTIKAN</translation> <translation id="7143207342074048698">Menghubungkan</translation> +<translation id="7144878232160441200">Coba lagi</translation> <translation id="714876143603641390">Konektivitas LAN</translation> <translation id="7162487448488904999">Galeri</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> ini dikelola oleh <ph name="MANAGER" />. Administrator dapat mengonfigurasi perangkat dari jarak jauh.</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb index 4c4ecae..500e6b6 100644 --- a/chromeos/strings/chromeos_strings_is.xtb +++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Auðkenning</translation> <translation id="5154917547274118687">Minni</translation> <translation id="5168185087976003268">Ástand rafhlöðu</translation> -<translation id="520299634122159966">Engir skannar tiltækir</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Fjölskylda</translation> <translation id="5760715441271661976">Vefgáttarstaða</translation> -<translation id="5781694279199921985">Vista lotuannál</translation> <translation id="5797428682393400134">TÓKST</translation> <translation id="5832805196449965646">Bæta notanda við</translation> <translation id="5844247382766192936">Hætt var við prófunina: <ph name="TEST_NAME" /></translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Ekki tókst að hætta við að skanna</translation> <translation id="6766275201586212568">DNS-úrlausn mistókst</translation> <translation id="6768237774506518020">DNS-úrlausn mistekst oft</translation> -<translation id="6839141349259399400">Er ekki hægt að tengjast skönnum?</translation> <translation id="6853312040151791195">Afhleðsluhraði</translation> <translation id="6898743098396957679">Ekki var hægt að ljúka skönnun</translation> <translation id="6911383237894364323">Ekki er hægt að tengjast efnisþjónum</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Í hleðslu, <ph name="TIME_VALUE" /> þar til full hleðsla næst</translation> <translation id="708426984172631313">STÖÐVAÐ</translation> <translation id="7143207342074048698">Tengist</translation> +<translation id="7144878232160441200">Reyna aftur</translation> <translation id="714876143603641390">LAN-tenging</translation> <translation id="7162487448488904999">Gallerí</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> hefur umsjón með þessu <ph name="DEVICE_TYPE" />. Kerfisstjórar geta stillt tækið í gegnum fjartengingu.</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index c6a62b81..cbb49f8 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autenticazione</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Condizioni batteria</translation> -<translation id="520299634122159966">Nessuno scanner disponibile</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Famiglia</translation> <translation id="5760715441271661976">Stato portale</translation> -<translation id="5781694279199921985">Salva log di sessione</translation> <translation id="5797428682393400134">OPERAZIONE RIUSCITA</translation> <translation id="5832805196449965646">Aggiungi persona</translation> <translation id="5844247382766192936">Il test <ph name="TEST_NAME" /> è stato annullato</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Impossibile annullare la scansione</translation> <translation id="6766275201586212568">Risoluzioni DNS non riuscite</translation> <translation id="6768237774506518020">Percentuale errori di risoluzione DNS elevata</translation> -<translation id="6839141349259399400">Non riesci a collegare gli scanner?</translation> <translation id="6853312040151791195">Velocità di riduzione della carica</translation> <translation id="6898743098396957679">Impossibile completare la scansione</translation> <translation id="6911383237894364323">Impossibile connettersi ai server multimediali</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">In carica, <ph name="TIME_VALUE" /> al completamento della ricarica</translation> <translation id="708426984172631313">INTERROTTO</translation> <translation id="7143207342074048698">Connessione</translation> +<translation id="7144878232160441200">Riprova</translation> <translation id="714876143603641390">Connettività LAN</translation> <translation id="7162487448488904999">Galleria</translation> <translation id="7177485034254901881">Questo dispositivo <ph name="DEVICE_TYPE" /> è gestito da <ph name="MANAGER" />. Gli amministratori possono configurarlo da remoto.</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index e07df0c..c3fc5c5 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">אימות</translation> <translation id="5154917547274118687">זיכרון</translation> <translation id="5168185087976003268">תקינות הסוללה</translation> -<translation id="520299634122159966">אין סורקים זמינים</translation> <translation id="5212543919916444558">לא מצאתי במסך משהו שאוכל לעזור בו. אפשר להקיש על המיקרופון כדי לשאול אותי משהו.</translation> <translation id="5222676887888702881">יציאה</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">משפחה</translation> <translation id="5760715441271661976">מצב הפורטל</translation> -<translation id="5781694279199921985">לשמירת יומן הפעילות</translation> <translation id="5797428682393400134">הבדיקה הסתיימה בהצלחה</translation> <translation id="5832805196449965646">הוספת משתמש</translation> <translation id="5844247382766192936">הבדיקה <ph name="TEST_NAME" /> בוטלה</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">לא ניתן היה לבטל את הסריקה</translation> <translation id="6766275201586212568">בקשות לזיהוי DNS שנכשלו</translation> <translation id="6768237774506518020">שיעור כישלון גבוה לנסיונות זיהוי DNS</translation> -<translation id="6839141349259399400">לא ניתן להתחבר לסורקים?</translation> <translation id="6853312040151791195">שיעור הפריקה</translation> <translation id="6898743098396957679">לא ניתן להשלים את הסריקה</translation> <translation id="6911383237894364323">לא ניתן להתחבר לשרתי מדיה</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">בטעינה, <ph name="TIME_VALUE" /> עד לטעינה מלאה</translation> <translation id="708426984172631313">הופסקה</translation> <translation id="7143207342074048698">מתבצע חיבור</translation> +<translation id="7144878232160441200">יש לנסות שוב</translation> <translation id="714876143603641390">קישוריות LAN</translation> <translation id="7162487448488904999">גלריה</translation> <translation id="7177485034254901881">מכשיר <ph name="DEVICE_TYPE" /> זה מנוהל על ידי <ph name="MANAGER" />. מנהלי מערכת עשויים להגדיר את המכשיר הזה מרחוק.</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb index 8931170..bc7c38ac 100644 --- a/chromeos/strings/chromeos_strings_ja.xtb +++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">認証</translation> <translation id="5154917547274118687">メモリ</translation> <translation id="5168185087976003268">電池の状態</translation> -<translation id="520299634122159966">使用できるスキャナはありません</translation> <translation id="5212543919916444558">画面からはサポートできる内容が見つかりませんでした。 マイクをタップして質問してみてください。</translation> <translation id="5222676887888702881">ログアウト</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ファミリー</translation> <translation id="5760715441271661976">ポータル状態</translation> -<translation id="5781694279199921985">セッションログを保存</translation> <translation id="5797428682393400134">成功</translation> <translation id="5832805196449965646">ユーザーを追加</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> テストがキャンセルされました</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">スキャンをキャンセルできませんでした</translation> <translation id="6766275201586212568">DNS 解決に失敗しました</translation> <translation id="6768237774506518020">DNS 解決の失敗率が高くなっています</translation> -<translation id="6839141349259399400">スキャナに接続できない場合</translation> <translation id="6853312040151791195">放電率</translation> <translation id="6898743098396957679">スキャンを完了できませんでした</translation> <translation id="6911383237894364323">メディア サーバーに接続できません</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">充電中、フル充電まで <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">停止中</translation> <translation id="7143207342074048698">接続中</translation> +<translation id="7144878232160441200">再読み込み</translation> <translation id="714876143603641390">LAN 接続</translation> <translation id="7162487448488904999">ギャラリー</translation> <translation id="7177485034254901881">この <ph name="DEVICE_TYPE" /> は <ph name="MANAGER" /> によって管理されています。管理者がこのデバイスをリモートで設定している可能性があります。</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index 6997a51..d2336e3 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">ავტორიზაცია</translation> <translation id="5154917547274118687">მეხსიერება</translation> <translation id="5168185087976003268">ბატარეის მდგომარეობა</translation> -<translation id="520299634122159966">სკანერები მიუწვდომელია</translation> <translation id="5212543919916444558">თქვენს ეკრანზე ვერაფერი მოიძებნა, რითაც თქვენს დახმარებას შევძლებდი. გთხოვთ, შეეხოთ მიკროფონს და მკითხოთ, რაც გსურთ.</translation> <translation id="5222676887888702881">გამოსვლა</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ოჯახი</translation> <translation id="5760715441271661976">პორტალის მდგომარეობა</translation> -<translation id="5781694279199921985">სესიის ჟურნალის შენახვა</translation> <translation id="5797428682393400134">წარმატებით შესრულდა</translation> <translation id="5832805196449965646">მომხმარებლის დამატება</translation> <translation id="5844247382766192936">ტესტი „<ph name="TEST_NAME" />“ გაუქმდა</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">სკანირება ვერ გაუქმდა</translation> <translation id="6766275201586212568">DNS ვერ დარეგულირდა</translation> <translation id="6768237774506518020">DNS-ის წარუმატებელი დარეგულირებების მაჩვენებელი მაღალია</translation> -<translation id="6839141349259399400">ვერ უკავშირდებით სკანერებს?</translation> <translation id="6853312040151791195">განმუხტვის სიჩქარე</translation> <translation id="6898743098396957679">სკანირება ვერ დასრულდა</translation> <translation id="6911383237894364323">მედიასერვერებთან დაკავშირება ვერ მოხერხდა</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">იტენება, სრულ დატენამდე დარჩენილია <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">შეწყვეტილია</translation> <translation id="7143207342074048698">დაკავშირება</translation> +<translation id="7144878232160441200">გაიმეორეთ</translation> <translation id="714876143603641390">LAN-ის კავშირი</translation> <translation id="7162487448488904999">გალერეა</translation> <translation id="7177485034254901881">ეს <ph name="DEVICE_TYPE" /> იმართება <ph name="MANAGER" />-ის მიერ. ადმინისტრატორებს შეუძლიათ ამ მოწყობილობის დისტანციურად კონფიგურაცია.</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb index bd3c9f9e..3873b1c8 100644 --- a/chromeos/strings/chromeos_strings_kk.xtb +++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Аутентификация</translation> <translation id="5154917547274118687">Жад</translation> <translation id="5168185087976003268">Батарея күйі</translation> -<translation id="520299634122159966">Қолжетімді сканерлер жоқ.</translation> <translation id="5212543919916444558">Экранда мен көмектесе алатын ештеңе жоқ. Микрофон белгішесін түртіп, маған сұрақ қойыңыз.</translation> <translation id="5222676887888702881">Шығу</translation> <translation id="5252456968953390977">Роуминг</translation> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Отбасы</translation> <translation id="5760715441271661976">Портал күйі</translation> -<translation id="5781694279199921985">Сеанс журналын сақтау</translation> <translation id="5797428682393400134">СӘТТІ АЯҚТАЛДЫ</translation> <translation id="5832805196449965646">Адам қосу</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> тексерісінен бас тартылды</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">Сканерлеуді тоқтату мүмкін болмады.</translation> <translation id="6766275201586212568">DNS ажыратымдылықтары сәтсіз болды.</translation> <translation id="6768237774506518020">DNS ажыратымдылығының ақау көрсеткіші жоғары.</translation> -<translation id="6839141349259399400">Сканерлерге қосыла алмадыңыз ба?</translation> <translation id="6853312040151791195">Заряд азаюының жылдамдығы</translation> <translation id="6898743098396957679">Сканерлеуді аяқтау мүмкін болмады</translation> <translation id="6911383237894364323">Медиасерверлерге қосылмады.</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">Зарядталуда, толғанға дейінгі уақыт: <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">ТОҚТАТЫЛДЫ</translation> <translation id="7143207342074048698">Қосылып жатыр</translation> +<translation id="7144878232160441200">Қайталау</translation> <translation id="714876143603641390">LAN қосылу мүмкіндігі</translation> <translation id="7162487448488904999">Галерея</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> құрылғысын <ph name="MANAGER" /> басқарады. Әкімшілер құрылғыны қашықтан конфигурациялай алады.</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb index ecb7599..cffa71f 100644 --- a/chromeos/strings/chromeos_strings_km.xtb +++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">ការផ្ទៀងផ្ទាត់</translation> <translation id="5154917547274118687">មេម៉ូរី</translation> <translation id="5168185087976003268">គុណភាពថ្ម</translation> -<translation id="520299634122159966">មិនមានឧបករណ៍ស្កេនទេ</translation> <translation id="5212543919916444558">ខ្ញុំរកមិនឃើញអ្វីដែលខ្ញុំអាចជួយបាននៅលើអេក្រង់របស់អ្នកទេ។ សាកល្បងចុចមីក្រូហ្វូន ដើម្បីសួរខ្ញុំអំពីអ្វីម្យ៉ាង។</translation> <translation id="5222676887888702881">ចាកចេញ</translation> <translation id="5252456968953390977">រ៉ូមីង</translation> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">គ្រួសារ</translation> <translation id="5760715441271661976">ស្ថានភាពច្រក</translation> -<translation id="5781694279199921985">រក្សាទុកកំណត់ហេតុវគ្គ</translation> <translation id="5797428682393400134">ជោគជ័យ</translation> <translation id="5832805196449965646">បន្ថែមបុគ្គល</translation> <translation id="5844247382766192936">តេស្ត <ph name="TEST_NAME" /> ត្រូវបានបោះបង់</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">មិនអាចបោះបង់ការស្កេនបានទេ</translation> <translation id="6766275201586212568">កម្រិតច្បាស់ DNS ដែលមិនដំណើរការ</translation> <translation id="6768237774506518020">អត្រាមិនដំណើរការនៃកម្រិតច្បាស់ DNS ខ្ពស់</translation> -<translation id="6839141349259399400">មិនអាចភ្ជាប់ម៉ាស៊ីនស្កេនបានទេឬ?</translation> <translation id="6853312040151791195">អត្រាឈប់សាកថ្ម</translation> <translation id="6898743098396957679">មិនអាចបញ្ចប់ការស្កេនបានទេ</translation> <translation id="6911383237894364323">មិនអាចភ្ជាប់ម៉ាស៊ីនមេមេឌៀបានទេ</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">កំពុងសាកថ្ម <ph name="TIME_VALUE" /> ទៀតទើបពេញ</translation> <translation id="708426984172631313">បានឈប់</translation> <translation id="7143207342074048698">កំពុងភ្ជាប់...</translation> +<translation id="7144878232160441200">ព្យាយាមម្តងទៀត</translation> <translation id="714876143603641390">ការតភ្ជាប់ Lan</translation> <translation id="7162487448488904999">សាលរូបភាព</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> នេះស្ថិតក្រោមការគ្រប់គ្រងរបស់ <ph name="MANAGER" />។ អ្នកគ្រប់គ្រងអាចកំណត់រចនាសម្ព័ន្ធឧបករណ៍នេះពីចម្ងាយបាន។</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb index 4792066..d3db2c6 100644 --- a/chromeos/strings/chromeos_strings_kn.xtb +++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -90,6 +90,7 @@ <translation id="315738237743207937">ವೈ-ಫೈ ಪ್ರಾರಂಭ ಪೋರ್ಟಲ್ ಪತ್ತೆಹಚ್ಚಲಾಗಿದೆ</translation> <translation id="3188257591659621405">ನನ್ನ ಫೈಲ್ಗಳು</translation> <translation id="3199982728237701504">ಡಾಕ್ಯುಮೆಂಟ್ ಫೀಡರ್ (ಎರಡು-ಬದಿಯದ್ದು)</translation> +<translation id="3226405216343213872">ಸ್ಕ್ಯಾನರ್ಗಳಿಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ</translation> <translation id="3246869037381808805">1 ದಿನಕ್ಕಿಂತ ಹಳೆಯದಾದ ಮುದ್ರಣ ಕಾರ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ</translation> <translation id="3268178239013324452">ವಿಫಲವಾಗಿದೆ - ಡೋರ್ ತೆರೆದಿದೆ</translation> <translation id="3310640316857623290">ಅನುಮತಿಸಬಹುದಾದ ಥ್ರೆಶ್ಹೋಲ್ಡ್ಗಿಂತ DNS ವಿಳಂಬವು ಗಮನಾರ್ಹವಾಗಿ ಮೇಲಿದೆ</translation> @@ -178,7 +179,6 @@ <translation id="5142961317498132443">ಪ್ರಮಾಣೀಕರಣ</translation> <translation id="5154917547274118687">ಸ್ಮರಣೆ</translation> <translation id="5168185087976003268">ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ:</translation> -<translation id="520299634122159966">ಯಾವುದೇ ಲಭ್ಯವಿರುವ ಸ್ಕ್ಯಾನರ್ಗಳಿಲ್ಲ</translation> <translation id="5212543919916444558">ನಾನು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದಾದ ಯಾವುದೇ ವಿಷಯ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ನನಗೆ ಕಾಣಿಸಿಲ್ಲ. ನನ್ನ ಬಳಿ ಏನಾದರೂ ಕೇಳಬೇಕಿದ್ದರೆ, ಮೈಕ್ ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="5222676887888702881">ಸೈನ್ ಔಟ್</translation> <translation id="5252456968953390977">ರೋಮಿಂಗ್</translation> @@ -208,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ಕುಟುಂಬ</translation> <translation id="5760715441271661976">ಪೋರ್ಟಲ್ ಸ್ಥಿತಿ</translation> -<translation id="5781694279199921985">ಸೆಶನ್ ಲಾಗ್ ಉಳಿಸಿ</translation> <translation id="5797428682393400134">ಯಶಸ್ವಿಯಾಗಿದೆ</translation> <translation id="5832805196449965646">ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> ಪರೀಕ್ಷೆಯನ್ನು ರದ್ದುಪಡಿಸಲಾಗಿದೆ</translation> @@ -258,7 +257,6 @@ <translation id="6756731097889387912">ಸ್ಕ್ಯಾನಿಂಗ್ ರದ್ದು ಮಾಡಲಾಗಲಿಲ್ಲ</translation> <translation id="6766275201586212568">DNS ರೆಸಲ್ಯೂಷನ್ಗಳು ವಿಫಲವಾಗಿವೆ</translation> <translation id="6768237774506518020">ಅಧಿಕ DNS ರೆಸಲ್ಯೂಷನ್ ವೈಫಲ್ಯ ದರ</translation> -<translation id="6839141349259399400">ಸ್ಕ್ಯಾನರ್ಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲವೇ?</translation> <translation id="6853312040151791195">ಡಿಸ್ಚಾರ್ಜಿಂಗ್ ರೇಟ್</translation> <translation id="6898743098396957679">ಸ್ಕ್ಯಾನಿಂಗ್ ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation> <translation id="6911383237894364323">ಮಾಧ್ಯಮದ ಸರ್ವರ್ಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> @@ -269,6 +267,7 @@ <translation id="7059230779847288458">ಚಾರ್ಜಿಂಗ್ ಆಗುತ್ತಿದೆ, ಸಂಪೂರ್ಣವಾಗಿ ಚಾರ್ಜ್ ಆಗಲು <ph name="TIME_VALUE" /> ಸಮಯ ಬೇಕು</translation> <translation id="708426984172631313">ನಿಲ್ಲಿಸಲಾಗಿದೆ</translation> <translation id="7143207342074048698">ಕನೆಕ್ಟ್...</translation> +<translation id="7144878232160441200">ಮರುಪ್ರಯತ್ನಿಸಿ</translation> <translation id="714876143603641390">LAN ಸಂಪರ್ಕ ಕಲ್ಪಿಸುವಿಕೆ</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881">ಈ <ph name="DEVICE_TYPE" /> ಸಾಧನವನ್ನು <ph name="MANAGER" /> ನಿರ್ವಹಿಸುತ್ತದೆ ನಿರ್ವಾಹಕರು ರಿಮೋಟ್ ಆಗಿ ಸಾಧನವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು.</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb index 18b69c8d..e5f2265 100644 --- a/chromeos/strings/chromeos_strings_ko.xtb +++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">인증</translation> <translation id="5154917547274118687">메모리</translation> <translation id="5168185087976003268">배터리 상태</translation> -<translation id="520299634122159966">사용 가능한 스캐너 없음</translation> <translation id="5212543919916444558">화면에 도움을 드릴 수 있는 항목이 보이지 않습니다. 마이크를 탭하여 무엇이든지 물어보세요.</translation> <translation id="5222676887888702881">로그아웃</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">가족</translation> <translation id="5760715441271661976">포털 상태</translation> -<translation id="5781694279199921985">세션 로그 저장</translation> <translation id="5797428682393400134">완료</translation> <translation id="5832805196449965646">사용자 추가</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> 테스트가 취소됨</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">스캔을 취소할 수 없음</translation> <translation id="6766275201586212568">DNS 변환 실패함</translation> <translation id="6768237774506518020">DNS 변환 실패율 높음</translation> -<translation id="6839141349259399400">스캐너에 연결할 수 없나요?</translation> <translation id="6853312040151791195">방전 속도</translation> <translation id="6898743098396957679">스캔을 완료할 수 없음</translation> <translation id="6911383237894364323">미디어 서버에 연결할 수 없음</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">충전 중, 완료까지 <ph name="TIME_VALUE" /> 남음</translation> <translation id="708426984172631313">중지됨</translation> <translation id="7143207342074048698">연결 중</translation> +<translation id="7144878232160441200">다시 시도</translation> <translation id="714876143603641390">LAN 연결</translation> <translation id="7162487448488904999">갤러리</translation> <translation id="7177485034254901881">이 <ph name="DEVICE_TYPE" />은(는) <ph name="MANAGER" />에서 관리합니다. 관리자가 기기를 원격으로 구성할 수 있습니다.</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb index c4dbae0..10f0bda 100644 --- a/chromeos/strings/chromeos_strings_ky.xtb +++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Аныктыгын текшерүү</translation> <translation id="5154917547274118687">Эстутум</translation> <translation id="5168185087976003268">Батареянын иштөө мөөнөтү</translation> -<translation id="520299634122159966">Жеткиликтүү сканерлер жок</translation> <translation id="5212543919916444558">Экраныңызда эч нерсе көрүнгөн жок. Мага суроо берүү үчүн микрофонду таптап коюңуз.</translation> <translation id="5222676887888702881">Чыгуу</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Үй-бүлөлүк</translation> <translation id="5760715441271661976">Порталдын абалы</translation> -<translation id="5781694279199921985">Сеанстын таржымалын сактоо</translation> <translation id="5797428682393400134">ИЙГИЛИК</translation> <translation id="5832805196449965646">Адам кошуу</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> сыноосу жокко чыгарылды</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Скандоо токтотулбай калды</translation> <translation id="6766275201586212568">DNS резолюциялары орундалган жок</translation> <translation id="6768237774506518020">DNS резолюциясынын бузулуу деңгээли жогору</translation> -<translation id="6839141349259399400">Сканерлерге туташуу мүмкүн болбой жатабы?</translation> <translation id="6853312040151791195">Батареянын кубатынын түгөнүү көрсөткүчү</translation> <translation id="6898743098396957679">Скандоо аягына чыккан жок</translation> <translation id="6911383237894364323">Медиа серверлерине туташпай жатат</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Кубатталууда, толгонго чейин <ph name="TIME_VALUE" /> калды</translation> <translation id="708426984172631313">ТОКТОТУЛДУ</translation> <translation id="7143207342074048698">Туташууда</translation> +<translation id="7144878232160441200">Дагы аракет кылып көрүү</translation> <translation id="714876143603641390">LAN байланышы</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> түзмөгүн <ph name="MANAGER" /> башкарат. Администраторлор түзмөктү алыстан конфигурациялай алышат.</translation>
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb index 5e00533..08cbc37e 100644 --- a/chromeos/strings/chromeos_strings_lo.xtb +++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">ການຮັບຮອງຄວາມຖືກຕ້ອງ</translation> <translation id="5154917547274118687">ຄວາມຈໍາ</translation> <translation id="5168185087976003268">ສະຖານະແບັດເຕີຣີ</translation> -<translation id="520299634122159966">ບໍ່ມີເຄື່ອງສະແກນພ້ອມນຳໃຊ້</translation> <translation id="5212543919916444558">ຂ້ອຍບໍ່ສາມາດຊອກເຫັນອັນໃດຢູ່ໃນໜ້າຈໍຂອງທ່ານທີ່ຂ້ອຍສາມາດຊ່ວຍໄດ້. ລອງແຕະໄມເພື່ອຖາມຂ້ອຍອັນໃດກໍໄດ້.</translation> <translation id="5222676887888702881">ອອກຈາກລະບົບ</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ຄອບຄົວ</translation> <translation id="5760715441271661976">ສະຖານະຜອດໂທລ</translation> -<translation id="5781694279199921985">ເກັບບັນທຶກເຊດຊັນໄວ້</translation> <translation id="5797428682393400134">ສໍາເລັດແລ້ວ</translation> <translation id="5832805196449965646">ເພີ່ມບຸກຄົນ</translation> <translation id="5844247382766192936">ຍົກເລີກການທົດສອບ <ph name="TEST_NAME" /> ແລ້ວ</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">ບໍ່ສາມາດຍົກເລີກການສະແກນໄດ້</translation> <translation id="6766275201586212568">ຄວາມລະອຽດ DNS ບໍ່ສຳເລັດ</translation> <translation id="6768237774506518020">ອັດຕາຄວາມບໍ່ສຳເລັດຂອງຄວາມລະອຽດ DNS ສູງ</translation> -<translation id="6839141349259399400">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເຄື່ອງສະແກນໄດ້ບໍ?</translation> <translation id="6853312040151791195">ອັດຕາການຄາຍປະຈຸ</translation> <translation id="6898743098396957679">ບໍ່ສາມາດເຮັດສຳເລັດການສະແກນໄດ້</translation> <translation id="6911383237894364323">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເຊີບເວີມີເດຍໄດ້</translation> @@ -271,6 +268,7 @@ <ph name="TIME_VALUE" />: ຈົນເຕັມ</translation> <translation id="708426984172631313">ຢຸດແລ້ວ</translation> <translation id="7143207342074048698">ກຳລັງເຊື່ອມຕໍ່</translation> +<translation id="7144878232160441200">ລອງໃໝ່ອີກ</translation> <translation id="714876143603641390">ການເຊື່ອມຕໍ່ LAN</translation> <translation id="7162487448488904999">ຄັງຮູບ</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> ນີ້ຈັດການໂດຍ <ph name="MANAGER" />. ຜູ້ເບິ່ງແຍງລະບົບອາດຈະຕັ້ງຄ່າອຸປະກອນຈາກທາງໄກໄດ້.</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb index e4ec904..1ecaa36 100644 --- a/chromeos/strings/chromeos_strings_lt.xtb +++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentifikavimas</translation> <translation id="5154917547274118687">Atmintis</translation> <translation id="5168185087976003268">Akumuliatoriaus būsena</translation> -<translation id="520299634122159966">Nėra pasiekiamų skaitytuvų</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Šeima</translation> <translation id="5760715441271661976">Portalo būsena</translation> -<translation id="5781694279199921985">Išsaugoti seanso žurnalą</translation> <translation id="5797428682393400134">SĖKMINGAS</translation> <translation id="5832805196449965646">Pridėti asmenį</translation> <translation id="5844247382766192936">Bandymas „<ph name="TEST_NAME" />“ atšauktas</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Nepavyko atšaukti nuskaitymo</translation> <translation id="6766275201586212568">Nepavykę DNS nustatymo veiksmai</translation> <translation id="6768237774506518020">Aukštas DNS nustatymo trikčių rodiklis</translation> -<translation id="6839141349259399400">Nepavyko prisijungti prie skaitytuvų?</translation> <translation id="6853312040151791195">Išsikrovimo rodiklis</translation> <translation id="6898743098396957679">Nepavyko užbaigti nuskaitymo proceso</translation> <translation id="6911383237894364323">Nepavyko prisijungti prie medijos serverių</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Kraunama, <ph name="TIME_VALUE" />, kol bus įkrauta</translation> <translation id="708426984172631313">SUSTABDYTA</translation> <translation id="7143207342074048698">Jungiama</translation> +<translation id="7144878232160441200">Kartoti</translation> <translation id="714876143603641390">LAN ryšys</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7177485034254901881">Šį „<ph name="DEVICE_TYPE" />“ valdo <ph name="MANAGER" />. Administratoriai gali nuotoliniu būdu konfigūruoti įrenginį.</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb index 6553f056..6faa069a 100644 --- a/chromeos/strings/chromeos_strings_lv.xtb +++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">Autentifikācija</translation> <translation id="5154917547274118687">Atmiņa</translation> <translation id="5168185087976003268">Akumulatora stāvoklis</translation> -<translation id="520299634122159966">Nav pieejamu skeneru</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> @@ -210,7 +209,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Ģimene</translation> <translation id="5760715441271661976">Portāla statuss</translation> -<translation id="5781694279199921985">Saglabāt sesijas žurnālu</translation> <translation id="5797428682393400134">SEKMĪGA</translation> <translation id="5832805196449965646">Pievienot personu</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />: pārbaude ir atcelta.</translation> @@ -260,7 +258,6 @@ <translation id="6756731097889387912">Nevarēja atcelt skenēšanu</translation> <translation id="6766275201586212568">DNS atrisināšanas kļūmes</translation> <translation id="6768237774506518020">Biežas DNS atrisināšanas kļūmes</translation> -<translation id="6839141349259399400">Vai nevar izveidot savienojumu ar skeneriem?</translation> <translation id="6853312040151791195">Izlādes ātrums</translation> <translation id="6898743098396957679">Nevarēja pabeigt skenēšanu</translation> <translation id="6911383237894364323">Nevar izveidot savienojumu ar multivides satura serveriem.</translation> @@ -271,6 +268,7 @@ <translation id="7059230779847288458">Notiek uzlāde. Atlikušais laiks līdz pilnai uzlādei: <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">APTURĒTA</translation> <translation id="7143207342074048698">Notiek savienojuma izveide</translation> +<translation id="7144878232160441200">Mēģināt vēlreiz</translation> <translation id="714876143603641390">LAN savienojamība</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7177485034254901881">Šo <ph name="DEVICE_TYPE" /> ierīci pārvalda <ph name="MANAGER" />. Administratori var attālināti konfigurēt ierīci.</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb index 13b8fa6..71c96c05 100644 --- a/chromeos/strings/chromeos_strings_mk.xtb +++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Проверка</translation> <translation id="5154917547274118687">Меморија</translation> <translation id="5168185087976003268">Состојба на батеријата</translation> -<translation id="520299634122159966">Нема достапни скенери</translation> <translation id="5212543919916444558">Не можам да најдам ништо на екранот со што би можел ви помогнам. Допрете го микрофонот за да ме прашате нешто.</translation> <translation id="5222676887888702881">Одјави се</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Семејни</translation> <translation id="5760715441271661976">Состојба на порталот</translation> -<translation id="5781694279199921985">Зачувај евиденција за сесијата</translation> <translation id="5797428682393400134">УСПЕШЕН</translation> <translation id="5832805196449965646">Додај лице</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Тестот е откажан</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Не можеше да се откаже скенирањето</translation> <translation id="6766275201586212568">Неуспешни одредувања со DNS</translation> <translation id="6768237774506518020">Висока стапка на неуспех на одредување со DNS</translation> -<translation id="6839141349259399400">Не може да се поврзете со скенерите?</translation> <translation id="6853312040151791195">Брзина на празнење</translation> <translation id="6898743098396957679">Скенирањето не можеше да се заврши</translation> <translation id="6911383237894364323">Не може да се поврзе со серверите за аудиовизуелни содржини</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Се полни, <ph name="TIME_VALUE" /> до полна</translation> <translation id="708426984172631313">СОПРЕНО</translation> <translation id="7143207342074048698">Се поврзува</translation> +<translation id="7144878232160441200">Обиди се повторно</translation> <translation id="714876143603641390">LAN-поврзливост</translation> <translation id="7162487448488904999">Галерија</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> управува со овој <ph name="DEVICE_TYPE" />. Администраторите може да го конфигурираат уредот оддалеку.</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 196745f86..64321955 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">പരിശോധിച്ചുറപ്പിക്കൽ</translation> <translation id="5154917547274118687">മെമ്മറി</translation> <translation id="5168185087976003268">ബാറ്ററിയുടെ പ്രവർത്തനക്ഷമത</translation> -<translation id="520299634122159966">ലഭ്യമായ സ്കാനറുകളൊന്നുമില്ല</translation> <translation id="5212543919916444558">എനിക്ക് സഹായിക്കാനാവുന്ന ഒന്നും നിങ്ങളുടെ സ്ക്രീനിൽ കണ്ടെത്താനാവുന്നില്ല. എന്നോട് എന്തെങ്കിലും ആവശ്യപ്പെടാൻ മൈക്ക് ടാപ്പ് ചെയ്യുന്നത് പരീക്ഷിക്കൂ.</translation> <translation id="5222676887888702881">സൈൻ ഔട്ട് ചെയ്യുക</translation> <translation id="5252456968953390977">റോമിംഗ്</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">കുടുംബം</translation> <translation id="5760715441271661976">പോര്ട്ടല് നില</translation> -<translation id="5781694279199921985">സെഷൻ ലോഗ് സംരക്ഷിക്കുക</translation> <translation id="5797428682393400134">വിജയകരം</translation> <translation id="5832805196449965646">വ്യക്തിയെ ചേർക്കുക</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> പരിശോധന റദ്ദാക്കി</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">സ്കാൻ ചെയ്യൽ റദ്ദാക്കാനായില്ല</translation> <translation id="6766275201586212568">പരാജയപ്പെട്ട DNS റെസല്യൂഷനുകൾ</translation> <translation id="6768237774506518020">ഉയർന്ന DNS റെസല്യൂഷൻ ഫെയ്ലിയർ നിരക്ക്</translation> -<translation id="6839141349259399400">സ്കാനറുകളിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ലേ?</translation> <translation id="6853312040151791195">ഡിസ്ചാർജ് ചെയ്യൽ റേറ്റ്</translation> <translation id="6898743098396957679">സ്കാൻ ചെയ്യൽ പൂർത്തിയാക്കാനായില്ല</translation> <translation id="6911383237894364323">മീഡിയ സെർവറുകളിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">ചാർജ് ചെയ്യുന്നു, പൂർത്തിയാകാൻ <ph name="TIME_VALUE" /> ശേഷിക്കുന്നു</translation> <translation id="708426984172631313">നിർത്തി</translation> <translation id="7143207342074048698">കണക്റ്റിംഗ്</translation> +<translation id="7144878232160441200">വീണ്ടും ശ്രമിക്കുക</translation> <translation id="714876143603641390">LAN കണക്റ്റിവിറ്റി</translation> <translation id="7162487448488904999">ഗാലറി</translation> <translation id="7177485034254901881">ഈ <ph name="DEVICE_TYPE" /> മാനേജ് ചെയ്യുന്നത് <ph name="MANAGER" /> ആണ്. അഡ്മിൻമാർ ഉപകരണം വിദൂരമായി കോൺഫിഗർ ചെയ്തേക്കാം.</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb index 21260517c..e9cae45 100644 --- a/chromeos/strings/chromeos_strings_mn.xtb +++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Баталгаажуулалт</translation> <translation id="5154917547274118687">Санах ойн</translation> <translation id="5168185087976003268">Батарей барилт</translation> -<translation id="520299634122159966">Боломжтой скан хийгч алга</translation> <translation id="5212543919916444558">Би таны дэлгэцээс туслах боломжтой зүйл олсонгүй. Асуух зүйл байвал микрофоныг товшиж үзнэ үү.</translation> <translation id="5222676887888702881">Гарах</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Гэр бүл</translation> <translation id="5760715441271661976">Порталын төлөв</translation> -<translation id="5781694279199921985">Харилцан үйлдлийн логийг хадгалах</translation> <translation id="5797428682393400134">АМЖИЛТТАЙ</translation> <translation id="5832805196449965646">Хүн нэм</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> туршилтыг цуцалсан байна</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Скан хийхийг цуцалж чадсангүй</translation> <translation id="6766275201586212568">DNS-н тайлал амжилтгүй</translation> <translation id="6768237774506518020">DNS-н тайллын алдааны өндөр хувь</translation> -<translation id="6839141349259399400">Сканнертай холбогдож чадахгүй байна уу?</translation> <translation id="6853312040151791195">Цэнэггүй болох хурд</translation> <translation id="6898743098396957679">Скан хийхийг гүйцээж чадсангүй</translation> <translation id="6911383237894364323">Медиа серверт холбогдох боломжгүй</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Цэнэглэж байна. Дүүрэх хүртэл <ph name="TIME_VALUE" /> үлдсэн байна</translation> <translation id="708426984172631313">ЗОГСООСОН</translation> <translation id="7143207342074048698">Холбож байна</translation> +<translation id="7144878232160441200">Дахин оролдох</translation> <translation id="714876143603641390">Lan-н холболт</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881">Энэ <ph name="DEVICE_TYPE" />-г <ph name="MANAGER" /> удирддаг. Администраторууд төхөөрөмжийг алсаас тохируулж магадгүй.</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index 595d0aff..c90d75a 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -89,6 +89,7 @@ <translation id="315738237743207937">कॅप्टिव्ह पोर्टल डिटेक्ट केले</translation> <translation id="3188257591659621405">माझ्या फाइल</translation> <translation id="3199982728237701504">दस्तऐवज फीडर (दोन बाजू असलेले)</translation> +<translation id="3226405216343213872">स्कॅनर शोधत आहे</translation> <translation id="3246869037381808805">एक दिवसापेक्षा जुने प्रिंट जॉब काढून टाकले जातील</translation> <translation id="3268178239013324452">अयशस्वी झाले - दार उघडे आहे</translation> <translation id="3310640316857623290">DNS लेटन्सी अनुमती असलेल्या सीमेपेक्षा लक्षणीयरीत्या जास्त आहे</translation> @@ -177,7 +178,6 @@ <translation id="5142961317498132443">ऑथेंटिकेशन</translation> <translation id="5154917547274118687">मेमरी</translation> <translation id="5168185087976003268">बॅटरीची स्थिती</translation> -<translation id="520299634122159966">कोणतीही स्कॅनर उपलब्ध नाही</translation> <translation id="5212543919916444558">मी मदत करू शकेन असे मला तुमच्या स्क्रीनवर काही आढळले नाही. मला काहीही विचारण्यासाठी माइकवर टॅप करून पाहा.</translation> <translation id="5222676887888702881">साइन आउट करा</translation> @@ -208,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">कुटुंब</translation> <translation id="5760715441271661976">पोर्टलची स्थिती</translation> -<translation id="5781694279199921985">सेशन लॉग सेव्ह करा</translation> <translation id="5797428682393400134">यशस्वी</translation> <translation id="5832805196449965646">व्यक्ती जोडा</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> चाचणी रद्द करण्यात आली आहे</translation> @@ -258,7 +257,6 @@ <translation id="6756731097889387912">स्कॅनिंग रद्द करता आले नाही</translation> <translation id="6766275201586212568">अयशस्वी DNS रिझोल्युशन</translation> <translation id="6768237774506518020">उच्च DNS रिझोल्युशन अयशस्वी रेट</translation> -<translation id="6839141349259399400">स्कॅनरशी कनेक्ट करू शकत नाही का?</translation> <translation id="6853312040151791195">डिस्चार्ज होण्याचा रेट</translation> <translation id="6898743098396957679">स्कॅनिंग पूर्ण करता आले नाही</translation> <translation id="6911383237894364323">मीडिया सर्व्हरशी कनेक्ट करता आले नाही</translation> @@ -269,6 +267,7 @@ <translation id="7059230779847288458">चार्ज होत आहे, <ph name="TIME_VALUE" /> मध्ये पूर्ण होईल</translation> <translation id="708426984172631313">थांबवली</translation> <translation id="7143207342074048698">कनेक्ट करत आहे</translation> +<translation id="7144878232160441200">पुन्हा प्रयत्न करा</translation> <translation id="714876143603641390">LAN कनेक्टिव्हिटी</translation> <translation id="7162487448488904999">गॅलरी</translation> <translation id="7177485034254901881">हे <ph name="DEVICE_TYPE" /> <ph name="MANAGER" /> द्वारे व्यवस्थापित केले आहे. अॅडमिनिस्ट्रेटर रिमोट पद्धतीने डिव्हाइस काँफिगर करू शकतात.</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index 7e0d625..eb53022d 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Pengesahan</translation> <translation id="5154917547274118687">Memori</translation> <translation id="5168185087976003268">Kesihatan bateri</translation> -<translation id="520299634122159966">Tiada pengimbas tersedia</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Keluarga</translation> <translation id="5760715441271661976">Keadaan Portal</translation> -<translation id="5781694279199921985">Simpan Log sesi</translation> <translation id="5797428682393400134">BERJAYA</translation> <translation id="5832805196449965646">Tambah Orang</translation> <translation id="5844247382766192936">Ujian <ph name="TEST_NAME" /> telah dibatalkan</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Tidak dapat membatalkan pengimbasan</translation> <translation id="6766275201586212568">Penyelesaian DNS gagal</translation> <translation id="6768237774506518020">Kadar kegagalan penyelesaian DNS tinggi</translation> -<translation id="6839141349259399400">Tidak dapat menyambung kepada pengimbas?</translation> <translation id="6853312040151791195">Kadar penyahcasan</translation> <translation id="6898743098396957679">Tidak dapat menyelesaikan pengimbasan</translation> <translation id="6911383237894364323">Tidak dapat menyambung kepada pelayan media</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Mengecas, <ph name="TIME_VALUE" /> sehingga penuh</translation> <translation id="708426984172631313">DIHENTIKAN</translation> <translation id="7143207342074048698">Menyambung</translation> +<translation id="7144878232160441200">Cuba semula</translation> <translation id="714876143603641390">Kesambungan LAN</translation> <translation id="7162487448488904999">Galeri</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> ini diurus oleh <ph name="MANAGER" />. Pentadbir boleh mengkonfigurasikan peranti dari jauh.</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index 79908e9..84a24c7 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">အထောက်အထားစိစစ်မှု</translation> <translation id="5154917547274118687">မှတ်ဉာဏ်</translation> <translation id="5168185087976003268">ဘက်ထရီအခြေအနေ</translation> -<translation id="520299634122159966">စကင်ဖတ်စနစ်များ မရနိုင်ပါ</translation> <translation id="5212543919916444558">သင့်မျက်နှာပြင်တွင် ကျွန်ုပ်ကူညီနိုင်သည့် အကြောင်းအရာများကို မတွေ့ပါ။ မိုက်ကို တို့ပြီး နှစ်သက်ရာ မေးနိုင်ပါသည်။</translation> <translation id="5222676887888702881">ထွက်ခွာရန်</translation> <translation id="5252456968953390977">ရွမ်မင်း</translation> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">မိသားစု</translation> <translation id="5760715441271661976">စာမျက်နှာအခြေအနေ</translation> -<translation id="5781694279199921985">'စက်ရှင်မှတ်တမ်း' ကို သိမ်းရန်</translation> <translation id="5797428682393400134">အောင်မြင်ပါသည်</translation> <translation id="5832805196449965646">လူကို ထည့်ပေးရန်</translation> <translation id="5844247382766192936">'<ph name="TEST_NAME" /> စစ်ဆေးမှု' ကို ပယ်ဖျက်လိုက်သည်</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">စကင်ဖတ်ခြင်းကို ပယ်ဖျက်၍မရပါ</translation> <translation id="6766275201586212568">DNS ဖြေရှင်းချက်များ မအောင်မြင်ပါ</translation> <translation id="6768237774506518020">DNS ဖြေရှင်းချက် ကျရှုံးမှုနှုန်း မြင့်သည်</translation> -<translation id="6839141349259399400">စကင်ဖတ်စက်များသို့ ချိတ်ဆက်၍မရဘူးလား။</translation> <translation id="6853312040151791195">အားလျော့နှုန်း</translation> <translation id="6898743098396957679">စကင်ဖတ်ခြင်းကို အပြီးသတ်၍မရပါ</translation> <translation id="6911383237894364323">မီဒီယာဆာဗာများသို့ ချိတ်ဆက်၍ မရပါ</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">အားသွင်းနေသည် (အားပြည့်ရန် <ph name="TIME_VALUE" /> ကျန်သည်)</translation> <translation id="708426984172631313">ရပ်ထားသည်</translation> <translation id="7143207342074048698">ချိတ်ဆက်နေသည်</translation> +<translation id="7144878232160441200">ထပ်စမ်းရန်</translation> <translation id="714876143603641390">Lan ချိတ်ဆက်မှု</translation> <translation id="7162487448488904999">ပြခန်း</translation> <translation id="7177485034254901881">ဤ <ph name="DEVICE_TYPE" /> ကို <ph name="MANAGER" /> က စီမံခန့်ခွဲသည်။ စီမံခန့်ခွဲသူများက စက်ပစ္စည်းကို အဝေးမှ စီစဉ်သတ်မှတ်နိုင်သည်။</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb index e2af13d..f2a4fc39 100644 --- a/chromeos/strings/chromeos_strings_ne.xtb +++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">प्रमाणीकरण</translation> <translation id="5154917547274118687">स्मरण</translation> <translation id="5168185087976003268">ब्याट्रीको अवस्था</translation> -<translation id="520299634122159966">कुनै पनि स्क्यानर उपलब्ध छैन</translation> <translation id="5212543919916444558">मैले तपाईंको स्क्रिनमा आफूले मद्दत गर्न मिल्ने कुनै पनि कुरा फेला पार्न सकिन। मलाई केही कुरा सोध्न माइकमा ट्याप गरी हेर्नुहोस्।</translation> <translation id="5222676887888702881">साइन आउट गर्नुहोस्</translation> <translation id="5252456968953390977">रोमिङ</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">परिवार</translation> <translation id="5760715441271661976">पोर्टलको स्थिति</translation> -<translation id="5781694279199921985">सत्रको लग सुरक्षित गर्नुहोस्</translation> <translation id="5797428682393400134">सफल भयो</translation> <translation id="5832805196449965646">व्यक्ति थप्नुहोस्</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> परीक्षण रद्द गरिएको छ</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">स्क्यान गर्ने कार्य रद्द गर्न सकिएन</translation> <translation id="6766275201586212568">DNS रिजोल्युसन पूरा हुन सकेनन्</translation> <translation id="6768237774506518020">DNS रिजोल्युसन पूरा हुन नसक्ने दर उच्च छ</translation> -<translation id="6839141349259399400">स्क्यानरमा कनेक्ट गर्न सकिएन?</translation> <translation id="6853312040151791195">डिस्चार्ज हुने दर</translation> <translation id="6898743098396957679">स्क्यान गर्ने कार्य पूरा गर्न सकिएन</translation> <translation id="6911383237894364323">मिडिया सर्भरहरूमा कनेक्ट गर्न सकिएन</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">चार्ज भइरहेको छ, पूर्ण रूपमा चार्ज हुन अझै <ph name="TIME_VALUE" /> लाग्छ</translation> <translation id="708426984172631313">रोकिएको छ</translation> <translation id="7143207342074048698">जडान गर्दै...</translation> +<translation id="7144878232160441200">पुन: प्रयास गर्नुहोस्</translation> <translation id="714876143603641390">Lan कनेक्टिभिटी</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> ले यो <ph name="DEVICE_TYPE" /> व्यवस्थापन गर्छ। एड्मिनहरू टाढैबाट यो यन्त्र कन्फिगर गर्न सक्छन्।</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index f1f7665c..5afb2c7 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Verificatie</translation> <translation id="5154917547274118687">Geheugen</translation> <translation id="5168185087976003268">Batterijprestaties</translation> -<translation id="520299634122159966">Geen beschikbare scanners</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Gezin</translation> <translation id="5760715441271661976">Status van portal</translation> -<translation id="5781694279199921985">Sessielogboek opslaan</translation> <translation id="5797428682393400134">GESLAAGD</translation> <translation id="5832805196449965646">Persoon toevoegen</translation> <translation id="5844247382766192936">Test <ph name="TEST_NAME" /> is geannuleerd</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Kan scannen niet annuleren</translation> <translation id="6766275201586212568">Mislukte DNS-omzettingen</translation> <translation id="6768237774506518020">Hoog percentage mislukte DNS-omzettingen</translation> -<translation id="6839141349259399400">Kun je geen verbinding maken met scanners?</translation> <translation id="6853312040151791195">Ontlaadsnelheid</translation> <translation id="6898743098396957679">Kan de scan niet afronden</translation> <translation id="6911383237894364323">Kan geen verbinding maken met mediaservers</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Opladen, vol over <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">GESTOPT</translation> <translation id="7143207342074048698">Verbinden</translation> +<translation id="7144878232160441200">Opnieuw proberen</translation> <translation id="714876143603641390">LAN-connectiviteit</translation> <translation id="7162487448488904999">Galerij</translation> <translation id="7177485034254901881">Dit <ph name="DEVICE_TYPE" /> wordt beheerd door <ph name="MANAGER" />. Beheerders kunnen het apparaat op afstand instellen.</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb index 16ac422..3f54d64 100644 --- a/chromeos/strings/chromeos_strings_no.xtb +++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentisering</translation> <translation id="5154917547274118687">Minne</translation> <translation id="5168185087976003268">Batterihelse</translation> -<translation id="520299634122159966">Ingen tilgjengelige skannere</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familie</translation> <translation id="5760715441271661976">Portaltilstand</translation> -<translation id="5781694279199921985">Lagre øktlogg</translation> <translation id="5797428682393400134">FULLFØRT</translation> <translation id="5832805196449965646">Legg til person</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />testen er avbrutt</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Kunne ikke avbryte skanningen</translation> <translation id="6766275201586212568">Mislykkede DNS-oppslag</translation> <translation id="6768237774506518020">Høy feilfrekvens for DNS-oppslag</translation> -<translation id="6839141349259399400">Kan du ikke koble til noen skannere?</translation> <translation id="6853312040151791195">Utladingsfrekvens</translation> <translation id="6898743098396957679">Kunne ikke fullføre skanningen</translation> <translation id="6911383237894364323">Kan ikke koble til medietjenere</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Lader – fulladet om <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">STOPPET</translation> <translation id="7143207342074048698">Kobler til</translation> +<translation id="7144878232160441200">Prøv på nytt</translation> <translation id="714876143603641390">LAN-tilkobling</translation> <translation id="7162487448488904999">Galleri</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> administreres av <ph name="MANAGER" />. Administratorer kan konfigurere enheten eksternt.</translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb index 2cc6a72..1283a29 100644 --- a/chromeos/strings/chromeos_strings_or.xtb +++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -177,7 +177,6 @@ <translation id="5142961317498132443">ପ୍ରମାଣିକରଣ</translation> <translation id="5154917547274118687">ମେମୋରୀ</translation> <translation id="5168185087976003268">ବ୍ୟାଟେରୀ ହେଲ୍ଥ</translation> -<translation id="520299634122159966">କୌଣସି ସ୍କାନର୍ ଉପଲବ୍ଧ ନାହିଁ</translation> <translation id="5212543919916444558">ଆପଣଙ୍କର ସ୍କ୍ରିନ୍ରେ ମୁଁ କିଛି ଖୋଜିପାଇଲି ନାହିଁ ଯାହାଦ୍ୱାରା ମୁଁ ଆପଣଙ୍କୁ ସାହାଯ୍ୟ କରିପାରିବି। ମୋତେ ଯାହା କିଛି ପଚାରିବା ପାଇଁ ମାଇକ୍ ଟାପ୍ କରି ଦେଖନ୍ତୁ।</translation> <translation id="5222676887888702881">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ</translation> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ଫ୍ୟାମିଲି</translation> <translation id="5760715441271661976">ପୋର୍ଟାଲ୍ ସ୍ଥିତି</translation> -<translation id="5781694279199921985">ସେସନ୍ ଲଗ୍ ସେଭ୍ କରନ୍ତୁ</translation> <translation id="5797428682393400134">ସଫଳ</translation> <translation id="5832805196449965646">ଲୋକଙ୍କୁ ଯୋଗ କରନ୍ତୁ</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> ଟେଷ୍ଟକୁ ବାତିଲ୍ କରାଯାଇଛି</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">ସ୍କାନିଂ ବାତିଲ୍ କରାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="6766275201586212568">ବିଫଳ ହୋଇଥିବା DNS ରିଜୋଲ୍ୟୁସନ୍</translation> <translation id="6768237774506518020">ଉଚ୍ଚ DNS ରିଜୋଲ୍ୟୁସନ୍ ବିଫଳତା ହାର</translation> -<translation id="6839141349259399400">ସ୍କାନରଗୁଡ଼ିକ ସହ ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ କି?</translation> <translation id="6853312040151791195">ଡିସଚାର୍ଜିଂ ରେଟ୍</translation> <translation id="6898743098396957679">ସ୍କାନିଂ ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="6911383237894364323">ମିଡିଆ ସର୍ଭରଗୁଡ଼ିକ ସହ ସଂଯୋଗ କରିବାକୁ ଅସମର୍ଥ</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">ଚାର୍ଜ କରାଯାଉଛି, ପୂର୍ଣ୍ଣ ହେବାକୁ <ph name="TIME_VALUE" /> ବାକି ଅଛି</translation> <translation id="708426984172631313">ବନ୍ଦ ହୋଇଯାଇଛି</translation> <translation id="7143207342074048698">ସଂଯୋଗ କରୁଛି</translation> +<translation id="7144878232160441200">ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation> <translation id="714876143603641390">LAN ସଂଯୋଗ</translation> <translation id="7162487448488904999">ଗ୍ୟାଲେରୀ</translation> <translation id="7177485034254901881">ଏହି <ph name="DEVICE_TYPE" />, <ph name="MANAGER" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି। ଆଡମିନିଷ୍ଟ୍ରେଟରମାନେ ଡିଭାଇସଟିକୁ ରିମୋଟ୍ ଭାବେ କନଫିଗର୍ କରିପାରନ୍ତି।</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb index 58f2277e..5299cd6b8 100644 --- a/chromeos/strings/chromeos_strings_pa.xtb +++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">ਪ੍ਰਮਾਣੀਕਰਨ</translation> <translation id="5154917547274118687">ਮੈਮਰੀ</translation> <translation id="5168185087976003268">ਬੈਟਰੀ ਦੀ ਸਥਿਤੀ</translation> -<translation id="520299634122159966">ਕੋਈ ਸਕੈਨਰ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</translation> <translation id="5212543919916444558">ਮੈਨੂੰ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ 'ਤੇ ਅਜਿਹਾ ਕੁਝ ਵੀ ਨਹੀਂ ਮਿਲਿਆ ਜਿਸ ਵਿੱਚ ਮੈਂ ਤੁਹਾਡੀ ਮਦਦ ਕਰ ਸਕਾਂ। ਮੇਰੇ ਤੋਂ ਕੁਝ ਵੀ ਪੁੱਛਣ ਲਈ ਮਾਈਕ 'ਤੇ ਟੈਪ ਕਰਕੇ ਦੇਖੋ।</translation> <translation id="5222676887888702881">ਸਾਈਨ-ਆਊਟ ਕਰੋ</translation> <translation id="5252456968953390977">ਰੋਮਿੰਗ</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ਪਰਿਵਾਰ</translation> <translation id="5760715441271661976">ਪੋਰਟਲ ਸਥਿਤੀ</translation> -<translation id="5781694279199921985">ਸੈਸ਼ਨ ਲੌਗ ਨੂੰ ਰੱਖਿਅਤ ਕਰੋ</translation> <translation id="5797428682393400134">ਸਫਲ ਰਿਹਾ</translation> <translation id="5832805196449965646">ਵਿਅਕਤੀ ਜੋੜੋ</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> ਟੈਸਟ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">ਸਕੈਨਿੰਗ ਨੂੰ ਰੱਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</translation> <translation id="6766275201586212568">ਅਸਫਲ DNS ਰੈਜ਼ੋਲਿਊਸ਼ਨ</translation> <translation id="6768237774506518020">DNS ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਦੀ ਉੱਚ ਅਸਫਲ ਦਰ</translation> -<translation id="6839141349259399400">ਕੀ ਸਕੈਨਰਾਂ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ?</translation> <translation id="6853312040151791195">ਡਿਸਚਾਰਜ ਹੋਣ ਦੀ ਦਰ</translation> <translation id="6898743098396957679">ਸਕੈਨਿੰਗ ਪੂਰੀ ਨਹੀਂ ਹੋ ਸਕੀ</translation> <translation id="6911383237894364323">ਮੀਡੀਆ ਸਰਵਰਾਂ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">ਚਾਰਜ ਹੋ ਰਹੀ ਹੈ, ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਵਿੱਚ <ph name="TIME_VALUE" /> ਦਾ ਸਮਾਂ ਬਾਕੀ</translation> <translation id="708426984172631313">ਬੰਦ ਕੀਤਾ ਗਿਆ</translation> <translation id="7143207342074048698">ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ</translation> +<translation id="7144878232160441200">ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</translation> <translation id="714876143603641390">LAN ਕਨੈਕਟੀਵਿਟੀ</translation> <translation id="7162487448488904999">ਗੈਲਰੀ</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> ਵੱਲੋਂ ਇਸ <ph name="DEVICE_TYPE" /> ਦਾ ਪ੍ਰਬੰਧਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਸ਼ਾਇਦ ਪ੍ਰਸ਼ਾਸਕ ਰਿਮੋਟਲੀ ਡੀਵਾਈਸ ਦਾ ਸੰਰੂਪਣ ਕਰ ਸਕਦੇ ਹਨ।</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb index f274c0cd..45a11cc 100644 --- a/chromeos/strings/chromeos_strings_pl.xtb +++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Uwierzytelnianie</translation> <translation id="5154917547274118687">Pamięć</translation> <translation id="5168185087976003268">Kondycja baterii</translation> -<translation id="520299634122159966">Brak dostępnych skanerów</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Rodzina</translation> <translation id="5760715441271661976">Stan portalu</translation> -<translation id="5781694279199921985">Zapisz dziennik sesji</translation> <translation id="5797428682393400134">POZYTYWNY</translation> <translation id="5832805196449965646">Dodaj osobę</translation> <translation id="5844247382766192936">Test <ph name="TEST_NAME" /> został anulowany</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Nie udało się anulować skanowania</translation> <translation id="6766275201586212568">błędy rozpoznawania nazw DNS</translation> <translation id="6768237774506518020">dużo błędów rozpoznania nazwy DNS</translation> -<translation id="6839141349259399400">Nie możesz połączyć się ze skanerami?</translation> <translation id="6853312040151791195">Szybkość rozładowywania</translation> <translation id="6898743098396957679">Nie udało się ukończyć skanowania</translation> <translation id="6911383237894364323">Nie udało się połączyć z serwerami multimediów</translation> @@ -269,6 +266,7 @@ <translation id="7040230719604914234">Operator</translation> <translation id="708426984172631313">ZATRZYMANO</translation> <translation id="7143207342074048698">Łączenie</translation> +<translation id="7144878232160441200">Spróbuj jeszcze raz</translation> <translation id="714876143603641390">Łączność LAN</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7177485034254901881">Tym urządzeniem <ph name="DEVICE_TYPE" /> zarządza <ph name="MANAGER" />. Administratorzy mogą je zdalnie konfigurować.</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb index 78dfdc62..2188dc03 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autenticação</translation> <translation id="5154917547274118687">Memória</translation> <translation id="5168185087976003268">Integridade da bateria</translation> -<translation id="520299634122159966">Não há scanners disponíveis</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Família</translation> <translation id="5760715441271661976">Estado do portal</translation> -<translation id="5781694279199921985">Salvar registro da sessão</translation> <translation id="5797428682393400134">SUCESSO</translation> <translation id="5832805196449965646">Adicionar pessoa</translation> <translation id="5844247382766192936">O teste de <ph name="TEST_NAME" /> foi cancelado</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Não foi possível cancelar a digitalização</translation> <translation id="6766275201586212568">Falha em resoluções de DNS</translation> <translation id="6768237774506518020">Taxa elevada de erro de resolução de DNS</translation> -<translation id="6839141349259399400">Não foi possível se conectar aos scanners?</translation> <translation id="6853312040151791195">Taxa de descarregamento</translation> <translation id="6898743098396957679">Não foi possível concluir a digitalização</translation> <translation id="6911383237894364323">Não foi possível se conectar aos servidores de mídia</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Carregando. <ph name="TIME_VALUE" /> até a carga completa</translation> <translation id="708426984172631313">PARADO</translation> <translation id="7143207342074048698">Conectando</translation> +<translation id="7144878232160441200">Tentar novamente</translation> <translation id="714876143603641390">Conectividade LAN</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7177485034254901881">Este <ph name="DEVICE_TYPE" /> é gerenciado por <ph name="MANAGER" />. Os administradores podem configurar o dispositivo remotamente.</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index 6a28ca46..c9e6591 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autenticação</translation> <translation id="5154917547274118687">Memória</translation> <translation id="5168185087976003268">Condição da bateria</translation> -<translation id="520299634122159966">Nenhum leitor disponível.</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Família</translation> <translation id="5760715441271661976">Estado do portal</translation> -<translation id="5781694279199921985">Guardar registo da sessão</translation> <translation id="5797428682393400134">ÊXITO</translation> <translation id="5832805196449965646">Adicionar pessoa</translation> <translation id="5844247382766192936">O teste <ph name="TEST_NAME" /> foi cancelado.</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Não foi possível cancelar a digitalização.</translation> <translation id="6766275201586212568">Resoluções de DNS com falhas</translation> <translation id="6768237774506518020">Taxa de falhas de resolução de DNS elevada</translation> -<translation id="6839141349259399400">Não consegue ligar aos scanners?</translation> <translation id="6853312040151791195">Velocidade de descarregamento</translation> <translation id="6898743098396957679">Não foi possível concluir a digitalização</translation> <translation id="6911383237894364323">Não é possível estabelecer ligação aos servidores multimédia.</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">A carregar, <ph name="TIME_VALUE" /> até ficar totalmente carregada</translation> <translation id="708426984172631313">PARADO</translation> <translation id="7143207342074048698">A ligar</translation> +<translation id="7144878232160441200">Tentar novamente</translation> <translation id="714876143603641390">Conetividade de LAN</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7177485034254901881">Este <ph name="DEVICE_TYPE" /> é gerido por <ph name="MANAGER" />. Os administradores podem configurar remotamente o dispositivo.</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb index 14391aec..55581ec3 100644 --- a/chromeos/strings/chromeos_strings_ro.xtb +++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentificare</translation> <translation id="5154917547274118687">Memorie</translation> <translation id="5168185087976003268">Buna funcționare a bateriei:</translation> -<translation id="520299634122159966">Nu sunt disponibile scanere</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familie</translation> <translation id="5760715441271661976">Starea portalului</translation> -<translation id="5781694279199921985">Salvează jurnalul de sesiune</translation> <translation id="5797428682393400134">TRECUT</translation> <translation id="5832805196449965646">Adăugați un utilizator</translation> <translation id="5844247382766192936">Testul <ph name="TEST_NAME" /> a fost anulat</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Nu s-a putut anula scanarea</translation> <translation id="6766275201586212568">Rezolvări DNS nereușite</translation> <translation id="6768237774506518020">Rată de eroare ridicată a rezolvărilor DNS</translation> -<translation id="6839141349259399400">Nu te poți conecta la scanere?</translation> <translation id="6853312040151791195">Rata de descărcare</translation> <translation id="6898743098396957679">Nu s-a putut finaliza scanarea</translation> <translation id="6911383237894364323">Nu se poate conecta la serverele media</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Se încarcă, <ph name="TIME_VALUE" /> până la încărcarea completă</translation> <translation id="708426984172631313">OPRIT</translation> <translation id="7143207342074048698">Se conectează</translation> +<translation id="7144878232160441200">Reîncearcă</translation> <translation id="714876143603641390">Conectivitatea prin LAN</translation> <translation id="7162487448488904999">Galerie</translation> <translation id="7177485034254901881">Acest <ph name="DEVICE_TYPE" /> este gestionat de <ph name="MANAGER" />. Administratorii pot să configureze dispozitivul de la distanță.</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb index a936c83..830cb43 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Аутентификация</translation> <translation id="5154917547274118687">Память</translation> <translation id="5168185087976003268">Уровень заряда</translation> -<translation id="520299634122159966">Нет доступных сканеров.</translation> <translation id="5212543919916444558">Я не нашла на экране ничего подходящего. Попробуйте озвучить запрос, нажав на значок микрофона.</translation> <translation id="5222676887888702881">Выйти</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Семейство</translation> <translation id="5760715441271661976">Состояние страницы входа</translation> -<translation id="5781694279199921985">Сохранить журнал сеанса</translation> <translation id="5797428682393400134">ВЫПОЛНЕНО</translation> <translation id="5832805196449965646">Добавить пользователя</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />-тест отменен.</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Не удалось отменить сканирование.</translation> <translation id="6766275201586212568">невыполненные преобразования DNS</translation> <translation id="6768237774506518020">большое число невыполненных преобразований DNS</translation> -<translation id="6839141349259399400">Не удается подключиться к сканерам?</translation> <translation id="6853312040151791195">Скорость разрядки</translation> <translation id="6898743098396957679">Не удалось выполнить сканирование</translation> <translation id="6911383237894364323">Не удалось подключиться к медиасерверам.</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Заряжается, осталось <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">ОСТАНОВЛЕН</translation> <translation id="7143207342074048698">Подключение</translation> +<translation id="7144878232160441200">Повторить</translation> <translation id="714876143603641390">Подключение к локальной сети</translation> <translation id="7162487448488904999">Галерея</translation> <translation id="7177485034254901881">Этим устройством <ph name="DEVICE_TYPE" /> управляет <ph name="MANAGER" />. Администраторы могут настраивать устройство удаленно.</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb index c61c702..0479fbc 100644 --- a/chromeos/strings/chromeos_strings_si.xtb +++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">සත්යාපනය</translation> <translation id="5154917547274118687">මතකය</translation> <translation id="5168185087976003268">බැටරි සුවතාව</translation> -<translation id="520299634122159966">ලබා ගත හැකි ස්කෑනර නැත</translation> <translation id="5212543919916444558">මට ඔබට උදවු විය හැකි කිසිවක් ඔබේ තිරය මත සොයා ගැනීමට නොහැකිය. මගෙන් යම් දෙයක් ඇසීමට මයික්රෆෝනය තට්ටු කිරීම උත්සාහ කරන්න.</translation> <translation id="5222676887888702881">පිටවීම</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">පවුල</translation> <translation id="5760715441271661976">ද්වාර තත්වය</translation> -<translation id="5781694279199921985">සැසි ලොගය සුරකින්න</translation> <translation id="5797428682393400134">සාර්ථකයි</translation> <translation id="5832805196449965646">පුද්ගලයා එක් කරන්න</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> පරීක්ෂණය අවලංගු කර ඇත</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">ස්කෑන් කිරීම අවලංගු කිරීමට නොහැකි විය</translation> <translation id="6766275201586212568">අසාර්ථක වූ DNS විභේදන</translation> <translation id="6768237774506518020">ඉහළ DNS විභේදන අසාර්ථක වීම් අනුපාතය</translation> -<translation id="6839141349259399400">ස්කෑනර වෙත සම්බන්ධ විය නොහැකිද?</translation> <translation id="6853312040151791195">විසර්ජන වේගය</translation> <translation id="6898743098396957679">ස්කෑන් කිරීම සම්පූර්ණ කිරීමට නොහැකි විය</translation> <translation id="6911383237894364323">මාධ්ය සේවාදායක වෙත සබැඳීමට නොහැකිය</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">ආරෝපණය වෙමින්, සම්පූර්ණ වන තෙක් <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">නවත්වන ලදි</translation> <translation id="7143207342074048698">සම්බන්ධ වෙමින්…</translation> +<translation id="7144878232160441200">නැවත උත්සහ කරන්න</translation> <translation id="714876143603641390">LAN සබැඳුම් හැකියාව</translation> <translation id="7162487448488904999">ගැලරිය</translation> <translation id="7177485034254901881">මෙම <ph name="DEVICE_TYPE" /> කළමනාකරණය කරනු ලබන්නේ <ph name="MANAGER" /> මගිනි. පරිපාලකයින්ට උපාංගය දුරස්ථව වින්යාස කිරීමට හැකිය.</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb index 89f0d0e..b16b78f 100644 --- a/chromeos/strings/chromeos_strings_sk.xtb +++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Overenie totožnosti</translation> <translation id="5154917547274118687">Pamäť</translation> <translation id="5168185087976003268">Stav batérie</translation> -<translation id="520299634122159966">K dispozícii nie sú žiadne skenery</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Rodina</translation> <translation id="5760715441271661976">Stav portálu</translation> -<translation id="5781694279199921985">Uložiť denník relácie</translation> <translation id="5797428682393400134">PODARILO SA</translation> <translation id="5832805196449965646">Pridať osobu</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Test bol zrušený</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Skenovanie sa nepodarilo zrušiť</translation> <translation id="6766275201586212568">Neúspešné preklady DNS</translation> <translation id="6768237774506518020">Vysoká miera neúspešných prekladov DNS</translation> -<translation id="6839141349259399400">Nemôžete sa pripojiť k skenerom?</translation> <translation id="6853312040151791195">Rýchlosť vybíjania</translation> <translation id="6898743098396957679">Skenovanie sa nepodarilo dokončiť</translation> <translation id="6911383237894364323">Nepodarilo sa pripojiť k mediálnym serverom</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Nabíja sa (úplné nabitie o <ph name="TIME_VALUE" />)</translation> <translation id="708426984172631313">ZASTAVENÉ</translation> <translation id="7143207342074048698">Pripája sa</translation> +<translation id="7144878232160441200">Skúsiť znova</translation> <translation id="714876143603641390">Pripojenie cez miestnu sieť</translation> <translation id="7162487448488904999">Galéria</translation> <translation id="7177485034254901881">Toto zariadenie <ph name="DEVICE_TYPE" /> spravuje <ph name="MANAGER" />. Správcovia ho môžu vzdialene konfigurovať.</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index 24995207..b83bd221 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Preverjanje pristnosti</translation> <translation id="5154917547274118687">Pomnilnik</translation> <translation id="5168185087976003268">Stanje baterije</translation> -<translation id="520299634122159966">Ni razpoložljivih optičnih bralnikov</translation> <translation id="5212543919916444558">Na zaslonu ni ničesar uporabnega. Poskusite vprašati tako, da se dotaknete mikrofona.</translation> <translation id="5222676887888702881">Odjava</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Družina</translation> <translation id="5760715441271661976">Stanje portala</translation> -<translation id="5781694279199921985">Shrani dnevnik seje</translation> <translation id="5797428682393400134">USPEH</translation> <translation id="5832805196449965646">Dodaj osebo</translation> <translation id="5844247382766192936">Preizkus <ph name="TEST_NAME" /> je preklican.</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Optičnega branja ni bilo mogoče preklicati</translation> <translation id="6766275201586212568">Neuspele razrešitve DNS</translation> <translation id="6768237774506518020">Visoko število napak pri razreševanju DNS</translation> -<translation id="6839141349259399400">Ni mogoče vzpostaviti povezave z optičnimi bralniki?</translation> <translation id="6853312040151791195">Hitrost praznjenja</translation> <translation id="6898743098396957679">Optičnega branja ni bilo mogoče dokončati</translation> <translation id="6911383237894364323">Povezave s strežniki za predstavnost ni bilo mogoče vzpostaviti.</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Polnjenje; do napolnjenosti še <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">USTAVLJENO</translation> <translation id="7143207342074048698">Povezovanje</translation> +<translation id="7144878232160441200">Poskusi ponovno</translation> <translation id="714876143603641390">Povezava z omrežjem LAN</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7177485034254901881">To napravo <ph name="DEVICE_TYPE" /> upravlja domena <ph name="MANAGER" />. Skrbniki lahko napravo konfigurirajo na daljavo.</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb index b7bcb6c..22129cff 100644 --- a/chromeos/strings/chromeos_strings_sq.xtb +++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Vërtetimi</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Integriteti i baterisë</translation> -<translation id="520299634122159966">Nuk ka skanerë</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> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familja</translation> <translation id="5760715441271661976">Gjendja e portalit</translation> -<translation id="5781694279199921985">Ruaj evidencën e sesionit</translation> <translation id="5797428682393400134">ME SUKSES</translation> <translation id="5832805196449965646">Shto person</translation> <translation id="5844247382766192936">Testi <ph name="TEST_NAME" /> është anuluar</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">Skanimi nuk mund të anulohej</translation> <translation id="6766275201586212568">Rezolucione të dështuara të DNS-së</translation> <translation id="6768237774506518020">Normë e lartë e rezolucioneve të dështuara të DNS-së</translation> -<translation id="6839141349259399400">Nuk mund të lidhesh me skanerët?</translation> <translation id="6853312040151791195">Shpejtësia e shkarkimit</translation> <translation id="6898743098396957679">Skanimi nuk mund të përfundohej</translation> <translation id="6911383237894364323">Nuk mund të lidhet me serverët e medias.</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">Po karikohet, <ph name="TIME_VALUE" /> derisa të mbushet</translation> <translation id="708426984172631313">NDALOI</translation> <translation id="7143207342074048698">Po lidhet</translation> +<translation id="7144878232160441200">Provo sërish</translation> <translation id="714876143603641390">Lidhshmëria e LAN-it</translation> <translation id="7162487448488904999">Galeria</translation> <translation id="7177485034254901881">Kjo pajisje <ph name="DEVICE_TYPE" /> menaxhohet nga <ph name="MANAGER" />. Administratorët mund ta konfigurojnë në distancë pajisjen.</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index 4e11f92..66a7fbf8 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Potvrda identiteta</translation> <translation id="5154917547274118687">Memorija</translation> <translation id="5168185087976003268">Stanje baterije</translation> -<translation id="520299634122159966">Nema dostupnih skenera</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Porodica</translation> <translation id="5760715441271661976">Status portala</translation> -<translation id="5781694279199921985">Sačuvaj evidenciju sesije</translation> <translation id="5797428682393400134">USPELO JE</translation> <translation id="5832805196449965646">Dodaj osobu</translation> <translation id="5844247382766192936">Test <ph name="TEST_NAME" /> je otkazan</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Otkazivanje skeniranja nije uspelo</translation> <translation id="6766275201586212568">Neuspešna DNS razrešavanja</translation> <translation id="6768237774506518020">Velika stopa neuspeha DNS razrešavanja</translation> -<translation id="6839141349259399400">Povezivanje sa skenerima nije uspelo?</translation> <translation id="6853312040151791195">Brzina pražnjenja</translation> <translation id="6898743098396957679">Dovršavanje skeniranja nije uspelo</translation> <translation id="6911383237894364323">Povezivanje sa medijskim serverima nije uspelo</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Puni se. <ph name="TIME_VALUE" /> do kraja punjenja</translation> <translation id="708426984172631313">ZAUSTAVLJENO</translation> <translation id="7143207342074048698">Povezivanje</translation> +<translation id="7144878232160441200">Probaj ponovo</translation> <translation id="714876143603641390">Povezivanje LAN-a</translation> <translation id="7162487448488904999">Galerija</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> upravlja ovim <ph name="DEVICE_TYPE" /> uređajem. Administratori mogu da konfigurišu uređaj daljinski.</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb index 0844be2..8856c9c 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Потврда идентитета</translation> <translation id="5154917547274118687">Меморија</translation> <translation id="5168185087976003268">Стање батерије</translation> -<translation id="520299634122159966">Нема доступних скенера</translation> <translation id="5212543919916444558">Не могу да пронађем на екрану ништа око чега могу да помогнем. Пробајте да додирнете микрофон да бисте ме питали нешто.</translation> <translation id="5222676887888702881">Одјави ме</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Породица</translation> <translation id="5760715441271661976">Статус портала</translation> -<translation id="5781694279199921985">Сачувај евиденцију сесије</translation> <translation id="5797428682393400134">УСПЕЛО ЈЕ</translation> <translation id="5832805196449965646">Додај особу</translation> <translation id="5844247382766192936">Тест <ph name="TEST_NAME" /> је отказан</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Отказивање скенирања није успело</translation> <translation id="6766275201586212568">Неуспешна DNS разрешавања</translation> <translation id="6768237774506518020">Велика стопа неуспеха DNS разрешавања</translation> -<translation id="6839141349259399400">Повезивање са скенерима није успело?</translation> <translation id="6853312040151791195">Брзина пражњења</translation> <translation id="6898743098396957679">Довршавање скенирања није успело</translation> <translation id="6911383237894364323">Повезивање са медијским серверима није успело</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Пуни се. <ph name="TIME_VALUE" /> до краја пуњења</translation> <translation id="708426984172631313">ЗАУСТАВЉЕНО</translation> <translation id="7143207342074048698">Повезивање</translation> +<translation id="7144878232160441200">Пробај поново</translation> <translation id="714876143603641390">Повезивање LAN-а</translation> <translation id="7162487448488904999">Галерија</translation> <translation id="7177485034254901881"><ph name="MANAGER" /> управља овим <ph name="DEVICE_TYPE" /> уређајем. Администратори могу да конфигуришу уређај даљински.</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb index 51adf6e..f4b0156 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentisering</translation> <translation id="5154917547274118687">Minne</translation> <translation id="5168185087976003268">Batterinivå</translation> -<translation id="520299634122159966">Det finns inga tillgängliga skannrar</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familj</translation> <translation id="5760715441271661976">Portalläge</translation> -<translation id="5781694279199921985">Spara sessionslogg</translation> <translation id="5797428682393400134">LYCKADES</translation> <translation id="5832805196449965646">Lägg till person</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />-testet har avbrutits</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Det gick inte att avbryta</translation> <translation id="6766275201586212568">Misslyckade DNS-matchningar</translation> <translation id="6768237774506518020">Hög felfrekvens för DNS-matchningar</translation> -<translation id="6839141349259399400">Går det inte att ansluta till någon skanner?</translation> <translation id="6853312040151791195">Urladdningshastighet</translation> <translation id="6898743098396957679">Det gick inte att slutföra skanningen</translation> <translation id="6911383237894364323">Det gick inte att ansluta till medieservrarna</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Laddas – fulladdat om <ph name="TIME_VALUE" /></translation> <translation id="708426984172631313">HAR STOPPATS</translation> <translation id="7143207342074048698">Ansluter</translation> +<translation id="7144878232160441200">Försök igen</translation> <translation id="714876143603641390">LAN-anslutningar</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881">Denna <ph name="DEVICE_TYPE" /> hanteras av <ph name="MANAGER" />. Administratörer kan fjärrkonfigurera enheten.</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index 6f75a0f2..d8530c8 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Uthibitishaji</translation> <translation id="5154917547274118687">Kumbukumbu</translation> <translation id="5168185087976003268">Muda wa kudumu wa betri</translation> -<translation id="520299634122159966">Hakuna vichanganuzi vinavyopatikana</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> @@ -208,7 +207,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familia</translation> <translation id="5760715441271661976">Hali ya Ukurasa wa Mwanzo</translation> -<translation id="5781694279199921985">Hifadhi kumbukumbu ya Kipindi</translation> <translation id="5797428682393400134">LIMEFAULU</translation> <translation id="5832805196449965646">Ongeza Mtumiaji Mwingine</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Jaribio limeghairiwa</translation> @@ -258,7 +256,6 @@ <translation id="6756731097889387912">Imeshindwa kughairi uchanganuzi</translation> <translation id="6766275201586212568">Usuluhishaji wa DNS haukufaulu</translation> <translation id="6768237774506518020">Kiwango cha juu cha usuluhishaji wa DNS usiofaulu</translation> -<translation id="6839141349259399400">Je, umeshindwa kuunganisha kwenye vichanganuzi?</translation> <translation id="6853312040151791195">Kasi ya kutumia chaji</translation> <translation id="6898743098396957679">Imeshindwa kukamilisha uchanganuzi</translation> <translation id="6911383237894364323">Imeshindwa kuunganisha kwenye seva za maudhui</translation> @@ -269,6 +266,7 @@ <translation id="7059230779847288458">Inachaji, imebakisha <ph name="TIME_VALUE" /> ijae</translation> <translation id="708426984172631313">LIMESIMAMISHWA</translation> <translation id="7143207342074048698">Inaunganisha</translation> +<translation id="7144878232160441200">Jaribu tena</translation> <translation id="714876143603641390">Muunganisho wa LAN</translation> <translation id="7162487448488904999">Matunzio</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> hii inadhibitiwa na <ph name="MANAGER" />. Wasimamizi wanaweza kuweka mipangilio ya kifaa kwa mbali.</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb index d0ada40..b8e92de 100644 --- a/chromeos/strings/chromeos_strings_ta.xtb +++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">அங்கீகாரம்</translation> <translation id="5154917547274118687">நினைவகம்</translation> <translation id="5168185087976003268">பேட்டரி நிலை</translation> -<translation id="520299634122159966">ஸ்கேனர்கள் எதுவும் இல்லை</translation> <translation id="5212543919916444558">உங்களுக்கு நான் உதவும் வகையில், உங்கள் திரையில் எதுவுமில்லை. என்னிடம் ஏதேனும் கேட்க, மைக்கைத் தட்டவும்.</translation> <translation id="5222676887888702881">வெளியேறு</translation> @@ -210,7 +209,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">குடும்பம்</translation> <translation id="5760715441271661976">போர்டல் நிலை</translation> -<translation id="5781694279199921985">அமர்வுப் பதிவைச் சேமி</translation> <translation id="5797428682393400134">நிறைவடைந்தது</translation> <translation id="5832805196449965646">நபரைச் சேர்</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> சோதனை ரத்துசெய்யப்பட்டது</translation> @@ -260,7 +258,6 @@ <translation id="6756731097889387912">ஸ்கேன் செய்வதை ரத்துசெய்ய முடியவில்லை</translation> <translation id="6766275201586212568">DNS ரெசல்யூஷன்கள் தோல்வி அடைந்தது</translation> <translation id="6768237774506518020">DNS ரெசல்யூஷன் தோல்வி விகிதம் அதிகமாக உள்ளது</translation> -<translation id="6839141349259399400">ஸ்கேனர்களுடன் இணைக்க முடியவில்லையா?</translation> <translation id="6853312040151791195">சார்ஜ் இறங்கும் விகிதம்</translation> <translation id="6898743098396957679">ஸ்கேனிங்கை நிறைவுசெய்ய முடியவில்லை</translation> <translation id="6911383237894364323">மீடியா சேவையகங்களுடன் இணைக்க முடியவில்லை</translation> @@ -271,6 +268,7 @@ <translation id="7059230779847288458">சார்ஜ் ஆகிறது, முழுமையாகச் சார்ஜ் ஏற <ph name="TIME_VALUE" /> ஆகும்</translation> <translation id="708426984172631313">நிறுத்தப்பட்டது</translation> <translation id="7143207342074048698">இணைத்தல்</translation> +<translation id="7144878232160441200">மீண்டும் முயற்சி செய்க</translation> <translation id="714876143603641390">LAN இணைப்புநிலை</translation> <translation id="7162487448488904999">கேலரி</translation> <translation id="7177485034254901881">இந்த <ph name="DEVICE_TYPE" /> சாதனத்தை <ph name="MANAGER" /> நிர்வகிக்கிறது. நிர்வாகிகள் இந்தச் சாதனத்தைத் தொலைநிலையிலிருந்து உள்ளமைக்கக்கூடும்.</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb index 4a6ca4a..cca92fa 100644 --- a/chromeos/strings/chromeos_strings_te.xtb +++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">ప్రమాణీకరణ</translation> <translation id="5154917547274118687">మెమరీ</translation> <translation id="5168185087976003268">బ్యాటరీ సామర్థ్యం</translation> -<translation id="520299634122159966">స్కానర్లు అందుబాటులో లేవు</translation> <translation id="5212543919916444558">నేను సహాయం అందించగలిగేలా మీ స్క్రీన్పై నాకు ఏదీ కనిపించలేదు. మైక్ను నొక్కి, నన్ను ఏదైనా అడగడానికి ప్రయత్నించండి.</translation> <translation id="5222676887888702881">సైన్ ఔట్</translation> <translation id="5252456968953390977">రోమింగ్</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">కుటుంబం</translation> <translation id="5760715441271661976">పోర్టల్ స్థితి</translation> -<translation id="5781694279199921985">సెషన్ లాగ్ను సేవ్ చేయండి</translation> <translation id="5797428682393400134">విజయవంతమైంది</translation> <translation id="5832805196449965646">వ్యక్తిని జోడించు</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> టెస్ట్ రద్దు చేయబడింది</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">స్కానింగ్ను రద్దు చేయడం సాధ్యపడలేదు</translation> <translation id="6766275201586212568">విఫలమైన DNS రిజల్యూషన్లు</translation> <translation id="6768237774506518020">అధిక DNS రిజల్యూషన్ వైఫల్య రేటు</translation> -<translation id="6839141349259399400">స్కానర్లకు కనెక్ట్ చేయడం సాధ్యపడటంలేదా?</translation> <translation id="6853312040151791195">డిశ్చార్జింగ్ రేట్</translation> <translation id="6898743098396957679">స్కాన్ చేయడాన్ని పూర్తి చేయడం సాధ్యపడలేదు</translation> <translation id="6911383237894364323">మీడియా సర్వర్లకు కనెక్ట్ చేయడం సాధ్యం కాలేదు</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">ఛార్జ్ అవుతోంది, పూర్తి కావడానికి <ph name="TIME_VALUE" /> సమయం పడుతుంది</translation> <translation id="708426984172631313">ఆపివేయబడింది</translation> <translation id="7143207342074048698">కనెక్ట్ అవుతో.</translation> +<translation id="7144878232160441200">మళ్ళీ ప్రయత్నించు</translation> <translation id="714876143603641390">LAN కనెక్టివిటీ</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7177485034254901881"><ph name="MANAGER" />, ఈ <ph name="DEVICE_TYPE" />ను మేనేజ్ చేస్తోంది. అడ్మినిస్ట్రేటర్లు పరికరాన్ని రిమోట్గా కాన్ఫిగర్ చేయవచ్చు.</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb index e862d94f..95a1cfb 100644 --- a/chromeos/strings/chromeos_strings_th.xtb +++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">การตรวจสอบสิทธิ์</translation> <translation id="5154917547274118687">หน่วยความจำ</translation> <translation id="5168185087976003268">ประสิทธิภาพของแบตเตอรี่</translation> -<translation id="520299634122159966">ไม่มีเครื่องสแกนที่ใช้ได้</translation> <translation id="5212543919916444558">ฉันไม่พบสิ่งที่จะช่วยได้ในหน้าจอ ลองแตะไมโครโฟนเพื่อถามเรื่องอะไรก็ได้</translation> <translation id="5222676887888702881">ออกจากระบบ</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ครอบครัว</translation> <translation id="5760715441271661976">สถานะพอร์ทัล</translation> -<translation id="5781694279199921985">เก็บบันทึกเซสชัน</translation> <translation id="5797428682393400134">สำเร็จ</translation> <translation id="5832805196449965646">เพิ่มบุคคล</translation> <translation id="5844247382766192936">ยกเลิกการทดสอบ<ph name="TEST_NAME" />แล้ว</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">ยกเลิกการสแกนไม่ได้</translation> <translation id="6766275201586212568">การแปลง DNS ที่ไม่สำเร็จ</translation> <translation id="6768237774506518020">อัตราการแปลง DNS ไม่สำเร็จสูง</translation> -<translation id="6839141349259399400">หากเชื่อมต่อกับเครื่องสแกนไม่ได้</translation> <translation id="6853312040151791195">อัตราการคายประจุ</translation> <translation id="6898743098396957679">สแกนไม่สำเร็จ</translation> <translation id="6911383237894364323">เชื่อมต่อเซิร์ฟเวอร์สื่อไม่ได้</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">กำลังชาร์จ อีก <ph name="TIME_VALUE" />จะเต็ม</translation> <translation id="708426984172631313">หยุดแล้ว</translation> <translation id="7143207342074048698">กำลังเชื่อมต่อ</translation> +<translation id="7144878232160441200">ลองอีกครั้ง</translation> <translation id="714876143603641390">การเชื่อมต่อ LAN</translation> <translation id="7162487448488904999">แกลเลอรี</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> นี้ได้รับการจัดการโดย <ph name="MANAGER" /> ผู้ดูแลระบบอาจกำหนดค่าอุปกรณ์จากระยะไกล</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb index 6f61f73..c044fc3 100644 --- a/chromeos/strings/chromeos_strings_tr.xtb +++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Kimlik Doğrulama</translation> <translation id="5154917547274118687">Bellek</translation> <translation id="5168185087976003268">Pil sağlığı</translation> -<translation id="520299634122159966">Kullanılabilir tarayıcı yok</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Aile</translation> <translation id="5760715441271661976">Portal Durumu</translation> -<translation id="5781694279199921985">Oturum günlüğünü kaydet</translation> <translation id="5797428682393400134">BAŞARILI</translation> <translation id="5832805196449965646">Kişi Ekle</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Testi iptal edildi</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Tarama iptal edilemedi</translation> <translation id="6766275201586212568">Başarısız DNS çözümlemeleri</translation> <translation id="6768237774506518020">DNS çözümleme hata oranı yüksek</translation> -<translation id="6839141349259399400">Tarayıcılara bağlanamıyor musunuz?</translation> <translation id="6853312040151791195">Şarjın boşalma hızı</translation> <translation id="6898743098396957679">Tarama tamamlanamadı</translation> <translation id="6911383237894364323">Medya sunucularına bağlanılamadı</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Şarj oluyor. Tamamen dolmasına <ph name="TIME_VALUE" /> var</translation> <translation id="708426984172631313">DURDURULDU</translation> <translation id="7143207342074048698">Bağlanıyor</translation> +<translation id="7144878232160441200">Yeniden dene</translation> <translation id="714876143603641390">LAN Bağlantısı</translation> <translation id="7162487448488904999">Galeri</translation> <translation id="7177485034254901881">Bu <ph name="DEVICE_TYPE" />, <ph name="MANAGER" /> tarafından yönetiliyor. Yöneticiler bu cihazı uzaktan yapılandırabilir.</translation>
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb index 3135ffd5..7e2a9fe 100644 --- a/chromeos/strings/chromeos_strings_uk.xtb +++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Автентифікація</translation> <translation id="5154917547274118687">Пам’ять</translation> <translation id="5168185087976003268">Стан акумулятора</translation> -<translation id="520299634122159966">Немає доступних сканерів</translation> <translation id="5212543919916444558">На екрані не знайдено елементів, проблеми з якими я можу вирішити. Торкніться значка мікрофона, щоб поставити запитання.</translation> <translation id="5222676887888702881">Вийти</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Сім’я</translation> <translation id="5760715441271661976">Стан порталу</translation> -<translation id="5781694279199921985">Зберегти журнал сеансу</translation> <translation id="5797428682393400134">ПРОЙДЕНО</translation> <translation id="5832805196449965646">Додати користувача</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> Тест скасовано</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Не вдалося скасувати сканування</translation> <translation id="6766275201586212568">невдалі перетворення DNS</translation> <translation id="6768237774506518020">велика частка збоїв під час перетворення DNS</translation> -<translation id="6839141349259399400">Не вдається підключитися до сканерів?</translation> <translation id="6853312040151791195">Швидкість розряджання</translation> <translation id="6898743098396957679">Не вдалося зісканувати</translation> <translation id="6911383237894364323">Не вдалося підключитися до медіасерверів</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Заряджається (<ph name="TIME_VALUE" /> до повного зарядження)</translation> <translation id="708426984172631313">ЗУПИНЕНО</translation> <translation id="7143207342074048698">Під’єднання</translation> +<translation id="7144878232160441200">Повторити спробу</translation> <translation id="714876143603641390">З'єднання LAN</translation> <translation id="7162487448488904999">Галерея</translation> <translation id="7177485034254901881">Цим пристроєм <ph name="DEVICE_TYPE" /> керує <ph name="MANAGER" />. Адміністратори можуть віддалено налаштовувати його.</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index b2a1226..cc971b75 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -179,7 +179,6 @@ <translation id="5142961317498132443">تصدیق</translation> <translation id="5154917547274118687">میموری</translation> <translation id="5168185087976003268">بیٹری کی صحت</translation> -<translation id="520299634122159966">کوئی اسکینرز دستیاب نہیں ہے</translation> <translation id="5212543919916444558">مجھے آپ کی اسکرین پر ایسا کچھ نہیں ملا جس سے متعلق میں آپ کی مدد کر سکوں۔ مجھ سے کچھ بھی پوچھنے کے لیے مائیک کو تھپتھپانے کی کوشش کریں۔</translation> <translation id="5222676887888702881">سائن آؤٹ</translation> <translation id="5252456968953390977">رومنگ</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">فیملی</translation> <translation id="5760715441271661976">پورٹل صورت حال</translation> -<translation id="5781694279199921985">سیشن لاگ محفوظ کریں</translation> <translation id="5797428682393400134">کامیاب</translation> <translation id="5832805196449965646">شخص کو شامل کریں</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> ٹیسٹ منسوخ کر دیا گیا ہے</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">اسکین کا عمل منسوخ نہیں کیا جا سکا</translation> <translation id="6766275201586212568">ناکام DNS ریزولیوشنز</translation> <translation id="6768237774506518020">DNS ریزولیوشن ناکام ہونے کی زیادہ شرح</translation> -<translation id="6839141349259399400">اسکینرز کے ساتھ منسلک نہیں کیا جا سکتا؟</translation> <translation id="6853312040151791195">ڈسچارج ہونے کی شرح</translation> <translation id="6898743098396957679">اسکین کا عمل مکمل نہیں ہو سکا</translation> <translation id="6911383237894364323">میڈیا سرورز سے منسلک ہونے سے قاصر</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">چارج ہو رہا ہے، مکمل ہونے میں <ph name="TIME_VALUE" /> باقی</translation> <translation id="708426984172631313">روک دیا گیا</translation> <translation id="7143207342074048698">منسلک ہو رہا ہے</translation> +<translation id="7144878232160441200">دوبارہ کوشش کریں</translation> <translation id="714876143603641390">Lan کنیکٹوٹی</translation> <translation id="7162487448488904999">گیلری</translation> <translation id="7177485034254901881">یہ <ph name="DEVICE_TYPE" /> <ph name="MANAGER" /> کے زیر انتظام ہے۔ منتظمین دور سے آلے کو کنفیگر کر سکتے ہیں۔</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index fb182b6..9d2c885 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Autentifikatsiya</translation> <translation id="5154917547274118687">Operativ xotira</translation> <translation id="5168185087976003268">Quvvat darajasi</translation> -<translation id="520299634122159966">Skanerlar topilmadi</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Oilaviy</translation> <translation id="5760715441271661976">Portal holati</translation> -<translation id="5781694279199921985">Seans jurnalini saqlash</translation> <translation id="5797428682393400134">BAJARILDI</translation> <translation id="5832805196449965646">Foydalanuvchi qo‘shish</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" /> sinovi bekor qilindi</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Skanerlash bekor qilinmadi</translation> <translation id="6766275201586212568">DNS manzil ajratilmadi</translation> <translation id="6768237774506518020">DNS manzil ajratilmasligi juda yuqori</translation> -<translation id="6839141349259399400">Skanerlarga ulanmadimi?</translation> <translation id="6853312040151791195">Quvvat sarflanishi tezligi</translation> <translation id="6898743098396957679">Skanerlash yakunlanmadi</translation> <translation id="6911383237894364323">Media serverlarga ulana olmadi</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Quvvat olmoqda (<ph name="TIME_VALUE" /> qoldi)</translation> <translation id="708426984172631313">TOʻXTATILDI</translation> <translation id="7143207342074048698">Ulanmoqda</translation> +<translation id="7144878232160441200">Qayta urinish</translation> <translation id="714876143603641390">LAN aloqasi</translation> <translation id="7162487448488904999">Galereya</translation> <translation id="7177485034254901881">Bu <ph name="DEVICE_TYPE" /> qurilmasi <ph name="MANAGER" /> domenida boshqariladi. Administratorlar qurilmani masofadan sozlashi mumkin.</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb index e1b13b5..50e05858 100644 --- a/chromeos/strings/chromeos_strings_vi.xtb +++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -90,6 +90,7 @@ <translation id="315738237743207937">Đã phát hiện thấy trang xác thực</translation> <translation id="3188257591659621405">Tệp của tôi</translation> <translation id="3199982728237701504">Khay nạp tài liệu (2 mặt)</translation> +<translation id="3226405216343213872">Đang tìm máy quét</translation> <translation id="3246869037381808805">Các lệnh in quá 1 ngày sẽ bị xóa</translation> <translation id="3268178239013324452">Không thành công – Cửa máy in đang mở</translation> <translation id="3310640316857623290">Độ trễ của Hệ thống tên miền (DNS) vượt ngưỡng cho phép đáng kể</translation> @@ -178,7 +179,6 @@ <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="520299634122159966">Chưa có máy quét nào</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> @@ -209,7 +209,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Gia đình</translation> <translation id="5760715441271661976">Trạng thái trang xác thực</translation> -<translation id="5781694279199921985">Lưu nhật ký phiên</translation> <translation id="5797428682393400134">THÀNH CÔNG</translation> <translation id="5832805196449965646">Thêm người</translation> <translation id="5844247382766192936">Đã hủy quá trình kiểm tra <ph name="TEST_NAME" /></translation> @@ -259,7 +258,6 @@ <translation id="6756731097889387912">Không thể hủy quá trình quét</translation> <translation id="6766275201586212568">Quá trình phân giải DNS không thành công</translation> <translation id="6768237774506518020">Tỷ lệ lỗi cao trong quá trình phân giải DNS</translation> -<translation id="6839141349259399400">Không thể kết nối với các máy quét?</translation> <translation id="6853312040151791195">Tốc độ xả pin</translation> <translation id="6898743098396957679">Không thể hoàn tất quy trình quét</translation> <translation id="6911383237894364323">Không thể kết nối với máy chủ phương tiện</translation> @@ -270,6 +268,7 @@ <translation id="7059230779847288458">Đang sạc, còn <ph name="TIME_VALUE" /> nữa là pin đầy</translation> <translation id="708426984172631313">ĐÃ DỪNG</translation> <translation id="7143207342074048698">Đang kết nối</translation> +<translation id="7144878232160441200">Thử lại</translation> <translation id="714876143603641390">Khả năng kết nối với mạng LAN</translation> <translation id="7162487448488904999">Thư viện</translation> <translation id="7177485034254901881"><ph name="DEVICE_TYPE" /> này do <ph name="MANAGER" /> quản lý. Quản trị viên có thể định cấu hình từ xa thiết bị này.</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb index a727155..d91e16e8f 100644 --- a/chromeos/strings/chromeos_strings_zh-CN.xtb +++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">身份验证</translation> <translation id="5154917547274118687">内存</translation> <translation id="5168185087976003268">电池寿命</translation> -<translation id="520299634122159966">无可用的扫描器</translation> <translation id="5212543919916444558">无法提供与您的屏幕上可以找到的任何内容相关的帮助。 请尝试通过点按麦克风图标向我提问。</translation> <translation id="5222676887888702881">退出</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">家用</translation> <translation id="5760715441271661976">门户状态</translation> -<translation id="5781694279199921985">保存会话日志</translation> <translation id="5797428682393400134">成功</translation> <translation id="5832805196449965646">添加用户</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />测试已被取消</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">无法取消扫描</translation> <translation id="6766275201586212568">DNS 解析失败</translation> <translation id="6768237774506518020">DNS 解析失败比率较高</translation> -<translation id="6839141349259399400">无法连接到扫描器?</translation> <translation id="6853312040151791195">放电速率</translation> <translation id="6898743098396957679">无法完成扫描</translation> <translation id="6911383237894364323">无法连接到媒体服务器</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">正在充电,还需 <ph name="TIME_VALUE" />才能充满</translation> <translation id="708426984172631313">已停止</translation> <translation id="7143207342074048698">正在连接</translation> +<translation id="7144878232160441200">重试</translation> <translation id="714876143603641390">LAN 连接性</translation> <translation id="7162487448488904999">媒体库</translation> <translation id="7177485034254901881">此 <ph name="DEVICE_TYPE" /> 由 <ph name="MANAGER" /> 管理。管理员可能会远程配置此设备。</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index a31e8e2..4b9275f 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">驗證</translation> <translation id="5154917547274118687">記憶體</translation> <translation id="5168185087976003268">電池狀態</translation> -<translation id="520299634122159966">沒有可用的掃瞄器</translation> <translation id="5212543919916444558">系統在您的畫面上找不到任何可提供協助的內容。 請嘗試輕按麥克風並發問。</translation> <translation id="5222676887888702881">登出</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">家庭</translation> <translation id="5760715441271661976">入口網站狀態</translation> -<translation id="5781694279199921985">儲存工作階段記錄</translation> <translation id="5797428682393400134">成功</translation> <translation id="5832805196449965646">新增使用者</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />測試已取消</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">無法取消掃瞄</translation> <translation id="6766275201586212568">DNS 解析失敗</translation> <translation id="6768237774506518020">DNS 解析失敗率高</translation> -<translation id="6839141349259399400">無法連接至掃瞄器嗎?</translation> <translation id="6853312040151791195">放電率</translation> <translation id="6898743098396957679">無法完成掃瞄</translation> <translation id="6911383237894364323">無法連線至媒體伺服器</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">充電中,<ph name="TIME_VALUE" />後完成充電</translation> <translation id="708426984172631313">已停止</translation> <translation id="7143207342074048698">正在連接</translation> +<translation id="7144878232160441200">重試</translation> <translation id="714876143603641390">LAN 連接性</translation> <translation id="7162487448488904999">媒體庫</translation> <translation id="7177485034254901881">此 <ph name="DEVICE_TYPE" /> 由 <ph name="MANAGER" /> 管理。管理員可能會遠端設定裝置。</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb index 4e2f0f6..bd6726c2 100644 --- a/chromeos/strings/chromeos_strings_zh-TW.xtb +++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">驗證</translation> <translation id="5154917547274118687">記憶體</translation> <translation id="5168185087976003268">電池壽命</translation> -<translation id="520299634122159966">沒有可用的掃描器</translation> <translation id="5212543919916444558">系統在你的畫面上找不到任何能提供協助的內容。 請輕觸麥克風圖示,直接說出你的問題。</translation> <translation id="5222676887888702881">登出</translation> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">家用</translation> <translation id="5760715441271661976">入口網站狀態</translation> -<translation id="5781694279199921985">儲存工作階段記錄</translation> <translation id="5797428682393400134">成功</translation> <translation id="5832805196449965646">新增使用者</translation> <translation id="5844247382766192936"><ph name="TEST_NAME" />測試已取消</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">無法取消掃描</translation> <translation id="6766275201586212568">DNS 解析失敗</translation> <translation id="6768237774506518020">高 DNS 解析失敗率</translation> -<translation id="6839141349259399400">無法連線至掃描器嗎?</translation> <translation id="6853312040151791195">放電率</translation> <translation id="6898743098396957679">無法完成掃描</translation> <translation id="6911383237894364323">無法連線至媒體伺服器</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">充電中,<ph name="TIME_VALUE" />後充飽</translation> <translation id="708426984172631313">已停止</translation> <translation id="7143207342074048698">連線中</translation> +<translation id="7144878232160441200">重試</translation> <translation id="714876143603641390">LAN 連線狀態</translation> <translation id="7162487448488904999">相片庫</translation> <translation id="7177485034254901881">這部 <ph name="DEVICE_TYPE" /> 是由 <ph name="MANAGER" /> 管理。系統管理員可從遠端設定這部裝置。</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb index 89bdea1..b8e3c8b 100644 --- a/chromeos/strings/chromeos_strings_zu.xtb +++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -178,7 +178,6 @@ <translation id="5142961317498132443">Ukufakazela ubuqiniso</translation> <translation id="5154917547274118687">Imemori</translation> <translation id="5168185087976003268">Impilo yebhethri</translation> -<translation id="520299634122159966">Awekho amaskena atholakalayo</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> @@ -209,7 +208,6 @@ <translation id="5670702108860320605">I-BSSID</translation> <translation id="5691511426247308406">Umndeni</translation> <translation id="5760715441271661976">Isimo sephothali</translation> -<translation id="5781694279199921985">Londoloza ilogu yeseshini</translation> <translation id="5797428682393400134">IMPUMELELO</translation> <translation id="5832805196449965646">Engeza umuntu</translation> <translation id="5844247382766192936">Ukuhlola kwe-<ph name="TEST_NAME" /> kukhanseliwe</translation> @@ -259,7 +257,6 @@ <translation id="6756731097889387912">Ayikwazanga ukukhansela ukuskena</translation> <translation id="6766275201586212568">Ukulungiswa kwe-DNS okuhlulekile</translation> <translation id="6768237774506518020">Inani eliphezulu lokuhlulekisa ukulungiswa kwe-DNS</translation> -<translation id="6839141349259399400">Awukwazi ukuxhuma kuzikena?</translation> <translation id="6853312040151791195">Isilinganisela sokuyeka ukushaja</translation> <translation id="6898743098396957679">Ayikwazanga ukuqeda ukuskena</translation> <translation id="6911383237894364323">Ayikwazi ukuxhuma kumaseva wemidiya</translation> @@ -270,6 +267,7 @@ <translation id="7059230779847288458">Iyashaja, <ph name="TIME_VALUE" /> ize igcwale</translation> <translation id="708426984172631313">KUMISIWE</translation> <translation id="7143207342074048698">Iyaxhuma</translation> +<translation id="7144878232160441200">Zama futhi</translation> <translation id="714876143603641390">Ukuxhumana kwe-LAN</translation> <translation id="7162487448488904999">Igalari</translation> <translation id="7177485034254901881">Le-<ph name="DEVICE_TYPE" /> iphethwe yi-<ph name="MANAGER" />. Abalawuli bangase balungiselele ngokulawula kude idivayisi.</translation>
diff --git a/chromeos/test/data/network/repaired_toplevel_partially_invalid.onc b/chromeos/test/data/network/repaired_toplevel_partially_invalid.onc index b0eaed4..39d0a19 100644 --- a/chromeos/test/data/network/repaired_toplevel_partially_invalid.onc +++ b/chromeos/test/data/network/repaired_toplevel_partially_invalid.onc
@@ -36,6 +36,7 @@ "Name": "My WiFi Network", "WiFi": { "HexSSID": "4F70656E577274", // "OpenWrt" + "HiddenSSID": false, "Security": "None", "SSID": "OpenWrt" }
diff --git a/chromeos/test/data/network/wifi_with_hidden_ssid.onc b/chromeos/test/data/network/wifi_with_hidden_ssid.onc new file mode 100644 index 0000000..e6207ff1 --- /dev/null +++ b/chromeos/test/data/network/wifi_with_hidden_ssid.onc
@@ -0,0 +1,11 @@ +{ + "GUID": "{77db0089-0bc8-4358-929c-123xcv}", + "Type": "WiFi", + "Name": "SomeWifi-XY", + "WiFi": { + "SSID": "SomeWifi-XY", + "HexSSID": "536F6D65576966692D5859", + "HiddenSSID": true, + "Security": "None" + }, +} \ No newline at end of file
diff --git a/components/autofill/core/browser/autofill_metrics.cc b/components/autofill/core/browser/autofill_metrics.cc index 0568225..f741427 100644 --- a/components/autofill/core/browser/autofill_metrics.cc +++ b/components/autofill/core/browser/autofill_metrics.cc
@@ -40,7 +40,8 @@ constexpr double kAutofillEventDataBucketSpacing = 2.0; // Note: if adding an enum value here, update the corresponding description for -// AutofillTypeQualityByFieldType in histograms.xml. +// AutofillFieldPredictionQualityByFieldType in +// tools/metrics/histograms/enums.xml. enum FieldTypeGroupForMetrics { GROUP_AMBIGUOUS = 0, GROUP_NAME, @@ -78,6 +79,7 @@ GROUP_ADDRESS_HOME_ADDRESS_WITH_NAME, GROUP_ADDRESS_HOME_FLOOR, GROUP_UNKNOWN_TYPE, + // Add new entries here and update enums.xml. NUM_FIELD_TYPE_GROUPS_FOR_METRICS };
diff --git a/components/crash/core/app/crashpad.h b/components/crash/core/app/crashpad.h index a20dde2..032e781 100644 --- a/components/crash/core/app/crashpad.h +++ b/components/crash/core/app/crashpad.h
@@ -39,9 +39,6 @@ namespace crash_reporter { #if defined(OS_LINUX) || defined(OS_CHROMEOS) -// TODO(jperaza): Remove kEnableCrashpad and IsCrashpadEnabled() when Crashpad -// is fully enabled on Linux. -extern const char kEnableCrashpad[]; bool IsCrashpadEnabled(); #endif
diff --git a/components/crash/core/app/crashpad_linux.cc b/components/crash/core/app/crashpad_linux.cc index 7a8c37c69..8eb3f407 100644 --- a/components/crash/core/app/crashpad_linux.cc +++ b/components/crash/core/app/crashpad_linux.cc
@@ -9,6 +9,7 @@ #include <limits> +#include "base/base_switches.h" #include "base/command_line.h" #include "base/logging.h" #include "base/path_service.h" @@ -51,12 +52,9 @@ FirstChanceHandlerHelper); } -// TODO(jperaza): Remove kEnableCrashpad and IsCrashpadEnabled() when Crashpad -// is fully enabled on Linux. -const char kEnableCrashpad[] = "enable-crashpad"; - bool IsCrashpadEnabled() { - return base::CommandLine::ForCurrentProcess()->HasSwitch(kEnableCrashpad); + return base::CommandLine::ForCurrentProcess()->HasSwitch( + ::switches::kEnableCrashpad); } bool GetHandlerSocket(int* fd, pid_t* pid) {
diff --git a/components/exo/keyboard.cc b/components/exo/keyboard.cc index ca124fa..f1752cc0 100644 --- a/components/exo/keyboard.cc +++ b/components/exo/keyboard.cc
@@ -253,6 +253,9 @@ ProcessAshAcceleratorIfPossible(focus_, event)) { // Discard a key press event if the corresponding accelerator is handled. event->SetHandled(); + // The current focus might have been reset while processing accelerators. + if (!focus_) + return; } // When IME ate a key event, we use the event only for tracking key states and
diff --git a/components/omnibox/browser/scored_history_match_unittest.cc b/components/omnibox/browser/scored_history_match_unittest.cc index 691381de..8863aab 100644 --- a/components/omnibox/browser/scored_history_match_unittest.cc +++ b/components/omnibox/browser/scored_history_match_unittest.cc
@@ -69,7 +69,7 @@ // and word break information automatically that are needed to call // GetTopicalityScore(). float GetTopicalityScoreOfTermAgainstURLAndTitle( - const std::vector<const std::string>&, + const std::vector<std::string>&, const WordStarts term_word_starts, const GURL& url, const base::string16& title); @@ -111,7 +111,7 @@ } float ScoredHistoryMatchTest::GetTopicalityScoreOfTermAgainstURLAndTitle( - const std::vector<const std::string>& terms, + const std::vector<std::string>& terms, const WordStarts term_word_starts, const GURL& url, const base::string16& title) { @@ -660,7 +660,7 @@ TEST_F(ScoredHistoryMatchTest, GetTopicalityScore) { GURL url("http://abc.def.com/path1/path2?arg1=val1&arg2=val2#hash_fragment"); base::string16 title = ASCIIToUTF16("here is a - title"); - auto Score = [&](const std::vector<const std::string>& term_vector, + auto Score = [&](const std::vector<std::string>& term_vector, const WordStarts term_word_starts) { return GetTopicalityScoreOfTermAgainstURLAndTitle( term_vector, term_word_starts, url, title); @@ -732,7 +732,7 @@ TEST_F(ScoredHistoryMatchTest, GetTopicalityScore_MidwordMatching) { GURL url("http://abc.def.com/path1/path2?arg1=val1&arg2=val2#hash_fragment"); base::string16 title = ASCIIToUTF16("here is a - title"); - auto Score = [&](const std::vector<const std::string>& term_vector, + auto Score = [&](const std::vector<std::string>& term_vector, const WordStarts term_word_starts) { return GetTopicalityScoreOfTermAgainstURLAndTitle( term_vector, term_word_starts, url, title);
diff --git a/components/policy/core/browser/url_util_unittest.cc b/components/policy/core/browser/url_util_unittest.cc index 1ce8a330..2603b69 100644 --- a/components/policy/core/browser/url_util_unittest.cc +++ b/components/policy/core/browser/url_util_unittest.cc
@@ -75,7 +75,7 @@ *os << params.filter(); } -bool MatchFilters(const std::vector<const std::string>& patterns, +bool MatchFilters(const std::vector<std::string>& patterns, const std::string& url) { // Add the pattern to the matcher. url_matcher::URLMatcher matcher; @@ -416,8 +416,8 @@ TEST(URLUtilTest, MultipleFilters) { // Test exceptions to path prefixes, and most specific matches. - std::vector<const std::string> patterns = {"s.xxx.com/a/b", - "https://s.xxx.com/a/b/c/d"}; + std::vector<std::string> patterns = {"s.xxx.com/a/b", + "https://s.xxx.com/a/b/c/d"}; EXPECT_FALSE(MatchFilters(patterns, "http://s.xxx.com/a")); EXPECT_FALSE(MatchFilters(patterns, "http://s.xxx.com/a/x")); EXPECT_FALSE(MatchFilters(patterns, "https://s.xxx.com/a/x")); @@ -435,9 +435,9 @@ EXPECT_FALSE(MatchFilters(patterns, "http://xxx.com/a/b")); // Match queries. - std::vector<const std::string> queries = {"*?q=1234", "*?q=5678", "*?a=1&b=2", - "youtube.com?foo=baz", - "youtube.com?foo=bar*"}; + std::vector<std::string> queries = {"*?q=1234", "*?q=5678", "*?a=1&b=2", + "youtube.com?foo=baz", + "youtube.com?foo=bar*"}; EXPECT_TRUE(MatchFilters(queries, "http://google.com?q=1234")); EXPECT_TRUE(MatchFilters(queries, "http://google.com?q=5678")); EXPECT_TRUE(MatchFilters(queries, "http://google.com?a=1&b=2"));
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index c8405b69..d18a4461 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -346,7 +346,6 @@ Trennen Sie mehrere Servernamen durch Kommas. Platzhalter wie <ph name="WILDCARD_VALUE" /> sind zulässig.</translation> <translation id="1502843533062797703">Blockieren von Codeeinschleusungen durch Drittanbieter-Software aktivieren</translation> -<translation id="1506017854924185821">Profil-Picker beim Start verfügbar</translation> <translation id="1509377996969000672">Wenn die Richtlinie festgelegt ist, werden Konfigurationen für gerätegebundene Unternehmensdrucker bereitgestellt. Das Format entspricht dem <ph name="NATIVE_PRINTERS_POLICY_NAME" />-Wörterbuch, erfordert jedoch zusätzlich ein „id“- oder „guid“-Feld pro Drucker für die Zulassungs- oder Sperrliste. Die Datei darf nicht größer als 5 MB sein und muss im JSON-Format vorliegen. Eine Datei mit ungefähr 21.000 Druckern ergibt nach dem Codieren eine Datei mit 5 MB. Die Integrität des Downloads wird anhand des kryptografischen Hashs verifiziert. Die Datei wird heruntergeladen, im Cache gespeichert und noch einmal heruntergeladen, sobald sich URL oder Hash ändern. <ph name="PRODUCT_OS_NAME" /> lädt die Datei für Druckerkonfigurationen herunter und sorgt dafür, dass die Drucker gemäß <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> und <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" /> verfügbar gemacht werden. Diese Richtlinie: @@ -806,6 +805,7 @@ <translation id="2170233653554726857">WPAD-Optimierung aktivieren</translation> <translation id="2171952274731262470">Verzögerungen und Aktionen, die ausgeführt werden sollen, wenn das Gerät im Akkubetrieb inaktiv ist</translation> <translation id="2175353308236295184">App-spezifisches JSON-Konfigurationsobjekt mit einem Satz von Schlüssel/Wert-Paaren, z. B. „"managedConfiguration": { "schlüssel1": wert1, "schlüssel2": wert2 }“. Die Schlüssel sind im App-Manifest definiert.</translation> +<translation id="2176115444876446233">Nutzer daran hindern, eine systemweite Leistungs-Trace zu erfassen.</translation> <translation id="2178899310296064282">Mindestens den moderaten eingeschränkten Modus auf YouTube erzwingen</translation> <translation id="2182291258410176649">Der Nutzer entscheidet, ob "Sicherung und Wiederherstellung" aktiviert werden soll</translation> <translation id="219297066914002620"><ph name="PRODUCT_OS_NAME" /> wird angewiesen, die Konsolentools zur Verwaltung virtueller Maschinen zu aktivieren oder zu deaktivieren. @@ -1221,6 +1221,7 @@ Ist die Richtlinie deaktiviert, kann <ph name="PRODUCT_NAME" /> diese Hosts nur verwenden, wenn sie auf Systemebene installiert wurden.</translation> <translation id="2753637905605932878">Den von WebRTC verwendeten Bereich lokaler UDP-Ports einschränken</translation> +<translation id="2755847332939882873">Speichern einer systemweiten Leistungs-Trace erlauben</translation> <translation id="2757054304033424106">Typen von Erweiterungen bzw. Apps, die installiert werden können</translation> <translation id="2759224876420453487">Nutzerverhalten in Mehrfachprofil-Sitzung steuern</translation> <translation id="2761483219396643566">Inaktivitätsspanne bis zur Warnung im Akkubetrieb</translation> @@ -1357,6 +1358,12 @@ Wenn diese Richtlinie nicht konfiguriert ist, gibt es keine Einschränkungen im Hinblick auf die Nutzer, die sich anmelden dürfen. Zum Erstellen neuer Nutzer muss aber weiterhin die Richtlinie <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> entsprechend konfiguriert werden. Wenn <ph name="DEVICE_FAMILY_LINK_ACCOUNTS_ALLOWED_POLICY_NAME" /> aktiviert ist, dürfen sich neben den in der Richtlinie festgelegten Konten auch Nutzer von Family Link anmelden.</translation> +<translation id="2920795918401557243">Mit dieser Einstellung können Nutzer über den Dienst für die Ablaufverfolgung eine systemweite Leistungs-Trace erfassen. + + Wenn die Richtlinie deaktiviert ist, können Nutzer keine systemweite Trace mithilfe des Dienstes für die Ablaufverfolgung erfassen. + Ist die Richtlinie aktiviert, können Nutzer eine systemweite Trace mithilfe des Dienstes für die Ablaufverfolgung erfassen. + Wenn die Richtlinie nicht konfiguriert ist, wird sie für verwaltete Geräte deaktiviert und für nutzereigene Geräte aktiviert. + Bitte beachten Sie, dass beim Deaktivieren nur die systemweite Trace-Erfassung deaktiviert wird. Die Erfassung von Browser-Traces ist von dieser Richtlinie nicht betroffen.</translation> <translation id="2921222258441684334">Wenn die Richtlinie auf "1" gesetzt ist, können Websites standardmäßig den physischen Standort der Nutzer verfolgen. Wenn die Richtlinie auf "2" gesetzt ist, wird die Standortermittlung standardmäßig verweigert. Sie können festlegen, dass nachgefragt wird, wenn eine Website den physischen Standort der Nutzer verfolgen möchte. Wenn die Richtlinie nicht konfiguriert ist, wird die Richtlinie <ph name="ASK_GEOLOCATION_POLICY_NAME" /> angewandt, aber Nutzer können diese Einstellung ändern.</translation> @@ -2149,6 +2156,7 @@ Alle Tastenkombinationen und Einträge im Menü oder Kontextmenü, mit denen die Entwicklertools oder die JavaScript-Konsole aufgerufen werden, werden deaktiviert.</translation> <translation id="3950110092991281616">Aktiviert die passive Authentifizierung nur für reguläre Sitzungen.</translation> <translation id="3950239119790560549">Zeitbeschränkungen aktualisieren</translation> +<translation id="3956573780915784996">Nutzern erlauben, eine systemweite Leistungs-Trace zu erfassen.</translation> <translation id="3956686688560604829">Richtlinie "SiteList" von Internet Explorer zur Unterstützung älterer Browser verwenden.</translation> <translation id="3958586912393694012">Verwendung von Smart Lock erlauben</translation> <translation id="3962445567482559878">EDU-Modus für das Einrichten von Assistant verwenden</translation> @@ -4485,6 +4493,7 @@ Wenn diese Richtlinie nicht konfiguriert ist, gilt die Standardeinstellung: Vom Unternehmen verwaltete Nutzer können die Funktion nicht verwenden, während sie für nicht verwaltete Nutzer zur Verfügung steht.</translation> <translation id="7295019613773647480">Betreute Nutzer aktivieren</translation> <translation id="7302043767260300182">Verzögerung für die Bildschirmsperre im Netzbetrieb</translation> +<translation id="7303902834678570827">Nutzer verwalteter Gastsitzungen können keine Anzeigeeinstellungen für das ganze Gerät speichern</translation> <translation id="731208205557053914">VPD-Informationen melden</translation> <translation id="7313672174502374994">SHA-256-Hash des Hintergrundbilds.</translation> <translation id="7322825363493984512">Passwort zur Authentifizierung der Systemdienste für den Remote-Web-Proxy.</translation> @@ -5169,6 +5178,7 @@ Wenn Sie diese Richtlinie konfigurieren, können Nutzer sie nicht ändern. Wird die Richtlinie nicht konfiguriert, ist sie aktiviert, aber Nutzer können die Einstellung ändern.</translation> <translation id="8300992833374611099">Festlegen, wo Entwicklertools verwendet werden können</translation> +<translation id="8301065459352777588">Nutzer verwalteter Gastsitzungen können Anzeigeeinstellungen für das ganze Gerät speichern</translation> <translation id="8306117673860983372">Anmeldeeinstellungen</translation> <translation id="8312129124898414409">Ermöglicht Ihnen, festzulegen, ob die Schlüsselgenerierung für Websites zugelassen wird. Die Schlüsselgenerierung kann entweder für alle Websites zugelassen oder für alle Websites verboten werden.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index 0626ed759..8624626 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -352,7 +352,6 @@ Nota: Los nombres de los servidores se separan con comas. Se permite el uso de caracteres comodín (<ph name="WILDCARD_VALUE" />).</translation> <translation id="1502843533062797703">Habilitar el bloqueo de inserción de software de terceros</translation> -<translation id="1506017854924185821">Disponibilidad del selector de perfiles en el inicio</translation> <translation id="1509377996969000672">Si estableces la política, se proporcionan configuraciones para las impresoras empresariales vinculadas a dispositivos. Su formato coincide con el diccionario de <ph name="NATIVE_PRINTERS_POLICY_NAME" />. Incluye un campo "id" o "guid" obligatorio adicional para cada impresora para la lista de impresoras permitidas o bloqueadas. El tamaño del archivo no puede superar los 5 MB y está en formato JSON (un archivo de ese tamaño contiene aproximadamente 21,000 impresoras). El hash criptográfico permite verificar la integridad de la descarga. Cada vez que cambie la URL o el hash, se descargará el archivo, se almacenará en caché y se volverá a descargar. <ph name="PRODUCT_OS_NAME" /> descargará el archivo para las configuraciones de impresoras y hará que las impresoras estén disponibles junto con <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> y <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Esta política:
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index ca873b6..6e758cb 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -352,7 +352,6 @@ Nota: Si hay varios nombres de servidores, se deben separar con comas. Se permite el uso de caracteres comodín (<ph name="WILDCARD_VALUE" />).</translation> <translation id="1502843533062797703">Habilitar el bloqueo de inserción de software de terceros</translation> -<translation id="1506017854924185821">Disponibilidad del selector de perfil al iniciar</translation> <translation id="1509377996969000672">Si se establece esta política, proporciona opciones de configuración para impresoras de empresa vinculadas a dispositivos. Su formato es el mismo que el del diccionario <ph name="NATIVE_PRINTERS_POLICY_NAME" />, con un campo id o guid obligatorio por impresora para incluirla en una lista de permitidas o bloqueadas. El tamaño del archivo no debe exceder los 5 MB y debe estar en formato JSON. El tamaño de un archivo que contiene unas 21.000 impresoras es de 5 MB. El hash criptográfico ayuda a comprobar la integridad de la descarga. Si se cambia la URL o el hash, el archivo se descarga, se almacena en caché y se vuelve a descargar. <ph name="PRODUCT_OS_NAME" /> descarga el archivo con las configuraciones de las impresoras y estas están disponibles según lo especificado en las políticas <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> y <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Esta política tiene las siguientes características:
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index 28021b62..0d6ce1f 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -352,7 +352,6 @@ Remarque : S'il y a plusieurs serveurs, séparez leur nom par une virgule. Les caractères génériques (<ph name="WILDCARD_VALUE" />) sont autorisés.</translation> <translation id="1502843533062797703">Activer le blocage de l'injection de logiciels tiers</translation> -<translation id="1506017854924185821">Disponibilité de l'outil de sélection du profil au démarrage</translation> <translation id="1509377996969000672">La définition de cette règle fournit les configurations des imprimantes d'entreprise associées à des appareils. Son format correspond au dictionnaire <ph name="NATIVE_PRINTERS_POLICY_NAME" />, avec un champ supplémentaire "id" ou "guid" obligatoire pour chaque imprimante à ajouter à la liste d'autorisation ou à la liste de refus. Le fichier est au format JSON et sa taille ne peut pas dépasser 5 Mo. Un fichier encodé de 5 Mo peut contenir environ 21 000 imprimantes. Le hachage cryptographique permet de valider l'intégrité du téléchargement. Le fichier est téléchargé, mis en cache, puis téléchargé à nouveau à chaque modification de l'URL ou du hachage. <ph name="PRODUCT_OS_NAME" /> télécharge le fichier des configurations d'imprimante et rend les imprimantes accessibles avec <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> et <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Cette règle :
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 5f0e58f..2e3fa0d9 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -351,7 +351,6 @@ Catatan: Pisahkan beberapa nama server dengan koma. Karakter pengganti, <ph name="WILDCARD_VALUE" />, diizinkan.</translation> <translation id="1502843533062797703">Aktifkan pemblokiran injeksi software pihak ketiga</translation> -<translation id="1506017854924185821">Ketersediaan alat pilih profil saat browser dimulai</translation> <translation id="1509377996969000672">Jika kebijakan disetel, konfigurasi untuk printer perusahaan yang terikat ke perangkat akan tersedia. Jika formatnya cocok dengan kamus <ph name="NATIVE_PRINTERS_POLICY_NAME" />, dengan tambahan kolom "id" atau "guid" yang diperlukan agar setiap printer dapat mengizinkan atau menolak daftar. Ukuran file tidak boleh lebih dari 5 MB dan dalam format JSON. File yang berisi sekitar 21.000 printer dienkode sebagai file 5 MB. Hash kriptografi membantu memverifikasi integritas download. File didownload, disimpan dalam cache, dan didownload ulang ketika URL atau hash berubah. <ph name="PRODUCT_OS_NAME" /> mendownload file untuk konfigurasi printer dan menyediakan printer beserta <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" />, dan <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Kebijakan ini:
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index e36f0771..483e0a1 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -352,7 +352,6 @@ Nota: se ci sono più server, separane i nomi utilizzando virgole. I caratteri jolly (<ph name="WILDCARD_VALUE" />) sono consentiti.</translation> <translation id="1502843533062797703">Attiva blocco inserimento da software di terze parti</translation> -<translation id="1506017854924185821">Disponibilità selettore profilo all'avvio</translation> <translation id="1509377996969000672">La configurazione del criterio consente di specificare le configurazioni delle stampanti aziendali associate ai dispositivi. Il formato corrisponde a quello del dizionario <ph name="NATIVE_PRINTERS_POLICY_NAME" />, con un campo "id" o "guid" aggiuntivo obbligatorio per ogni stampante ai fini dell'inserimento in una lista consentita o in una lista bloccata. Le dimensioni del file non possono superare i 5 MB e il formato deve essere JSON. Un file con circa 21.000 stampanti viene codificato come file di 5 MB. L'hash di crittografia consente di verificare l'integrità del download. Il file viene scaricato, memorizzato nella cache e riscaricato ogni volta che l'URL o l'hash cambiano. <ph name="PRODUCT_OS_NAME" /> scarica il file per le configurazioni delle stampanti e rende disponibili le stampanti in base ai criteri <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> e <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Questo criterio:
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index 9f9aeeb..4ec515d 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -348,7 +348,6 @@ 注: 複数のサーバー名を入力するときはカンマで区切ります。ワイルドカード(<ph name="WILDCARD_VALUE" />)を使用できます。</translation> <translation id="1502843533062797703">第三者ソフトウェアからのコードの挿入をブロックする</translation> -<translation id="1506017854924185821">起動時のプロフィール選択画面の状態</translation> <translation id="1509377996969000672">このポリシーでは、デバイスに接続された企業プリンタの設定を指定できます。フォーマットは <ph name="NATIVE_PRINTERS_POLICY_NAME" /> ディクショナリと一致させ、許可リストまたは拒否リストに登録するプリンタごとに「id」または「guid」フィールドを追加で指定する必要があります。ファイルのサイズは 5 MB 以下とし、JSON 形式にします。5 MB は、約 21,000 台のプリンタを指定してエンコードしたファイルに相当します。ダウンロードの整合性の確認には暗号化ハッシュが使用されます。このファイルはダウンロードされた後、キャッシュされ、URL またはハッシュに変更があった場合は再度ダウンロードされます。<ph name="PRODUCT_OS_NAME" /> ではプリンタ設定ファイルがダウンロードされ、<ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />、<ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" />、<ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" /> に沿ってプリンタが利用可能になります。 このポリシーに関する留意事項:
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb index 84f90db..4a2503e6 100644 --- a/components/policy/resources/policy_templates_ko.xtb +++ b/components/policy/resources/policy_templates_ko.xtb
@@ -352,7 +352,6 @@ 참고: 서로 다른 서버 이름은 쉼표로 구분하세요. 와일드 카드(<ph name="WILDCARD_VALUE" />)를 사용할 수 있습니다.</translation> <translation id="1502843533062797703">타사 소프트웨어 삽입 차단 사용</translation> -<translation id="1506017854924185821">시작 시 프로필 선택도구 사용 가능 여부</translation> <translation id="1509377996969000672">정책을 설정하면 기기에 연결된 회사 프린터의 설정이 제공됩니다. 형식은 <ph name="NATIVE_PRINTERS_POLICY_NAME" /> 사전과 일치하며 허용 목록 또는 차단 목록을 사용하려면 프린터마다 'id' 또는 'guid' 필드가 추가로 필요합니다. 파일 크기는 5MB를 초과할 수 없으며 JSON 형식입니다. 약 21,000대의 프린터가 포함된 파일은 5MB 크기의 파일로 인코딩됩니다. 암호화 해시로 다운로드 파일의 무결성을 확인할 수 있습니다. 파일이 다운로드되고 캐시되며 이후 URL 또는 해시가 변경되면 다시 다운로드됩니다. <ph name="PRODUCT_OS_NAME" />에서 프린터 설정 파일을 다운로드하고 <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />에 따라 프린터를 사용할 수 있게 합니다. 이 정책은
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index 04e2e5a..4b340b7 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -352,7 +352,6 @@ Opmerking: Gebruik bij meerdere servernamen een komma als scheidingsteken. Jokertekens (<ph name="WILDCARD_VALUE" />) zijn toegestaan.</translation> <translation id="1502843533062797703">Blokkering van injectie van software van derden inschakelen</translation> -<translation id="1506017854924185821">Beschikbaarheid van profielkiezer bij opstarten</translation> <translation id="150857982247452081">Hiermee kun je een lijst met protocollen instellen (en voor elk protocol een gekoppelde lijst met toegestane herkomstpatronen) die een externe app kunnen starten zonder prompt aan de gebruiker. Het scheidingsteken achteraan moet niet worden opgenomen bij de vermelding van het protocol. Vermeld bijvoorbeeld 'skype' in plaats van 'skype:' of 'skype://'. Als dit beleid is ingesteld, kan een protocol volgens het beleid een externe app alleen starten zonder prompt aan de gebruiker als het protocol in de lijst wordt vermeld en de herkomst van de site die probeert het protocol te starten, overeenkomt met een van de herkomstpatronen in de lijst allowed_origins van dat protocol. Als een van de voorwaarden False is, wordt de prompt voor starten via een extern protocol volgens het beleid niet overgeslagen.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index 6b5d848..b34ea6c 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -348,7 +348,6 @@ Observação: separe vários nomes de servidor usando vírgulas. Caracteres curinga (<ph name="WILDCARD_VALUE" />) são permitidos.</translation> <translation id="1502843533062797703">Ativar bloqueio de injeção de software de terceiros</translation> -<translation id="1506017854924185821">Disponibilidade do seletor de perfil na inicialização</translation> <translation id="1509377996969000672">A definição da política fornece configurações para impressoras corporativas vinculadas a dispositivos. O formato corresponde ao dicionário <ph name="NATIVE_PRINTERS_POLICY_NAME" />, com campos extras "id" ou "guid" obrigatórios para cada impressora para inclusão na lista de bloqueio ou de permissão. O arquivo não pode exceder 5 MB e precisa estar no formato JSON. Um arquivo contendo 21.000 impressoras é codificado como um arquivo de 5 MB. O hash criptográfico ajuda a verificar a integridade do download. O download do arquivo é feito com armazenamento em cache e é refeito quando o URL ou o hash mudam. O <ph name="PRODUCT_OS_NAME" /> faz o download do arquivo para as configurações de impressora e disponibiliza as impressoras de acordo com <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> e <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Esta política:
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb index a7d214e..14085b4 100644 --- a/components/policy/resources/policy_templates_ru.xtb +++ b/components/policy/resources/policy_templates_ru.xtb
@@ -349,7 +349,6 @@ Примечание. Названия серверов нужно разделять запятыми. Допустимы подстановочные знаки (<ph name="WILDCARD_VALUE" />).</translation> <translation id="1502843533062797703">Запретить ПО независимых производителей передавать код</translation> -<translation id="1506017854924185821">Выбор профиля при запуске</translation> <translation id="1509377996969000672">Позволяет настроить корпоративные принтеры, связанные с устройствами. Поддерживаемый формат файла тот же, что и для словаря <ph name="NATIVE_PRINTERS_POLICY_NAME" />, но с дополнительными полями id и guid. Заполните их для каждого принтера, чтобы занести его в список разрешенных или заблокированных. Поддерживаемый формат файла конфигурации – JSON. Его размер не должен превышать 5 МБ. В файле такого объема можно указать около 21 000 принтеров. Для проверки целостности скачанного файла используется хеш-сумма. Файл скачивается и кешируется. В случае изменения URL или хеша файл скачивается повторно. <ph name="PRODUCT_OS_NAME" /> скачивает файл конфигурации и открывает доступ к принтерам согласно правилам <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> и <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Это правило:
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index b4078fb..2cfe9204 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -352,7 +352,6 @@ หมายเหตุ: คั่นชื่อเซิร์ฟเวอร์หลายรายการด้วยเครื่องหมายจุลภาค ใช้ไวลด์การ์ด (<ph name="WILDCARD_VALUE" />) ได้</translation> <translation id="1502843533062797703">เปิดใช้การบล็อกการแทรกซอฟต์แวร์ของบุคคลที่สาม</translation> -<translation id="1506017854924185821">เครื่องมือเลือกโปรไฟล์พร้อมใช้งานเมื่อเริ่มต้นระบบ</translation> <translation id="1509377996969000672">การตั้งค่านโยบายนี้จะระบุการกำหนดค่าสำหรับเครื่องพิมพ์องค์กรที่เชื่อมโยงกับอุปกรณ์ รูปแบบการตั้งค่าเหมือนกับพจนานุกรม <ph name="NATIVE_PRINTERS_POLICY_NAME" /> แต่มีช่อง "id" หรือ "guid" ที่จำเป็นต้องกรอกเพิ่มเข้ามาสำหรับเครื่องพิมพ์แต่ละเครื่องเพื่อใช้ระบุว่าอยู่ในรายการที่อนุญาตหรือไม่อนุญาต ไฟล์ต้องมีขนาดไม่เกิน 5 MB และอยู่ในรูปแบบ JSON ไฟล์ที่ระบุเครื่องพิมพ์ประมาณ 21,000 เครื่องเข้ารหัสเป็นไฟล์ขนาด 5 MB ได้ 1 ไฟล์ แฮชแบบเข้ารหัสช่วยยืนยันความสมบูรณ์ของการดาวน์โหลด ไฟล์จะมีการดาวน์โหลด แคช และดาวน์โหลดอีกครั้งเมื่อ URL หรือแฮชมีการเปลี่ยนแปลง <ph name="PRODUCT_OS_NAME" /> จะดาวน์โหลดไฟล์ดังกล่าวเพื่อการกำหนดค่าเครื่องพิมพ์และทำให้เครื่องพิมพ์พร้อมใช้งานพร้อมด้วย <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> และ <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" /> นโยบายนี้
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index 42de4ef..37ca970f 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -351,7 +351,6 @@ Not: Birden fazla sunucu adını virgülle ayırın. Joker karakterlere (<ph name="WILDCARD_VALUE" />) izin verilir.</translation> <translation id="1502843533062797703">Üçüncü taraf yazılımı yerleştirme engellemesini etkinleştirin</translation> -<translation id="1506017854924185821">Başlangıçta profil seçiciyi etkinleştir</translation> <translation id="1509377996969000672">Politika ayarlanırsa cihazlara bağlı kurumsal yazıcılar için yapılandırmalar sağlanır. Biçimi, <ph name="NATIVE_PRINTERS_POLICY_NAME" /> sözlüğü ile aynı olmakla birlikte izin verilenler veya engellenenler listelerine eklenecek her yazıcı için gerekli ek "id" veya "guid" alanlarını içerir. Dosya biçimi JSON olup boyutu 5 MB'tan büyük olamaz. Yaklaşık 21.000 yazıcı içeren bir dosya, 5 MB boyutunda olur. Şifreleme karma değeri, indirmenin bütünlüğünü doğrulamaya yardımcı olur. URL veya karma değer değiştiğinde dosya indirilir, önbelleğe alınır ve yeniden indirilir. <ph name="PRODUCT_OS_NAME" />, yazıcı yapılandırmalarına ait dosyayı indirerek <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> ve <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" /> ile birlikte yazıcıları kullanılabilir hale getirir. Bu politika:
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index dcd26253..70fb695 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -351,7 +351,6 @@ Примітка: назви серверів потрібно розділяти комами. Дозволяються символи підстановки (<ph name="WILDCARD_VALUE" />).</translation> <translation id="1502843533062797703">Блокувати вставляння ПЗ незалежних розробників</translation> -<translation id="1506017854924185821">Доступність засобу вибору профілю під час запуску</translation> <translation id="1509377996969000672">Це правило визначає налаштування принтерів підприємства, які зв'язані з пристроями. Його формат збігається зі словником <ph name="NATIVE_PRINTERS_POLICY_NAME" />, але з обов'язковим полем "id" або "guid" для кожного принтера, який додається в білий чи чорний список. Файл має бути у форматі JSON, а його розмір не може перевищувати 5 МБ. Файл розміром 5 МБ містить приблизно 21 000 принтерів. Криптографічний хеш допомагає перевірити цілісність завантаження. Файл завантажується й додається в кеш. Коли URL-адреса або хеш змінюються, файл завантажується повторно. <ph name="PRODUCT_OS_NAME" /> завантажує файл для налаштування принтерів і надає доступ до принтерів відповідно до правил <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> та <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Це правило:
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index 028b829..ce425e9a 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -352,7 +352,6 @@ Lưu ý: Hãy phân tách tên của các máy chủ bằng dấu phẩy. Cho phép sử dụng ký tự đại diện <ph name="WILDCARD_VALUE" />.</translation> <translation id="1502843533062797703">Cho phép chặn phần mềm bên thứ ba thêm mã thực thi</translation> -<translation id="1506017854924185821">Khả năng hiển thị bộ chọn hồ sơ khi khởi động</translation> <translation id="1509377996969000672">Việc đặt chính sách này sẽ cung cấp các cấu hình máy in dành cho doanh nghiệp được kết nối với các thiết bị. Định dạng của chính sách khớp với định dạng của từ điển <ph name="NATIVE_PRINTERS_POLICY_NAME" />, có thêm trường "id" hoặc "guid" bắt buộc trên từng máy in để đưa vào danh sách cho phép hoặc danh sách cấm. Kích thước tệp không được vượt quá 5 MB và phải ở định dạng JSON. Một tệp có khoảng 21.000 máy in sẽ mã hóa dưới dạng tệp 5 MB. Hàm băm mật mã giúp xác minh tính toàn vẹn của tệp tải xuống. Tệp này được tải xuống, lưu vào bộ nhớ đệm và tải lại xuống khi URL hoặc hàm băm thay đổi. <ph name="PRODUCT_OS_NAME" /> tải tệp này xuống để định cấu hình máy in và cung cấp các máy in theo đúng <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" />, và <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" />. Chính sách này: @@ -828,6 +827,7 @@ <translation id="2170233653554726857">Bật tối ưu hóa WPAD</translation> <translation id="2171952274731262470">Số lần trì hoãn và các hành động cần thực hiện khi thiết bị ở trạng thái rảnh và chạy bằng pin</translation> <translation id="2175353308236295184">Đối tượng cấu hình JSON dành riêng cho ứng dụng có một tập hợp gồm các cặp khóa-giá trị, chẳng hạn như '"managedConfiguration": { "key1": value1, "key2": value2 }'. Các khóa được định nghĩa trong tệp kê khai ứng dụng.</translation> +<translation id="2176115444876446233">Ngăn người dùng thu thập dữ liệu theo dõi hoạt động trên toàn hệ thống.</translation> <translation id="2178899310296064282">Buộc sử dụng ít nhất Chế độ hạn chế trung bình trên YouTube</translation> <translation id="2182291258410176649">Người dùng sẽ quyết định có bật tính năng sao lưu và khôi phục hay không</translation> <translation id="219297066914002620">Hướng dẫn <ph name="PRODUCT_OS_NAME" /> bật hoặc tắt các công cụ trong bảng điều khiển quản lý máy ảo. @@ -1246,6 +1246,7 @@ Nếu bạn đặt chính sách này thành Tắt, <ph name="PRODUCT_NAME" /> chỉ có thể sử dụng các máy chủ này nếu được cài đặt ở cấp hệ thống.</translation> <translation id="2753637905605932878">Hạn chế phạm vi của cổng UDP cục bộ do WebRTC sử dụng</translation> +<translation id="2755847332939882873">Cho phép thu thập dữ liệu theo dõi hoạt động trên toàn hệ thống</translation> <translation id="2757054304033424106">Các loại tiện ích/ứng dụng được phép cài đặt</translation> <translation id="2759224876420453487">Kiểm soát hoạt động của người dùng trong một phiên đa cấu hình</translation> <translation id="2761483219396643566">Thời gian chờ cảnh báo trạng thái không sử dụng khi chạy trên nguồn pin</translation> @@ -1356,6 +1357,12 @@ Nếu bạn không định cấu hình chính sách này, thì tất cả người dùng đều được phép đăng nhập. Lưu ý rằng việc tạo người dùng mới sẽ vẫn yêu cầu phải định cấu hình chính sách <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> một cách phù hợp. Nếu bạn bật <ph name="DEVICE_FAMILY_LINK_ACCOUNTS_ALLOWED_POLICY_NAME" />, người dùng Family Link sẽ được phép bổ sung tài khoản này vào các tài khoản được xác định trong chính sách này.</translation> +<translation id="2920795918401557243">Chế độ cài đặt này cho phép thu thập dữ liệu theo dõi hoạt động trên toàn hệ thống bằng dịch vụ theo dõi hệ thống. + + Nếu bạn tắt chính sách này, người dùng không thể thu thập dữ liệu theo dõi trên toàn hệ thống bằng dịch vụ theo dõi hệ thống. + Nếu bạn bật chính sách này, người dùng có thể thu thập dữ liệu theo dõi trên toàn hệ thống bằng dịch vụ theo dõi hệ thống. + Nếu bạn không đặt chính sách này, hệ thống sẽ không áp dụng chính sách cho các thiết bị được quản lý mà áp dụng cho các thiết bị thuộc sở hữu của người dùng thông thường. + Lưu ý rằng nếu bạn tắt chính sách này, thì chỉ có tính năng thu thập dữ liệu theo dõi trên toàn hệ thống là bị vô hiệu hóa. Chính sách này không ảnh hưởng đến tính năng thu thập dữ liệu theo dõi trình duyệt.</translation> <translation id="2921222258441684334">Nếu bạn đặt chính sách này thành 1, thì các trang web có thể theo dõi vị trí thực của người dùng theo mặc định. Nếu bạn đặt chính sách này thành 2, thì các trang web không được theo dõi vị trí thực của người dùng theo mặc định. Bạn có thể đặt chính sách này để hỏi bất cứ khi nào một trang web muốn theo dõi vị trí thực của người dùng. Nếu bạn không đặt chính sách này, thì chính sách <ph name="ASK_GEOLOCATION_POLICY_NAME" /> sẽ áp dụng, tuy nhiên, người dùng có thể thay đổi tùy chọn cài đặt này.</translation> @@ -2133,6 +2140,7 @@ Tùy chọn cài đặt này cũng tắt các phím tắt và mục truy cập trên trình đơn hoặc trình đơn ngữ cảnh để mở công cụ cho nhà phát triển hoặc Bảng điều khiển JavaScript.</translation> <translation id="3950110092991281616">Chỉ bật tùy chọn xác thực môi trường xung quanh đối với các phiên thông thường.</translation> <translation id="3950239119790560549">Giới hạn thời gian cập nhật</translation> +<translation id="3956573780915784996">Cho phép người dùng thu thập dữ liệu theo dõi hoạt động trên toàn hệ thống.</translation> <translation id="3956686688560604829">Sử dụng chính sách SiteList của Internet Explorer để hỗ trợ trình duyệt cũ.</translation> <translation id="3958586912393694012">Cho phép sử dụng Smart Lock</translation> <translation id="3962445567482559878">Sử dụng chế độ EDU của trải nghiệm làm quen với Trợ lý</translation> @@ -4442,6 +4450,7 @@ Nếu bạn không đặt chính sách này, tùy chọn cài đặt mặc định sẽ là không được phép đối với người dùng do doanh nghiệp quản lý và được phép đối với người dùng không được quản lý.</translation> <translation id="7295019613773647480">Bật người dùng được giám sát</translation> <translation id="7302043767260300182">Độ trễ khóa màn hình khi chạy trên nguồn AC</translation> +<translation id="7303902834678570827">Người dùng Phiên khách được quản lý không thể lưu trữ các chế độ cài đặt hiển thị trên toàn thiết bị</translation> <translation id="731208205557053914">Báo cáo thông tin về VPD</translation> <translation id="7313672174502374994">Hàm băm SHA-256 của hình nền.</translation> <translation id="7322825363493984512">Mật khẩu để xác thực các dịch vụ hệ thống dành cho proxy web từ xa.</translation> @@ -5126,6 +5135,7 @@ Nếu bạn đặt chính sách này, thì người dùng sẽ không thể thay đổi được. Nếu bạn không đặt chính sách này, thì chính sách sẽ bật nhưng người dùng có thể thay đổi tùy chọn cài đặt này.</translation> <translation id="8300992833374611099">Kiểm soát vị trí có thể sử dụng Công cụ dành cho nhà phát triển</translation> +<translation id="8301065459352777588">Người dùng Phiên khách được quản lý có thể lưu trữ các chế độ cài đặt cách hiển thị trên toàn thiết bị</translation> <translation id="8306117673860983372">Cài đặt đăng nhập</translation> <translation id="8312129124898414409">Cho phép bạn đặt liệu các trang web có được phép sử dụng tạo khóa hay không. Bạn có thể cho phép hoặc từ chối sử dụng tạo khóa đối với tất cả các trang web.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 202e1bb..dea55d2 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -349,7 +349,6 @@ 注意:若要指定多个服务器名称,请用英文逗号分隔。允许使用通配符 <ph name="WILDCARD_VALUE" />。</translation> <translation id="1502843533062797703">禁止插入第三方软件</translation> -<translation id="1506017854924185821">在浏览器启动时是否显示个人资料选择器</translation> <translation id="1509377996969000672">通过设置此政策,您可为绑定到设备的企业打印机提供配置。其格式与 <ph name="NATIVE_PRINTERS_POLICY_NAME" /> 字典一样,不过每台打印机都还对应一个额外的必填字段“id”或“guid”,以用于将相应打印机加入许可名单/拒绝名单。该文件不得超过 5MB,且必须采用 JSON 格式。一个包含大约 21000 台打印机的文件在编码后的大小是 5MB。相应的加密哈希值可帮助您验证下载内容的完整性。系统会下载、缓存该文件。当相应网址或哈希值发生变化时,系统会重新下载该文件。<ph name="PRODUCT_OS_NAME" />会下载该文件以获取打印机配置,并会根据 <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />、<ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> 和 <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" /> 向用户提供可用的打印机。 此政策:
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index 29ed836..d6094ec5 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -350,7 +350,6 @@ 注意:請以半形逗號分隔伺服器名稱,可使用萬用字元 (<ph name="WILDCARD_VALUE" />)。</translation> <translation id="1502843533062797703">啟用禁止第三方軟體置入可執行程式碼的政策</translation> -<translation id="1506017854924185821">是否要在瀏覽器啟動時顯示設定檔選擇畫面</translation> <translation id="1509377996969000672">你可以透過這項政策設定已連接到裝置的企業印表機。其格式與 <ph name="NATIVE_PRINTERS_POLICY_NAME" /> 條目相符,且針對每台印表機另外設有「id」或「guid」必填欄位,用於指明要加入許可清單或拒絕清單。相關檔案大小不得超過 5 MB,且必須採用 JSON 格式。一個 5 MB 的編碼檔案可包含約 21,000 台印表機的資料。加密編譯雜湊的作用是驗證下載內容的完整性。系統會下載及快取這個檔案,而且只要網址或雜湊一有變動,就會重新下載檔案。<ph name="PRODUCT_OS_NAME" />會下載這個檔案來設定印表機,並依據 <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" />、<ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME" /> 和 <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME" /> 開放使用印表機。 這項政策:
diff --git a/components/safe_browsing/ios/password_protection/BUILD.gn b/components/safe_browsing/ios/password_protection/BUILD.gn index c9eb074..4fdc7c6d 100644 --- a/components/safe_browsing/ios/password_protection/BUILD.gn +++ b/components/safe_browsing/ios/password_protection/BUILD.gn
@@ -8,7 +8,6 @@ "password_protection_request_ios.h", "password_protection_request_ios.mm", "password_protection_service.h", - "password_protection_service.mm", "request_canceler_ios.h", "request_canceler_ios.mm", ] @@ -17,6 +16,7 @@ "//components/password_manager/core/browser", "//components/safe_browsing/core:csd_proto", "//components/safe_browsing/core/password_protection", + "//components/safe_browsing/core/password_protection:password_protection_metrics_util", "//ios/web/public", "//url", ]
diff --git a/components/safe_browsing/ios/password_protection/password_protection_service.h b/components/safe_browsing/ios/password_protection/password_protection_service.h index a9b31f0..4620ca12 100644 --- a/components/safe_browsing/ios/password_protection/password_protection_service.h +++ b/components/safe_browsing/ios/password_protection/password_protection_service.h
@@ -5,8 +5,15 @@ #ifndef COMPONENTS_SAFE_BROWSING_IOS_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERVICE_H_ #define COMPONENTS_SAFE_BROWSING_IOS_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERVICE_H_ +#include <string> +#include <vector> + +#include "components/password_manager/core/browser/password_manager_metrics_util.h" +#include "components/safe_browsing/core/password_protection/metrics_util.h" #include "components/safe_browsing/core/password_protection/password_protection_service_base.h" +class GURL; + namespace web { class WebState; } @@ -17,6 +24,15 @@ using PasswordProtectionServiceBase::PasswordProtectionServiceBase; public: + virtual void MaybeStartProtectedPasswordEntryRequest( + web::WebState* web_state, + const GURL& main_frame_url, + const std::string& username, + PasswordType password_type, + const std::vector<password_manager::MatchingReusedCredential>& + matching_reused_credentials, + bool password_field_exists) = 0; + // Records a Chrome Sync event for the result of the URL reputation lookup // if the user enters their sync password on a website. virtual void MaybeLogPasswordReuseLookupEvent(
diff --git a/components/safe_browsing/ios/password_protection/password_protection_service.mm b/components/safe_browsing/ios/password_protection/password_protection_service.mm deleted file mode 100644 index bd64462..0000000 --- a/components/safe_browsing/ios/password_protection/password_protection_service.mm +++ /dev/null
@@ -1,9 +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. - -#import "components/safe_browsing/ios/password_protection/password_protection_service.h" - -#if !defined(__has_feature) || !__has_feature(objc_arc) -#error "This file requires ARC support." -#endif
diff --git a/components/search/repeatable_queries/repeatable_queries_service_unittest.cc b/components/search/repeatable_queries/repeatable_queries_service_unittest.cc index cdee6cfd..6cc602d 100644 --- a/components/search/repeatable_queries/repeatable_queries_service_unittest.cc +++ b/components/search/repeatable_queries/repeatable_queries_service_unittest.cc
@@ -342,12 +342,8 @@ } // TODO(crbug.com/1151909) Test fails on iOS -#if defined(OS_IOS) -#define MAYBE_SignedIn DISABLED_SignedIn -#else -#define MAYBE_SignedIn SignedIn -#endif -TEST_F(RepeatableQueriesServiceTest, MAYBE_SignedIn) { +// TODO(crbug.com/1177139) Re-enable test +TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedIn) { SignIn(); test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(), GoodServerResponse());
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index 6b18511e..9c60ec7 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -1831,6 +1831,7 @@ <translation id="8202370299023114387">সংঘাত</translation> <translation id="8206978196348664717">Prc4 (লেফাফা)</translation> <translation id="8211406090763984747">সংযোগটো নিৰাপদ</translation> +<translation id="8213464188712611711">স্মৃতি</translation> <translation id="8218327578424803826">অভিযোজন কৰা অৱস্থান:</translation> <translation id="8220146938470311105">C7/C6 (লেফাফা)</translation> <translation id="8221250263817408492">আপুনি এটা প্ৰবঞ্চনামূলক ছাইটত এইমাত্ৰ নিজৰ পাছৱৰ্ডটো দিছে। Chromiumএ <ph name="WEBSITE_1" /> আৰু আপুনি এই পাছৱৰ্ডটো ব্যৱহাৰ কৰা অন্য ছাইটসমূহলৈ গৈ এইটো এতিয়াই সলনি কৰাটো চুপাৰিছ কৰে।</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index 78896c5..a7ca473 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -1828,6 +1828,7 @@ <translation id="8202370299023114387">Konflikt</translation> <translation id="8206978196348664717">Prc4 (Umschlag)</translation> <translation id="8211406090763984747">Verbindung ist sicher</translation> +<translation id="8213464188712611711">Erinnerungen</translation> <translation id="8218327578424803826">Zugewiesener Standort: </translation> <translation id="8220146938470311105">C7/C6 (Umschlag)</translation> <translation id="8221250263817408492">Sie haben Ihr Passwort gerade auf einer verdächtigen Website eingegeben. Chromium empfiehlt, Ihr Passwort auf <ph name="WEBSITE_1" /> und allen anderen Websites, auf denen Sie es verwendet haben, zu ändern.</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index 06c7f11f..e789622 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -1838,6 +1838,7 @@ <translation id="8202370299023114387">विरोध</translation> <translation id="8206978196348664717">पीआरसी4 (एन्वेलप)</translation> <translation id="8211406090763984747">कनेक्शन सुरक्षित है</translation> +<translation id="8213464188712611711">मेमोरी</translation> <translation id="8218327578424803826">सौंपा गया स्थान:</translation> <translation id="8220146938470311105">सी7/सी6 (एन्वेलप)</translation> <translation id="8221250263817408492">आपने अभी-अभी जिस साइट पर अपना पासवर्ड डाला है वह सुरक्षित नहीं है. क्रोमियम, <ph name="WEBSITE_1" /> और उन साइटों पर जाकर पासवर्ड बदलने का सुझाव देता है जिन पर आपने इसे इस्तेमाल किया था.</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb index 9a68717..db207bb 100644 --- a/components/strings/components_strings_kn.xtb +++ b/components/strings/components_strings_kn.xtb
@@ -1827,6 +1827,7 @@ <translation id="8202370299023114387">ಸಂಘರ್ಷ</translation> <translation id="8206978196348664717">Prc4 (Envelope)</translation> <translation id="8211406090763984747">ಸಂಪರ್ಕ ಸುರಕ್ಷಿತವಾಗಿದೆ</translation> +<translation id="8213464188712611711">ನೆನಪುಗಳು</translation> <translation id="8218327578424803826">ನಿಯೋಜಿಸಲಾದ ಸ್ಥಳ:</translation> <translation id="8220146938470311105">C7/C6 (Envelope)</translation> <translation id="8221250263817408492">ನೀವು ಈಗಷ್ಟೇ ವಂಚನೆ ಮಾಡುವ ಸೈಟ್ನಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ. <ph name="WEBSITE_1" /> ಹಾಗೂ ಈ ಪಾಸ್ವರ್ಡ್ ಬಳಸುವ ಇತರ ಸೈಟ್ಗಳಲ್ಲಿ ಈಗಲೇ ಬದಲಾಯಿಸಲು Chromium ನಿಮಗೆ ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index 0923905a..1aa11a4 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -1839,6 +1839,7 @@ <translation id="8202370299023114387">विरोध</translation> <translation id="8206978196348664717">Prc4 (Envelope)</translation> <translation id="8211406090763984747">कनेक्शन सुरक्षित आहे</translation> +<translation id="8213464188712611711">आठवणी</translation> <translation id="8218327578424803826">नियुक्त केलेले स्थान:</translation> <translation id="8220146938470311105">C7/C6 (Envelope)</translation> <translation id="8221250263817408492">तुम्ही आताच एका फसव्या साइटवर तुमचा पासवर्ड एंटर केला आहे. Chromium <ph name="WEBSITE_1" /> आणि इतर साइटवर जाण्याची शिफारस करतो जेथे तुम्ही हा पासवर्ड वापरू शकता आणि तो आता बदलू शकता.</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index cb5cd75..4b0d215 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -1841,6 +1841,7 @@ <translation id="8202370299023114387">Xung đột</translation> <translation id="8206978196348664717">Prc4 (Phong bì)</translation> <translation id="8211406090763984747">Kết nối an toàn</translation> +<translation id="8213464188712611711">Bộ nhớ</translation> <translation id="8218327578424803826">Vị trí được gán:</translation> <translation id="8220146938470311105">C7/C6 (Phong bì)</translation> <translation id="8221250263817408492">Bạn vừa nhập mật khẩu vào một trang web lừa đảo. Chromium khuyên bạn nên truy cập vào <ph name="WEBSITE_1" /> và các trang web khác mà bạn dùng mật khẩu này rồi đổi mật khẩu ngay bây giờ.</translation>
diff --git a/components/viz/service/display/frame_rate_decider.cc b/components/viz/service/display/frame_rate_decider.cc index b283c41..d1f1c0d 100644 --- a/components/viz/service/display/frame_rate_decider.cc +++ b/components/viz/service/display/frame_rate_decider.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include <utility> +#include "build/build_config.h" #include "components/viz/common/frame_sinks/begin_frame_args.h" #include "components/viz/service/surfaces/surface.h" #include "components/viz/service/surfaces/surface_manager.h" @@ -278,7 +279,14 @@ } bool FrameRateDecider::multiple_refresh_rates_supported() const { + // TODO(crbug/1156136): This should work on all platforms, but currently + // causes pages to freeze on android when removing a camera track from a video + // element. Reenable once the root cause is fixed. +#if defined(OS_WIN) return supports_set_frame_rate_ || supported_intervals_.size() > 1u; +#else + return supported_intervals_.size() > 1u; +#endif } } // namespace viz
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index 6cd059c9..c9c03e81 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -362,6 +362,10 @@ RunCSSTest(FILE_PATH_LITERAL("marker-hyphens.html")); } +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSMarkerCrash) { + RunCSSTest(FILE_PATH_LITERAL("marker-crash.html")); +} + IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSTextOverflowEllipsis) { RunCSSTest(FILE_PATH_LITERAL("text-overflow-ellipsis.html")); @@ -2487,6 +2491,10 @@ RunHtmlTest(FILE_PATH_LITERAL("select.html")); } +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySelectInCanvas) { + RunHtmlTest(FILE_PATH_LITERAL("select-in-canvas.html")); +} + IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySelectFollowsFocus) { RunHtmlTest(FILE_PATH_LITERAL("select-follows-focus.html")); @@ -2823,8 +2831,7 @@ // in the past. // -IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, - DISABLED_DisplayContentsSelectCrash) { +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, DisplayContentsSelectCrash) { RunRegressionTest(FILE_PATH_LITERAL("display-contents-select-crash.html")); }
diff --git a/content/browser/devtools/protocol/DEPS b/content/browser/devtools/protocol/DEPS index 8577b7ccb..bf4242d 100644 --- a/content/browser/devtools/protocol/DEPS +++ b/content/browser/devtools/protocol/DEPS
@@ -8,3 +8,9 @@ # For VirtualU2fDevice::IsTransportSupported used in protocol/webauthn_handler.cc. "+device/fido/virtual_u2f_device.h", ] + +specific_include_rules = { + "tracing_handler\.cc": [ + "+third_party/perfetto" + ] +}
diff --git a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc index a8788778..9b45130b 100644 --- a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc +++ b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
@@ -2744,6 +2744,7 @@ base::Base64Encode(perfetto_config.SerializeAsString(), &perfetto_config_encoded); params->SetKey("perfettoConfig", base::Value(perfetto_config_encoded)); + params->SetString("transferMode", "ReturnAsStream"); NavigateToURLBlockUntilNavigationsComplete(shell(), GURL("about:blank"), 1); Attach();
diff --git a/content/browser/devtools/protocol/tracing_handler.cc b/content/browser/devtools/protocol/tracing_handler.cc index 8cfe1af..a4d7764 100644 --- a/content/browser/devtools/protocol/tracing_handler.cc +++ b/content/browser/devtools/protocol/tracing_handler.cc
@@ -42,14 +42,14 @@ #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/tracing_service.h" -#include "mojo/public/cpp/bindings/receiver.h" -#include "mojo/public/cpp/bindings/remote.h" #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h" #include "services/tracing/public/cpp/perfetto/perfetto_config.h" +#include "services/tracing/public/cpp/perfetto/perfetto_session.h" +#include "services/tracing/public/cpp/perfetto/trace_packet_tokenizer.h" #include "services/tracing/public/cpp/tracing_features.h" -#include "services/tracing/public/mojom/constants.mojom.h" -#include "services/tracing/public/mojom/perfetto_service.mojom.h" +#include "services/tracing/public/mojom/constants.mojom-forward.h" #include "third_party/inspector_protocol/crdtp/json.h" +#include "third_party/perfetto/include/perfetto/tracing/tracing.h" #ifdef OS_ANDROID #include "content/browser/renderer_host/compositor_impl_android.h" @@ -118,6 +118,7 @@ if (TracingHandler* h = tracing_handler_.get()) h->OnTraceDataCollected(std::move(chunk)); } + void ReceivedTraceFinalContents() override { if (TracingHandler* h = tracing_handler_.get()) h->OnTraceComplete(); @@ -136,6 +137,7 @@ const scoped_refptr<DevToolsStreamFile>& stream) : stream_(stream), tracing_handler_(handler) {} + // CompressedStringEndpoint calls these methods on a background thread. void ReceiveTraceChunk(std::unique_ptr<std::string> chunk) override { if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { GetUIThreadTaskRunner({})->PostTask( @@ -143,7 +145,6 @@ this, std::move(chunk))); return; } - stream_->Append(std::move(chunk)); } @@ -246,51 +247,19 @@ } // namespace -class TracingHandler::TracingSession { +class TracingHandler::PerfettoTracingSession { public: - TracingSession() = default; - virtual ~TracingSession() = default; + explicit PerfettoTracingSession(bool use_proto) + : use_proto_format_(use_proto) {} - virtual void EnableTracing( - const perfetto::TraceConfig& perfetto_config, - base::OnceClosure on_recording_enabled_callback) = 0; - virtual void AdoptStartupTracingSession( - const perfetto::TraceConfig& perfetto_config) = 0; - virtual void ChangeTraceConfig( - const perfetto::TraceConfig& perfetto_config) = 0; - virtual void DisableTracing( - bool use_proto_format, - const std::string& agent_label, - const scoped_refptr<TracingController::TraceDataEndpoint>& endpoint) = 0; - virtual void GetBufferUsage( - base::OnceCallback<void(float percent_full, - size_t approximate_event_count)> - on_buffer_usage_callback) = 0; - virtual bool HasTracingFailed() = 0; - virtual bool HasDataLossOccurred() = 0; - - private: - DISALLOW_COPY_AND_ASSIGN(TracingSession); -}; - -class TracingHandler::PerfettoTracingSession - : public TracingHandler::TracingSession, - public tracing::mojom::TracingSessionClient, - public mojo::DataPipeDrainer::Client { - public: - ~PerfettoTracingSession() override { DCHECK(!tracing_active_); } - - // TracingHandler::TracingSession implementation: void EnableTracing(const perfetto::TraceConfig& perfetto_config, - base::OnceClosure on_recording_enabled_callback) override { - DCHECK(!tracing_session_host_); + base::OnceClosure on_recording_enabled_callback) { + DCHECK(!tracing_session_); DCHECK(!tracing_active_); + tracing_active_ = true; - - GetTracingService().BindConsumerHost( - consumer_host_.BindNewPipeAndPassReceiver()); - on_recording_enabled_callback_ = std::move(on_recording_enabled_callback); + #if DCHECK_IS_ON() last_perfetto_config_ = perfetto_config; for (auto& data_source : *(last_perfetto_config_.mutable_data_sources())) { @@ -298,21 +267,30 @@ } #endif - consumer_host_->EnableTracing( - tracing_session_host_.BindNewPipeAndPassReceiver(), - receiver_.BindNewPipeAndPassRemote(), std::move(perfetto_config), - base::File()); + tracing_session_ = perfetto::Tracing::NewTrace(); + tracing_session_->Setup(perfetto_config); - receiver_.set_disconnect_handler( - base::BindOnce(&PerfettoTracingSession::OnTracingSessionFailed, - base::Unretained(this))); - tracing_session_host_.set_disconnect_handler( - base::BindOnce(&PerfettoTracingSession::OnTracingSessionFailed, - base::Unretained(this))); + auto weak_ptr = weak_factory_.GetWeakPtr(); + + tracing_session_->SetOnStartCallback([weak_ptr] { + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, + base::BindOnce(&PerfettoTracingSession::OnTracingSessionStarted, + weak_ptr)); + }); + + tracing_session_->SetOnErrorCallback([weak_ptr](perfetto::TracingError) { + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, + base::BindOnce(&PerfettoTracingSession::OnTracingSessionFailed, + weak_ptr)); + }); + + tracing_session_->Start(); } void AdoptStartupTracingSession( - const perfetto::TraceConfig& perfetto_config) override { + const perfetto::TraceConfig& perfetto_config) { // Start a perfetto tracing session, which will claim startup tracing data. DCHECK(!TracingController::GetInstance()->IsTracing()); waiting_for_startup_tracing_enabled_ = true; @@ -322,9 +300,8 @@ base::Unretained(this))); } - void ChangeTraceConfig( - const perfetto::TraceConfig& perfetto_config) override { - if (!tracing_session_host_) + void ChangeTraceConfig(const perfetto::TraceConfig& perfetto_config) { + if (!tracing_session_) return; #if DCHECK_IS_ON() @@ -338,112 +315,70 @@ last_perfetto_config_ = std::move(config_without_filters); #endif - tracing_session_host_->ChangeTraceConfig(perfetto_config); + tracing_session_->ChangeTraceConfig(perfetto_config); } - void DisableTracing(bool use_proto_format, - const std::string& agent_label, - const scoped_refptr<TracingController::TraceDataEndpoint>& - endpoint) override { + void DisableTracing( + scoped_refptr<TracingController::TraceDataEndpoint> endpoint) { + DCHECK(endpoint); if (waiting_for_startup_tracing_enabled_) { - pending_disable_tracing_task_ = base::BindOnce( - &PerfettoTracingSession::DisableTracing, base::Unretained(this), - use_proto_format, agent_label, endpoint); + pending_disable_tracing_task_ = + base::BindOnce(&PerfettoTracingSession::DisableTracing, + base::Unretained(this), std::move(endpoint)); return; } - use_proto_format_ = use_proto_format; - agent_label_ = agent_label; + endpoint_ = endpoint; tracing_active_ = false; - if (!tracing_session_host_) { - if (endpoint_) { - // Will delete |this|. - endpoint_->ReceivedTraceFinalContents(); - } + if (!tracing_session_) { + endpoint_->ReceivedTraceFinalContents(); return; } - if (!use_proto_format_) { - mojo::ScopedDataPipeProducerHandle producer_handle; - mojo::ScopedDataPipeConsumerHandle consumer_handle; + auto weak_ptr = weak_factory_.GetWeakPtr(); + tracing_session_->SetOnStopCallback([weak_ptr] { + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, + base::BindOnce(&PerfettoTracingSession::OnTracingSessionStopped, + weak_ptr)); + }); - MojoResult result = - mojo::CreateDataPipe(nullptr, &producer_handle, &consumer_handle); - if (result != MOJO_RESULT_OK) { - OnTracingSessionFailed(); - return; - } - - drainer_ = std::make_unique<mojo::DataPipeDrainer>( - this, std::move(consumer_handle)); - tracing_session_host_->DisableTracingAndEmitJson( - agent_label_, std::move(producer_handle), - /*privacy_filtering_enabled=*/false, - base::BindOnce(&PerfettoTracingSession::OnReadBuffersComplete, - base::Unretained(this))); - } else { - // The host will call OnTracingDisabled once Perfetto has disabled - // tracing, at which point we'll pass down the datapipe. - tracing_session_host_->DisableTracing(); - } + tracing_session_->Stop(); } - void GetBufferUsage(base::OnceCallback<void(float percent_full, + void GetBufferUsage(base::OnceCallback<void(bool success, + float percent_full, size_t approximate_event_count)> - on_buffer_usage_callback) override { - if (!tracing_session_host_) { - std::move(on_buffer_usage_callback).Run(0.0f, 0); - return; - } + on_buffer_usage_callback) { DCHECK(on_buffer_usage_callback); - tracing_session_host_->RequestBufferUsage(base::BindOnce( - &PerfettoTracingSession::OnBufferUsage, base::Unretained(this), - std::move(on_buffer_usage_callback))); - } - - bool HasTracingFailed() override { - return tracing_active_ && !tracing_session_host_; - } - - bool HasDataLossOccurred() override { return data_loss_; } - - // tracing::mojom::TracingSessionClient implementation: - void OnTracingEnabled() override { - if (on_recording_enabled_callback_) { - std::move(on_recording_enabled_callback_).Run(); - } - } - - void OnTracingDisabled(bool tracing_succeeded) override { - // If we're converting to JSON, we will receive the data via - // ConsumerHost::DisableTracingAndEmitJson(). - if (!use_proto_format_) - return; - if (!tracing_succeeded) { - OnTracingSessionFailed(); + if (!tracing_session_) { + std::move(on_buffer_usage_callback).Run(false, 0.0f, 0); return; } - DCHECK(agent_label_.empty()); - mojo::ScopedDataPipeProducerHandle producer_handle; - mojo::ScopedDataPipeConsumerHandle consumer_handle; - - MojoResult result = - mojo::CreateDataPipe(nullptr, &producer_handle, &consumer_handle); - if (result != MOJO_RESULT_OK) { - OnTracingSessionFailed(); + if (on_buffer_usage_callback_) { + // We only support one concurrent buffer usage request. + std::move(on_buffer_usage_callback).Run(false, 0.0f, 0); return; } - drainer_ = std::make_unique<mojo::DataPipeDrainer>( - this, std::move(consumer_handle)); - tracing_session_host_->ReadBuffers( - std::move(producer_handle), - base::BindOnce(&PerfettoTracingSession::OnReadBuffersComplete, - base::Unretained(this))); + on_buffer_usage_callback_ = std::move(on_buffer_usage_callback); + auto weak_ptr = weak_factory_.GetWeakPtr(); + + tracing_session_->GetTraceStats( + [weak_ptr](perfetto::TracingSession::GetTraceStatsCallbackArgs args) { + tracing::ReadTraceStats( + args, + base::BindOnce(&PerfettoTracingSession::OnBufferUsage, weak_ptr), + GetUIThreadTaskRunner({})); + }); } + bool HasTracingFailed() { return tracing_active_ && !tracing_session_; } + + bool HasDataLossOccurred() { return data_loss_; } + private: void OnStartupTracingEnabled() { waiting_for_startup_tracing_enabled_ = false; @@ -451,90 +386,102 @@ std::move(pending_disable_tracing_task_).Run(); } + void OnTracingSessionStarted() { + if (on_recording_enabled_callback_) + std::move(on_recording_enabled_callback_).Run(); + } + void OnTracingSessionFailed() { - tracing_session_host_.reset(); - receiver_.reset(); - drainer_.reset(); + tracing_session_.reset(); if (on_recording_enabled_callback_) std::move(on_recording_enabled_callback_).Run(); - if (pending_disable_tracing_task_) + if (pending_disable_tracing_task_) { + // Will call endpoint_->ReceivedTraceFinalContents() and delete |this|. std::move(pending_disable_tracing_task_).Run(); - - if (endpoint_) { - // TODO(oysteine): Signal to the client that tracing failed. + } else if (endpoint_) { // Will delete |this|. endpoint_->ReceivedTraceFinalContents(); } } - void OnBufferUsage(base::OnceCallback<void(float percent_full, - size_t approximate_event_count)> - on_buffer_usage_callback, - bool success, - float percent_full, - bool data_loss) { - if (!success) { - std::move(on_buffer_usage_callback).Run(0.0f, 0); - return; + void OnTracingSessionStopped() { + DCHECK(tracing_session_); + + auto weak_ptr = weak_factory_.GetWeakPtr(); + + if (use_proto_format_) { + tracing_session_->ReadTrace( + [weak_ptr](perfetto::TracingSession::ReadTraceCallbackArgs args) { + tracing::ReadTraceAsProtobuf( + args, + base::BindOnce(&PerfettoTracingSession::OnTraceData, weak_ptr), + base::BindOnce(&PerfettoTracingSession::OnTraceDataComplete, + weak_ptr), + GetUIThreadTaskRunner({})); + }); + } else { + // Ref-counted because it is used within the lambda running on the + // perfetto SDK's thread. + auto tokenizer = base::MakeRefCounted< + base::RefCountedData<std::unique_ptr<tracing::TracePacketTokenizer>>>( + std::make_unique<tracing::TracePacketTokenizer>()); + tracing_session_->ReadTrace( + [weak_ptr, + tokenizer](perfetto::TracingSession::ReadTraceCallbackArgs args) { + tracing::ReadTraceAsJson( + args, tokenizer, + base::BindOnce(&PerfettoTracingSession::OnTraceData, weak_ptr), + base::BindOnce(&PerfettoTracingSession::OnTraceDataComplete, + weak_ptr), + GetUIThreadTaskRunner({})); + }); } + } + + void OnBufferUsage(bool success, float percent_full, bool data_loss) { data_loss_ |= data_loss; - std::move(on_buffer_usage_callback).Run(percent_full, 0); - } - - // mojo::DataPipeDrainer::Client implementation: - void OnDataAvailable(const void* data, size_t num_bytes) override { - auto data_string = std::make_unique<std::string>( - reinterpret_cast<const char*>(data), num_bytes); - endpoint_->ReceiveTraceChunk(std::move(data_string)); - } - - void OnDataComplete() override { - data_complete_ = true; - MaybeTraceComplete(); - } - - void OnReadBuffersComplete() { - read_buffers_complete_ = true; - MaybeTraceComplete(); - } - - void MaybeTraceComplete() { - if (read_buffers_complete_ && data_complete_ && endpoint_) { - // Request stats to check if data loss occurred. - GetBufferUsage(base::BindOnce(&PerfettoTracingSession::OnFinalBufferUsage, - base::Unretained(this))); + if (on_buffer_usage_callback_) { + std::move(on_buffer_usage_callback_).Run(success, percent_full, 0); } } - void OnFinalBufferUsage(float percent_full, size_t approximate_event_count) { - if (!endpoint_) - return; + void OnTraceData(std::unique_ptr<std::string> data) { + endpoint_->ReceiveTraceChunk(std::move(data)); + } + + void OnTraceDataComplete() { + // Request stats to check if data loss occurred. + GetBufferUsage(base::BindOnce(&PerfettoTracingSession::OnFinalBufferUsage, + weak_factory_.GetWeakPtr())); + } + + void OnFinalBufferUsage(bool success, + float percent_full, + size_t approximate_event_count) { // Will delete |this|. endpoint_->ReceivedTraceFinalContents(); } - mojo::Receiver<tracing::mojom::TracingSessionClient> receiver_{this}; - mojo::Remote<tracing::mojom::TracingSessionHost> tracing_session_host_; + std::unique_ptr<perfetto::TracingSession> tracing_session_; - mojo::Remote<tracing::mojom::ConsumerHost> consumer_host_; - - bool use_proto_format_; - std::string agent_label_; + const bool use_proto_format_; base::OnceClosure on_recording_enabled_callback_; + base::OnceCallback< + void(bool success, float percent_full, size_t approximate_event_count)> + on_buffer_usage_callback_; base::OnceClosure pending_disable_tracing_task_; bool waiting_for_startup_tracing_enabled_ = false; scoped_refptr<TracingController::TraceDataEndpoint> endpoint_; - std::unique_ptr<mojo::DataPipeDrainer> drainer_; - bool data_complete_ = false; - bool read_buffers_complete_ = false; bool tracing_active_ = false; bool data_loss_ = false; #if DCHECK_IS_ON() perfetto::TraceConfig last_perfetto_config_; #endif + + base::WeakPtrFactory<PerfettoTracingSession> weak_factory_{this}; }; TracingHandler::TracingHandler(FrameTreeNode* frame_tree_node, @@ -557,23 +504,6 @@ std::make_unique<DevToolsVideoConsumer>(base::BindRepeating( &TracingHandler::OnFrameFromVideoConsumer, base::Unretained(this))); } - - auto* startup_config = tracing::TraceStartupConfig::GetInstance(); - // Check if we should adopt the startup tracing session. Only the first - // session connected to the browser endpoint can own it. - if (frame_tree_node_ != nullptr || - !startup_config->AttemptAdoptBySessionOwner( - tracing::TraceStartupConfig::SessionOwner::kDevToolsTracingHandler)) { - return; - } - - session_ = std::make_unique<PerfettoTracingSession>(); - base::trace_event::TraceConfig browser_config = - tracing::TraceStartupConfig::GetInstance()->GetTraceConfig(); - perfetto::TraceConfig perfetto_config = - CreatePerfettoConfiguration(browser_config); - session_->AdoptStartupTracingSession(perfetto_config); - g_any_agent_tracing = true; } TracingHandler::~TracingHandler() = default; @@ -599,7 +529,7 @@ Response TracingHandler::Disable() { if (session_) - StopTracing(nullptr, ""); + StopTracing(nullptr); return Response::Success(); } @@ -636,6 +566,7 @@ message.append(valid_trace_fragment.c_str() + trace_data_buffer_state_.offset); message += "] } }"; + frontend_->sendRawNotification( std::make_unique<TracingNotification>(std::move(message))); } @@ -741,48 +672,25 @@ bool proto_format = transfer_format.fromMaybe("") == Tracing::StreamFormatEnum::Proto; - if (proto_format && !return_as_stream) { - callback->sendFailure(Response::ServerError( - "Proto format is only supported when using stream transfer mode.")); - return; - } - - if (IsTracing()) { - if (!did_initiate_recording_ && IsStartupTracingActive()) { - // If tracing is already running because it was initiated by startup - // tracing, honor the transfer mode/format update, as that's the only way - // for the client to communicate it. - return_as_stream_ = return_as_stream; - gzip_compression_ = gzip_compression; - proto_format_ = proto_format; - } - callback->sendFailure(Response::ServerError( - "Tracing has already been started (possibly in another tab).")); - return; - } - - if (config.isJust() && (categories.isJust() || options.isJust())) { - callback->sendFailure(Response::InvalidParams( - "Either trace config (preferred), or categories+options should be " - "specified, but not both.")); - return; - } - - did_initiate_recording_ = true; - return_as_stream_ = return_as_stream; - gzip_compression_ = gzip_compression; - proto_format_ = proto_format; - buffer_usage_reporting_interval_ = - buffer_usage_reporting_interval.fromMaybe(0); - + perfetto::TraceConfig trace_config; if (perfetto_config.isJust()) { - bool parsed = trace_config_.ParseFromArray( + bool parsed = trace_config.ParseFromArray( perfetto_config.fromJust().data(), perfetto_config.fromJust().size()); if (!parsed) { callback->sendFailure(Response::InvalidParams( "Couldn't parse the supplied perfettoConfig.")); return; } + // Default to proto format for perfettoConfig, except if it specifies + // convert_to_legacy_json in the data source config. + proto_format = true; + for (const auto& data_source : trace_config.data_sources()) { + if (data_source.config().has_chrome_config() && + data_source.config().chrome_config().convert_to_legacy_json()) { + proto_format = false; + break; + } + } } else { base::trace_event::TraceConfig browser_config = base::trace_event::TraceConfig(); @@ -800,9 +708,47 @@ browser_config = base::trace_event::TraceConfig(categories.fromMaybe(""), options.fromMaybe("")); } - trace_config_ = CreatePerfettoConfiguration(browser_config); + trace_config = CreatePerfettoConfiguration(browser_config, return_as_stream, + proto_format); } + // Check if we should adopt the startup tracing session. Only the first + // Tracing.start() sent to the browser endpoint can adopt it. + AttemptAdoptStartupSession(return_as_stream, gzip_compression, proto_format); + + if (IsTracing()) { + callback->sendFailure(Response::ServerError( + "Tracing has already been started (possibly in another tab).")); + return; + } + + if (did_initiate_recording_) { + callback->sendFailure(Response::ServerError( + "Starting trace recording is already in progress")); + return; + } + + if (config.isJust() && (categories.isJust() || options.isJust())) { + callback->sendFailure(Response::InvalidParams( + "Either trace config (preferred), or categories+options should be " + "specified, but not both.")); + return; + } + + if (proto_format && !return_as_stream) { + callback->sendFailure(Response::InvalidParams( + "Proto format is only supported when using stream transfer mode.")); + return; + } + + return_as_stream_ = return_as_stream; + gzip_compression_ = gzip_compression; + proto_format_ = proto_format; + buffer_usage_reporting_interval_ = + buffer_usage_reporting_interval.fromMaybe(0); + did_initiate_recording_ = true; + trace_config_ = std::move(trace_config); + // GPU process id can only be retrieved on IO thread. Do some thread hopping. GetIOThreadTaskRunner({})->PostTaskAndReplyWithResult( FROM_HERE, base::BindOnce([]() { @@ -828,7 +774,7 @@ SetupProcessFilter(gpu_pid, nullptr); - session_ = std::make_unique<PerfettoTracingSession>(); + session_ = std::make_unique<PerfettoTracingSession>(proto_format_); session_->EnableTracing( trace_config_, base::BindOnce(&TracingHandler::OnRecordingEnabled, @@ -837,12 +783,18 @@ } perfetto::TraceConfig TracingHandler::CreatePerfettoConfiguration( - const base::trace_event::TraceConfig& browser_config) { + const base::trace_event::TraceConfig& browser_config, + bool return_as_stream, + bool proto_format) { return tracing::GetDefaultPerfettoConfig( browser_config, /*privacy_filtering_enabled=*/false, - /*convert_to_legacy_json=*/false, - perfetto::protos::gen::ChromeConfig::USER_INITIATED); + /*convert_to_legacy_json=*/!proto_format, + perfetto::protos::gen::ChromeConfig::USER_INITIATED, + /*json_agent_label_filter*/ + (proto_format || return_as_stream) + ? "" + : tracing::mojom::kChromeTraceEventLabel); } void TracingHandler::SetupProcessFilter( @@ -893,9 +845,35 @@ session_->ChangeTraceConfig(trace_config_); } +void TracingHandler::AttemptAdoptStartupSession(bool return_as_stream, + bool gzip_compression, + bool proto_format) { + if (frame_tree_node_ != nullptr) + return; + auto* startup_config = tracing::TraceStartupConfig::GetInstance(); + if (!startup_config->AttemptAdoptBySessionOwner( + tracing::TraceStartupConfig::SessionOwner::kDevToolsTracingHandler)) { + return; + } + + return_as_stream_ = return_as_stream; + gzip_compression_ = gzip_compression; + proto_format_ = proto_format; + + session_ = std::make_unique<PerfettoTracingSession>(proto_format_); + base::trace_event::TraceConfig browser_config = + tracing::TraceStartupConfig::GetInstance()->GetTraceConfig(); + perfetto::TraceConfig perfetto_config = CreatePerfettoConfiguration( + browser_config, return_as_stream_, proto_format_); + session_->AdoptStartupTracingSession(perfetto_config); + g_any_agent_tracing = true; +} + Response TracingHandler::End() { - if (!session_) + if (!session_) { + did_initiate_recording_ = false; return Response::ServerError("Tracing is not started"); + } if (session_->HasTracingFailed()) return Response::ServerError("Tracing failed"); @@ -910,14 +888,14 @@ endpoint = TracingControllerImpl::CreateCompressedStringEndpoint( endpoint, true /* compress_with_background_priority */); } - StopTracing(endpoint, ""); } else { // Reset the trace data buffer state. trace_data_buffer_state_ = TracingHandler::TraceDataBufferState(); endpoint = new DevToolsTraceEndpointProxy(weak_factory_.GetWeakPtr()); - StopTracing(endpoint, tracing::mojom::kChromeTraceEventLabel); } + StopTracing(endpoint); + return Response::Success(); } @@ -953,10 +931,15 @@ } } -void TracingHandler::OnBufferUsage(float percent_full, +void TracingHandler::OnBufferUsage(bool success, + float percent_full, size_t approximate_event_count) { if (!did_initiate_recording_) return; + + if (!success) + return; + // TODO(crbug426117): remove set_value once all clients have switched to // the new interface of the event. frontend_->BufferUsage(percent_full, approximate_event_count, percent_full); @@ -1057,11 +1040,15 @@ } void TracingHandler::StopTracing( - const scoped_refptr<TracingController::TraceDataEndpoint>& endpoint, - const std::string& agent_label) { + const scoped_refptr<TracingController::TraceDataEndpoint>& endpoint) { DCHECK(session_); buffer_usage_poll_timer_.reset(); - session_->DisableTracing(proto_format_, agent_label, endpoint); + if (endpoint) { + // Will delete |session_|. + session_->DisableTracing(std::move(endpoint)); + } else { + session_.reset(); + } did_initiate_recording_ = false; g_any_agent_tracing = false; if (video_consumer_)
diff --git a/content/browser/devtools/protocol/tracing_handler.h b/content/browser/devtools/protocol/tracing_handler.h index 3a64199..0810a23 100644 --- a/content/browser/devtools/protocol/tracing_handler.h +++ b/content/browser/devtools/protocol/tracing_handler.h
@@ -87,8 +87,6 @@ private: friend class TracingHandlerTest; - class TracingSession; - class LegacyTracingSession; class PerfettoTracingSession; struct TraceDataBufferState { @@ -102,7 +100,9 @@ }; void OnRecordingEnabled(std::unique_ptr<StartCallback> callback); - void OnBufferUsage(float percent_full, size_t approximate_event_count); + void OnBufferUsage(bool success, + float percent_full, + size_t approximate_event_count); void OnCategoriesReceived(std::unique_ptr<GetCategoriesCallback> callback, const std::set<std::string>& category_set); void OnMemoryDumpFinished(std::unique_ptr<RequestMemoryDumpCallback> callback, @@ -118,8 +118,7 @@ void SetupTimer(double usage_reporting_interval); void UpdateBufferUsage(); void StopTracing( - const scoped_refptr<TracingController::TraceDataEndpoint>& endpoint, - const std::string& agent_label); + const scoped_refptr<TracingController::TraceDataEndpoint>& endpoint); bool IsTracing() const; void EmitFrameTree(); static bool IsStartupTracingActive(); @@ -127,13 +126,18 @@ GetTraceConfigFromDevToolsConfig( const base::DictionaryValue& devtools_config); perfetto::TraceConfig CreatePerfettoConfiguration( - const base::trace_event::TraceConfig& browser_config); + const base::trace_event::TraceConfig& browser_config, + bool return_as_stream, + bool proto_format); void SetupProcessFilter(base::ProcessId gpu_pid, RenderFrameHost*); void StartTracingWithGpuPid(std::unique_ptr<StartCallback>, base::ProcessId gpu_pid); void AppendProcessId(RenderFrameHost*, std::unordered_set<base::ProcessId>* process_set); void OnProcessReady(RenderProcessHost*); + void AttemptAdoptStartupSession(bool return_as_stream, + bool gzip_compression, + bool proto_format); std::unique_ptr<base::RepeatingTimer> buffer_usage_poll_timer_; @@ -149,7 +153,7 @@ std::unique_ptr<DevToolsVideoConsumer> video_consumer_; int number_of_screenshots_from_video_consumer_ = 0; perfetto::TraceConfig trace_config_; - std::unique_ptr<TracingSession> session_; + std::unique_ptr<PerfettoTracingSession> session_; base::WeakPtrFactory<TracingHandler> weak_factory_{this}; FRIEND_TEST_ALL_PREFIXES(TracingHandlerTest,
diff --git a/content/browser/form_controls_browsertest.cc b/content/browser/form_controls_browsertest.cc index d5202db..45363e1 100644 --- a/content/browser/form_controls_browsertest.cc +++ b/content/browser/form_controls_browsertest.cc
@@ -134,17 +134,17 @@ } // Check if the test can run on the current system. - bool CheckShouldRunTest() const { + bool SkipTestForOldAndroidVersions() const { #if defined(OS_ANDROID) // Lower versions of android running on older devices, ex Nexus 5, render // form controls with a too large of a difference -- >20% error -- to // pixel compare. if (base::android::BuildInfo::GetInstance()->sdk_int() < base::android::SDK_VERSION_OREO) { - return false; + return true; } #endif // defined(OS_ANDROID) - return true; + return false; } private: @@ -152,7 +152,7 @@ }; IN_PROC_BROWSER_TEST_F(FormControlsBrowserTest, Checkbox) { - if (!CheckShouldRunTest()) + if (SkipTestForOldAndroidVersions()) return; RunTest("form_controls_browsertest_checkbox", @@ -169,7 +169,7 @@ } IN_PROC_BROWSER_TEST_F(FormControlsBrowserTest, Radio) { - if (!CheckShouldRunTest()) + if (SkipTestForOldAndroidVersions()) return; RunTest("form_controls_browsertest_radio",
diff --git a/content/browser/picture_in_picture/picture_in_picture_content_browsertest.cc b/content/browser/picture_in_picture/picture_in_picture_content_browsertest.cc index a023c35..ed3f01f 100644 --- a/content/browser/picture_in_picture/picture_in_picture_content_browsertest.cc +++ b/content/browser/picture_in_picture/picture_in_picture_content_browsertest.cc
@@ -280,8 +280,9 @@ // Check that the playback state in the Picture-in-Picture window follows the // state of the media player. +// TODO(crbug.com/1177130) Re-enable test IN_PROC_BROWSER_TEST_F(PictureInPictureContentBrowserTest, - EnterPictureInPictureForPausedPlayer) { + DISABLED_EnterPictureInPictureForPausedPlayer) { ASSERT_TRUE(NavigateToURL( shell(), GetTestUrl("media/picture_in_picture", "one-video.html"))); @@ -334,8 +335,9 @@ // Check that the playback state in the Picture-in-Picture window follows the // state of the media player. +// TODO(crbug.com/1177130) Re-enable test IN_PROC_BROWSER_TEST_F(MediaSessionPictureInPictureContentBrowserTest, - EnterPictureInPictureForPausedPlayer) { + DISABLED_EnterPictureInPictureForPausedPlayer) { ASSERT_TRUE(NavigateToURL( shell(), GetTestUrl("media/picture_in_picture", "one-video.html")));
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index 6a91a4f..a1c2aaa 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -7326,18 +7326,16 @@ } bool RenderFrameHostImpl::IsCurrent() { - RenderFrameHostImpl* rfh = this; - // Check this RenderFrameHost and all its ancestors to see if they are the - // current ones in their respective FrameTreeNodes. - // It is important to check for all ancestors as when navigation commits a new - // RenderFrameHost may replace one of the parents, swapping out the old with - // its entire subtree but |this| will still be a current one in its - // FrameTreeNode. - while (rfh) { - if (rfh->frame_tree_node()->current_frame_host() != rfh) - return false; - rfh = rfh->GetParent(); - } + // Only documents in the kActive lifecycle state are considered current. + if (lifecycle_state_ != LifecycleState::kActive) + return false; + + // When the document is transitioning away from kActive to a + // yet-to-be-determined state, the RenderFrameHostManager has already + // updated its current RenderFrameHost, and the old document is no longer + // the current one. In that case, return false. + if (has_pending_lifecycle_state_update_) + return false; return true; } @@ -7373,6 +7371,13 @@ GrantFileAccess(GetProcess()->GetID(), state.GetReferencedFiles()); } +void RenderFrameHostImpl::SetHasPendingLifecycleStateUpdate() { + DCHECK(!has_pending_lifecycle_state_update_); + for (auto& child : children_) + child->current_frame_host()->SetHasPendingLifecycleStateUpdate(); + has_pending_lifecycle_state_update_ = true; +} + void RenderFrameHostImpl::GrantFileAccessFromResourceRequestBody( const network::ResourceRequestBody& body) { GrantFileAccess(GetProcess()->GetID(), body.GetReferencedFiles()); @@ -10381,6 +10386,16 @@ LifecycleState old_state = lifecycle_state_; lifecycle_state_ = state; + + // Unset the |has_pending_lifecycle_state_update_| value once the + // LifecycleState is updated. + if (has_pending_lifecycle_state_update_) { + DCHECK(IsInBackForwardCache() || IsPendingDeletion()) + << "Transitioned to unexpected state with resetting " + "|has_pending_lifecycle_state_update_|\n "; + has_pending_lifecycle_state_update_ = false; + } + // Notify the delegate about change in |lifecycle_state_|. delegate_->RenderFrameHostStateChanged(this, old_state, lifecycle_state_); }
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index f76b88c..caa63f6 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -833,6 +833,13 @@ LifecycleState lifecycle_state() const { return lifecycle_state_; } void SetLifecycleStateToActive(); + // Sets |has_pending_lifecycle_state_update_| to true for this RenderFrameHost + // and its children. Called when this RenderFrameHost stops being the current + // one in the RenderFrameHostManager, but its new LifecycleState is not + // immediately determined. This boolean is reset when this RenderFrameHost + // enters the back-forward-cache or the pending deletion list. + void SetHasPendingLifecycleStateUpdate(); + enum class BeforeUnloadType { BROWSER_INITIATED_NAVIGATION, RENDERER_INITIATED_NAVIGATION, @@ -3022,6 +3029,19 @@ // content. bool should_virtual_keyboard_overlay_content_ = false; + // If true, then this RenderFrameHost is waiting to update its LifecycleState. + // Happens when the old RenderFrameHost is waiting to either enter + // BackForwardCache or PendingDeletion. In this case, the old + // RenderFrameHost's lifecycle state remains in kActive. During this period, + // the RenderFrameHost is no longer the current one. The flag is again + // updated once the lifecycle state changes. + // + // TODO(https://crbug.com/1177198): Remove this bool and refactor + // RenderFrameHostManager::CommitPending() to avoid having a time window where + // we don't know what the old RenderFrameHost's next lifecycle state should + // be. + bool has_pending_lifecycle_state_update_ = false; + // Used for tracking the latest size of the RenderFrame. base::Optional<gfx::Size> frame_size_;
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc index 8c15970f..944b50a 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -3258,6 +3258,15 @@ render_frame_host_->SetLifecycleStateToActive(); } + if (old_render_frame_host && + old_render_frame_host->lifecycle_state() == + RenderFrameHostImpl::LifecycleState::kActive) { + // After the old RenderFrameHost is no longer the current one and is in + // LifecycleState::kActive state, set the value of + // |has_pending_lifecycle_state_update_| to true if it is not null. + old_render_frame_host->SetHasPendingLifecycleStateUpdate(); + } + if (frame_tree_node_->IsMainFrame()) { // Update the count of top-level frames using this SiteInstance. All // subframes are in the same BrowsingInstance as the main frame, so we only
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc index 8c885767..156af1d 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -2881,7 +2881,8 @@ // Checks that WidgetInputHandler::CursorVisibilityChange IPC messages are // dispatched to the renderer at the correct times. -TEST_F(RenderWidgetHostViewAuraTest, CursorVisibilityChange) { +// TODO(crbug.com/1177138) Re-enable test +TEST_F(RenderWidgetHostViewAuraTest, DISABLED_CursorVisibilityChange) { InitViewForFrame(nullptr); aura::client::ParentWindowWithContext( view_->GetNativeView(),
diff --git a/content/browser/resources/media/stats_rates_calculator.js b/content/browser/resources/media/stats_rates_calculator.js index b6d41b62..7b6cd63 100644 --- a/content/browser/resources/media/stats_rates_calculator.js +++ b/content/browser/resources/media/stats_rates_calculator.js
@@ -454,6 +454,7 @@ 'totalPacketSendDelay', 'packetsSent', CalculatorModifier.kMillisecondsFromSeconds), framesEncoded: new RateCalculator('framesEncoded', 'timestamp'), + framesSent: new RateCalculator('framesSent', 'timestamp'), totalEncodedBytesTarget: new RateCalculator( 'totalEncodedBytesTarget', 'timestamp', CalculatorModifier.kBytesToBits), @@ -478,7 +479,12 @@ 'headerBytesReceived', 'timestamp', CalculatorModifier.kBytesToBits), packetsReceived: new RateCalculator('packetsReceived', 'timestamp'), + framesReceived: [ + new RateCalculator('framesReceived', 'timestamp'), + new DifferenceCalculator('framesReceived', 'framesDecoded'), + ], framesDecoded: new RateCalculator('framesDecoded', 'timestamp'), + keyFramesDecoded: new RateCalculator('keyFramesDecoded', 'timestamp'), totalDecodeTime: new RateCalculator( 'totalDecodeTime', 'framesDecoded', CalculatorModifier.kMillisecondsFromSeconds), @@ -488,8 +494,21 @@ totalSquaredInterFrameDelay: new StandardDeviationCalculator( 'totalSquaredInterFrameDelay', 'totalInterFrameDelay', 'framesDecoded', 'interFrameDelay'), + totalSamplesReceived: + new RateCalculator('totalSamplesReceived', 'timestamp'), + concealedSamples: new RateCalculator('concealedSamples', 'timestamp'), + silentConcealedSamples: + new RateCalculator('silentConcealedSamples', 'timestamp'), + insertedSamplesForDeceleration: + new RateCalculator('insertedSamplesForDeceleration', 'timestamp'), + removedSamplesForAcceleration: + new RateCalculator('removedSamplesForAcceleration', 'timestamp'), qpSum: new RateCalculator('qpSum', 'framesDecoded'), codecId: new CodecCalculator(), + totalAudioEnergy: new AudioLevelRmsCalculator(), + jitterBufferDelay: new RateCalculator( + 'jitterBufferDelay', 'jitterBufferEmittedCount', + CalculatorModifier.kMillisecondsFromSeconds), }, }, {
diff --git a/content/browser/webui/url_data_manager_backend.cc b/content/browser/webui/url_data_manager_backend.cc index 693baa50..4615350 100644 --- a/content/browser/webui/url_data_manager_backend.cc +++ b/content/browser/webui/url_data_manager_backend.cc
@@ -162,9 +162,11 @@ std::string csp_header; const network::mojom::CSPDirectiveName kAllDirectives[] = { + network::mojom::CSPDirectiveName::BaseURI, network::mojom::CSPDirectiveName::ChildSrc, network::mojom::CSPDirectiveName::ConnectSrc, network::mojom::CSPDirectiveName::DefaultSrc, + network::mojom::CSPDirectiveName::FormAction, network::mojom::CSPDirectiveName::FrameSrc, network::mojom::CSPDirectiveName::ImgSrc, network::mojom::CSPDirectiveName::MediaSrc,
diff --git a/content/public/browser/url_data_source.cc b/content/public/browser/url_data_source.cc index 5264296..642cec7 100644 --- a/content/public/browser/url_data_source.cc +++ b/content/public/browser/url_data_source.cc
@@ -79,7 +79,9 @@ case network::mojom::CSPDirectiveName::ScriptSrc: // Note: Do not add 'unsafe-eval' here. Instead override CSP for the // specific pages that need it, see context http://crbug.com/525224. - return "script-src chrome://resources 'self';"; + return IsChromeUntrustedDataSource(this) + ? "script-src chrome-untrusted://resources 'self';" + : "script-src chrome://resources 'self';"; case network::mojom::CSPDirectiveName::FrameAncestors: return "frame-ancestors 'none';"; case network::mojom::CSPDirectiveName::RequireTrustedTypesFor: @@ -87,11 +89,15 @@ case network::mojom::CSPDirectiveName::TrustedTypes: return "trusted-types;"; case network::mojom::CSPDirectiveName::BaseURI: + return IsChromeUntrustedDataSource(this) ? "base-uri 'none';" + : std::string(); + case network::mojom::CSPDirectiveName::FormAction: + return IsChromeUntrustedDataSource(this) ? "form-action 'none';" + : std::string(); case network::mojom::CSPDirectiveName::BlockAllMixedContent: case network::mojom::CSPDirectiveName::ConnectSrc: case network::mojom::CSPDirectiveName::FrameSrc: case network::mojom::CSPDirectiveName::FontSrc: - case network::mojom::CSPDirectiveName::FormAction: case network::mojom::CSPDirectiveName::ImgSrc: case network::mojom::CSPDirectiveName::ManifestSrc: case network::mojom::CSPDirectiveName::MediaSrc:
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn index 8f00916..7d3bac1 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn
@@ -317,6 +317,7 @@ "//services/metrics/public/cpp:metrics_cpp", "//services/metrics/public/cpp:ukm_builders", "//services/network:network_service", + "//services/network/public/mojom", "//services/service_manager/public/cpp", "//services/service_manager/public/mojom", "//services/tracing/public/cpp",
diff --git a/content/renderer/loader/web_url_loader_impl.cc b/content/renderer/loader/web_url_loader_impl.cc index c897bec6..b2a1f71 100644 --- a/content/renderer/loader/web_url_loader_impl.cc +++ b/content/renderer/loader/web_url_loader_impl.cc
@@ -55,6 +55,7 @@ #include "services/network/public/cpp/http_raw_request_response_info.h" #include "services/network/public/cpp/is_potentially_trustworthy.h" #include "services/network/public/cpp/resource_request.h" +#include "services/network/public/mojom/fetch_api.mojom-shared.h" #include "services/network/public/mojom/ip_address_space.mojom-shared.h" #include "services/network/public/mojom/trust_tokens.mojom-shared.h" #include "services/network/public/mojom/url_loader.mojom.h" @@ -439,7 +440,7 @@ void OnBodyHasBeenRead(uint32_t read_bytes); static net::NetworkTrafficAnnotationTag GetTrafficAnnotationTag( - blink::mojom::ResourceType resource_type); + network::ResourceRequest* request); // Appends variations throttles to |throttles| if needed. void AppendVariationsThrottles( @@ -567,11 +568,12 @@ // TODO(horo): Check credentials flag is unset when credentials mode is omit. // Check credentials flag is set when credentials mode is include. - const blink::mojom::ResourceType resource_type = - static_cast<blink::mojom::ResourceType>(request->resource_type); + const network::mojom::RequestDestination request_destination = + request->destination; // TODO(yhirano): Move the logic below to blink/platform/loader. - if (resource_type == blink::mojom::ResourceType::kImage && + if (!request->is_favicon && + request_destination == network::mojom::RequestDestination::kImage && IsBannedCrossSiteAuth(request.get(), passed_url_request_extra_data.get())) { // Prevent third-party image content from prompting for login, as this @@ -598,15 +600,14 @@ } url_request_extra_data->CopyToResourceRequest(request.get()); - if (resource_type == blink::mojom::ResourceType::kPrefetch) { + if (request->load_flags & net::LOAD_PREFETCH) request->corb_detachable = true; - } auto throttles = url_request_extra_data->TakeURLLoaderThrottles().ReleaseVector(); // The frame request blocker is only for a frame's subresources. if (url_request_extra_data->frame_request_blocker() && - !blink::IsResourceTypeFrame(resource_type)) { + !blink::IsRequestDestinationFrame(request_destination)) { auto throttle = url_request_extra_data->frame_request_blocker() ->GetThrottleIfRequestsBlocked(); if (throttle) @@ -633,9 +634,10 @@ blink::Platform::Current()->GetBrowserInterfaceBroker()->GetInterface( download_to_blob_registry.InitWithNewPipeAndPassReceiver()); } + net::NetworkTrafficAnnotationTag tag = + GetTrafficAnnotationTag(request.get()); resource_request_sender_->SendSync( - std::move(request), requestor_id, - GetTrafficAnnotationTag(resource_type), loader_options, + std::move(request), requestor_id, tag, loader_options, sync_load_response, url_loader_factory_, std::move(throttles), timeout_interval, cors_exempt_header_list_, terminate_sync_load_event_, std::move(download_to_blob_registry), base::WrapRefCounted(this), @@ -645,11 +647,12 @@ TRACE_EVENT_WITH_FLOW0("loading", "WebURLLoaderImpl::Context::Start", this, TRACE_EVENT_FLAG_FLOW_OUT); + net::NetworkTrafficAnnotationTag tag = GetTrafficAnnotationTag(request.get()); request_id_ = resource_request_sender_->SendAsync( - std::move(request), requestor_id, unfreezable_task_runner_, - GetTrafficAnnotationTag(resource_type), loader_options, - cors_exempt_header_list_, base::WrapRefCounted(this), url_loader_factory_, - std::move(throttles), std::move(resource_load_info_notifier_wrapper)); + std::move(request), requestor_id, unfreezable_task_runner_, tag, + loader_options, cors_exempt_header_list_, base::WrapRefCounted(this), + url_loader_factory_, std::move(throttles), + std::move(resource_load_info_notifier_wrapper)); if (defers_loading_ != blink::WebURLLoader::DeferType::kNotDeferred) { resource_request_sender_->SetDefersLoading( @@ -1092,28 +1095,50 @@ // and if it's for favicon or not. net::NetworkTrafficAnnotationTag WebURLLoaderImpl::Context::GetTrafficAnnotationTag( - blink::mojom::ResourceType resource_type) { - switch (resource_type) { - case blink::mojom::ResourceType::kMainFrame: - case blink::mojom::ResourceType::kSubFrame: - case blink::mojom::ResourceType::kNavigationPreloadMainFrame: - case blink::mojom::ResourceType::kNavigationPreloadSubFrame: + network::ResourceRequest* request) { + if (request->is_favicon) { + return net::DefineNetworkTrafficAnnotation("favicon_loader", R"( + semantics { + sender: "Blink Resource Loader" + description: + "Chrome sends a request to download favicon for a URL." + trigger: + "Navigating to a URL." + data: "None." + destination: WEBSITE + } + policy { + cookies_allowed: YES + cookies_store: "user" + setting: "These requests cannot be disabled in settings." + policy_exception_justification: + "Not implemented." + })"); + } + switch (request->destination) { + case network::mojom::RequestDestination::kDocument: + case network::mojom::RequestDestination::kIframe: + case network::mojom::RequestDestination::kFrame: NOTREACHED(); FALLTHROUGH; - case blink::mojom::ResourceType::kStylesheet: - case blink::mojom::ResourceType::kScript: - case blink::mojom::ResourceType::kImage: - case blink::mojom::ResourceType::kFontResource: - case blink::mojom::ResourceType::kSubResource: - case blink::mojom::ResourceType::kMedia: - case blink::mojom::ResourceType::kWorker: - case blink::mojom::ResourceType::kSharedWorker: - case blink::mojom::ResourceType::kPrefetch: - case blink::mojom::ResourceType::kXhr: - case blink::mojom::ResourceType::kPing: - case blink::mojom::ResourceType::kServiceWorker: - case blink::mojom::ResourceType::kCspReport: + case network::mojom::RequestDestination::kEmpty: + case network::mojom::RequestDestination::kAudio: + case network::mojom::RequestDestination::kAudioWorklet: + case network::mojom::RequestDestination::kFont: + case network::mojom::RequestDestination::kImage: + case network::mojom::RequestDestination::kManifest: + case network::mojom::RequestDestination::kPaintWorklet: + case network::mojom::RequestDestination::kReport: + case network::mojom::RequestDestination::kScript: + case network::mojom::RequestDestination::kServiceWorker: + case network::mojom::RequestDestination::kSharedWorker: + case network::mojom::RequestDestination::kStyle: + case network::mojom::RequestDestination::kTrack: + case network::mojom::RequestDestination::kVideo: + case network::mojom::RequestDestination::kWebBundle: + case network::mojom::RequestDestination::kWorker: + case network::mojom::RequestDestination::kXslt: return net::DefineNetworkTrafficAnnotation("blink_resource_loader", R"( semantics { sender: "Blink Resource Loader" @@ -1135,8 +1160,8 @@ "to load any webpage." })"); - case blink::mojom::ResourceType::kObject: - case blink::mojom::ResourceType::kPluginResource: + case network::mojom::RequestDestination::kEmbed: + case network::mojom::RequestDestination::kObject: return net::DefineNetworkTrafficAnnotation( "blink_extension_resource_loader", R"( semantics { @@ -1164,25 +1189,6 @@ } } })"); - - case blink::mojom::ResourceType::kFavicon: - return net::DefineNetworkTrafficAnnotation("favicon_loader", R"( - semantics { - sender: "Blink Resource Loader" - description: - "Chrome sends a request to download favicon for a URL." - trigger: - "Navigating to a URL." - data: "None." - destination: WEBSITE - } - policy { - cookies_allowed: YES - cookies_store: "user" - setting: "These requests cannot be disabled in settings." - policy_exception_justification: - "Not implemented." - })"); } return net::NetworkTrafficAnnotationTag::NotReached();
diff --git a/content/renderer/loader/web_url_loader_impl_unittest.cc b/content/renderer/loader/web_url_loader_impl_unittest.cc index d372911..122e587 100644 --- a/content/renderer/loader/web_url_loader_impl_unittest.cc +++ b/content/renderer/loader/web_url_loader_impl_unittest.cc
@@ -33,6 +33,7 @@ #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "net/url_request/redirect_info.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" +#include "services/network/public/mojom/fetch_api.mojom-shared.h" #include "services/network/public/mojom/url_response_head.mojom.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/resource_load_info_notifier_wrapper.h" @@ -324,8 +325,7 @@ void DoStartAsyncRequest() { auto request = std::make_unique<network::ResourceRequest>(); request->url = GURL(kTestURL); - request->resource_type = - static_cast<int>(blink::mojom::ResourceType::kSubResource); + request->destination = network::mojom::RequestDestination::kEmpty; request->priority = net::IDLE; client()->loader()->LoadAsynchronously( std::move(request), /*url_request_extra_data=*/nullptr, @@ -668,8 +668,7 @@ auto request = std::make_unique<network::ResourceRequest>(); request->url = url; - request->resource_type = - static_cast<int>(blink::mojom::ResourceType::kSubResource); + request->destination = network::mojom::RequestDestination::kEmpty; request->priority = net::HIGHEST; // Prepare a mock response
diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc index fec5938..ae5293a 100644 --- a/content/renderer/render_process_impl.cc +++ b/content/renderer/render_process_impl.cc
@@ -189,23 +189,27 @@ #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64) if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - if (!command_line->HasSwitch(switches::kEnableCrashReporter) && - !command_line->HasSwitch(switches::kEnableCrashReporterForTesting)) { - // If we are using WebAssembly trap handling but both Breakpad and - // in-process stack traces are disabled then there will be no signal - // handler. In this case, we fall back on V8's default handler - // (https://crbug.com/798150). - v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/true); + + if (command_line->HasSwitch(switches::kEnableCrashpad) || + command_line->HasSwitch(switches::kEnableCrashReporter) || + command_line->HasSwitch(switches::kEnableCrashReporterForTesting)) { + // The trap handler is set as the first chance handler for Crashpad or + // Breakpad's signal handler. + v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/false); } else if (!command_line->HasSwitch( switches::kDisableInProcessStackTraces)) { - // Only enable WebAssembly trap handler if we can set the callback. if (base::debug::SetStackDumpFirstChanceCallback( v8::TryHandleWebAssemblyTrapPosix)) { - // We registered the WebAssembly trap handler callback with the stack - // dump signal handler successfully. We can tell V8 that it can enable - // WebAssembly trap handler without using the V8 signal handler. + // Crashpad and Breakpad are disabled, but the in-process stack dump + // handlers are enabled, so set the callback on the stack dump handlers. v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/false); + } else { + // As the registration of the callback failed, we don't enable trap + // handlers. } + } else { + // There is no signal handler yet, but it's okay if v8 registers one. + v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/true); } } #endif
diff --git a/content/test/data/accessibility/css/marker-crash-expected-blink.txt b/content/test/data/accessibility/css/marker-crash-expected-blink.txt new file mode 100644 index 0000000..30f3c45 --- /dev/null +++ b/content/test/data/accessibility/css/marker-crash-expected-blink.txt
@@ -0,0 +1,10 @@ +rootWebArea +++genericContainer ignored +++++genericContainer ignored +++++++group +++++++++listMarker name='• ' +++++++++listItem +++++++++++genericContainer +++++++++++++listMarker name='• ' +++++++++++genericContainer ignored +++++++genericContainer ignored
diff --git a/content/test/data/accessibility/css/marker-crash.html b/content/test/data/accessibility/css/marker-crash.html new file mode 100644 index 0000000..259ccac --- /dev/null +++ b/content/test/data/accessibility/css/marker-crash.html
@@ -0,0 +1,7 @@ +<!-- Avoid a crash caused by adding pseudo element content in two places. + See AXNodeObject::CanAddLayoutChild(). https://crbug.com/1172038 --> +<style> +span:before { display: inherit; content: ""; -webkit-column-count: 1; } +</style> +<span role="group" style="display: list-item"></span> +<span class="empty"></span>
diff --git a/content/test/data/accessibility/html/select-in-canvas-expected-blink.txt b/content/test/data/accessibility/html/select-in-canvas-expected-blink.txt new file mode 100644 index 0000000..80648e2 --- /dev/null +++ b/content/test/data/accessibility/html/select-in-canvas-expected-blink.txt
@@ -0,0 +1,14 @@ +rootWebArea focusable +++genericContainer ignored +++++genericContainer ignored +++++++genericContainer +++++++++popUpButton collapsed focusable value='1' +++++++++++menuListPopup invisible +++++++++++++menuListOption focusable name='1' selected=true +++++++++++++menuListOption focusable invisible name='2' selected=false +++++++canvas +++++++++staticText name='<newline> ' +++++++++popUpButton collapsed focusable value='1' +++++++++++menuListOption focusable +++++++++++menuListOption focusable +++++++++staticText name='<newline>'
diff --git a/content/test/data/accessibility/html/select-in-canvas.html b/content/test/data/accessibility/html/select-in-canvas.html new file mode 100644 index 0000000..aac7ae3 --- /dev/null +++ b/content/test/data/accessibility/html/select-in-canvas.html
@@ -0,0 +1,12 @@ +<!-- +@BLINK-ALLOW:focusable +@BLINK-ALLOW:id* +TODO(crbug.com/1175353) Results are not identical to the <select> outside the <canvas>. +--> +<div id="control"> + <select><option>1<option>2</select> +</div> + +<canvas id="canvas" width="300" height="300"> + <select><option>1<option>2</select> +</canvas>
diff --git a/content/test/data/accessibility/regression/display-contents-select-crash-expected-blink.txt b/content/test/data/accessibility/regression/display-contents-select-crash-expected-blink.txt index f309d394..52b0ab7 100644 --- a/content/test/data/accessibility/regression/display-contents-select-crash-expected-blink.txt +++ b/content/test/data/accessibility/regression/display-contents-select-crash-expected-blink.txt
@@ -3,4 +3,4 @@ ++++genericContainer ++++++popUpButton collapsed ++++++++menuListPopup invisible -++++++++++menuListOption +++++++++++menuListOption selected=true
diff --git a/content/test/data/gpu/vc/README.md b/content/test/data/gpu/vc/README.md index 4beca84..5716458 100644 --- a/content/test/data/gpu/vc/README.md +++ b/content/test/data/gpu/vc/README.md
@@ -5,15 +5,21 @@ the top right corner. -## Configurations in Demo Files +## Configurations ### videos_mxn.html <video> elements are played through the default media player. The UI are added with CSS icons. ### webgpu_videos_mxn.html + PLEASE RUN http-server TO SERVE THIS DEMO, OTHERWISE THIS DEMO WILL NOT START. +Chromium command line switch to enable WEBGPU: + "--enable-unsafe-webgpu --enable-experimental-web-platform-features" The image of each video frame is uploaded and rendered by WebGPU. The UI is also -rendered by WebGPU. +rendered by WebGPU. The demo uses the experimental Import Texture API to copy +the video textures into GPU. The copy method can be changed to +createImageBitmap() then device.queue.copyImageBitmapToTexture() with a flag. + The on-screen size that covers all videos is set to 1600x900. The actual size of each video is divided by the video rows and columns (MxN). @@ -23,8 +29,8 @@ The video stream size is 320x280 if the total video count is more than 4. Among these videos, 4 are 30 fps, 12 are 15 fps, and the remaining are 7 fps. -The video stream size is 640x360 if the total video count is equal or less than -4. All of them are 30 fps. +The video stream size is 640x360 at 30 fps if the total video count is equal or +less than 4. ## Usage @@ -37,15 +43,23 @@ webgpu_videos_mxn.html?rows=2&columns=2 ``` -To remove the UI or force the UI to CSS icons in webgpu_videos_mxn.html. Use `ui=none` or `ui=css`. +For webgpu_videos_mxn.html only: +To remove the UI or force the UI to CSS icons. Use `ui=none` or `ui=css`. ``` webgpu_videos_mxn.html?ui=css ``` +To disable Import Texture API and force the video texture copy through +createImageBitmap() and then copyImageBitmapToTexture(), +use import_texture_api=0. +``` +webgpu_videos_mxn.html?import_texture_api=0 +``` ## Video Files -The following videos are recorded and converted to the needed configurations by magchen@chromium.org. +The following videos are recorded and converted to the needed configurations +by magchen@chromium.org. ### teddy1_vp9_320x180_7fps.webm ffmpeg -i Teddy1_hd.MOV -c:v libvpx-vp9 -r 7 -s 320x180 teddy1_vp9_320x180_7fps.webm
diff --git a/content/test/data/gpu/vc/webgpu_video.js b/content/test/data/gpu/vc/webgpu_video.js index 304393d..9f669bd 100644 --- a/content/test/data/gpu/vc/webgpu_video.js +++ b/content/test/data/gpu/vc/webgpu_video.js
@@ -1,6 +1,7 @@ // 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. +const _save_restore_swap_chain = false; async function webGpuInit(canvasWidth, canvasHeight) { const adapter = navigator.gpu && await navigator.gpu.requestAdapter(); @@ -26,7 +27,7 @@ return null; } - return { device, context }; + return { device, context, canvas }; } const wgslShaders = { @@ -198,7 +199,7 @@ function webGpuDrawVideoFrames(gpuSetting, videos, videoRows, videoColumns, addUI, useImportTextureApi) { - const { device, context } = gpuSetting; + const { device, context, canvas } = gpuSetting; const verticesBuffer = createVertexBuffer(device, videos, videoRows, videoColumns); @@ -207,7 +208,8 @@ const swapChain = context.configureSwapChain({ device, format: swapChainFormat, - usage: GPUTextureUsage.OUTPUT_ATTACHMENT, + usage: GPUTextureUsage.OUTPUT_ATTACHMENT | GPUTextureUsage.COPY_DST | + GPUTextureUsage.COPY_SRC, }); const pipeline = device.createRenderPipeline({ @@ -337,60 +339,141 @@ ], }); + // The frameId is increased by one every time oneFrame() is called. + var frameId = 0; + + // The videos are displayed at different frame rate with lower indices in + // videos updated faster than hight indices. + // For videos #0-#3, they are to be displayed at 30 fps. + // For videos #3-#15, they are to be displayed at 15 fps. + // For videos #16+, they are to be displayed at 7.5 fps. + // Since oneFrame() is called at 30 fps, the video textures #0-#3 are copied + // every frame, #4 -#15 are copied every other frame and #16+ are copied + // every 4 frames. + function GetNumOfVideosToCopyForCurrentFrame(frameId) { + switch (frameId % 4) { + case 0: + return videos.length; + case 1: + case 3: + return Math.min(4, videos.length); + case 2: + return Math.min(16, videos.length); + default: + console.error('Something wrong with frameId % 4'); + } + } + + const savedSwapChain = device.createTexture({ + size: { + width: canvas.width, + height: canvas.height, + depth: 1, + }, + format: 'bgra8unorm', + usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC, + }); + const oneFrame = () => { - renderPassDescriptor.colorAttachments[0].attachment = swapChain - .getCurrentTexture() + const swapChainTexture = swapChain.getCurrentTexture(); + renderPassDescriptor.colorAttachments[0].attachment = swapChainTexture .createView(); const commandEncoder = device.createCommandEncoder(); + if (_save_restore_swap_chain) + { + commandEncoder.copyTextureToTexture( + { texture: savedSwapChain }, + { texture: swapChainTexture }, + { width: canvas.width, height: canvas.height, depth: 1 }); + } + const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor); passEncoder.setPipeline(pipeline); passEncoder.setVertexBuffer(0, verticesBuffer); - Promise.all(videos.map(video => createImageBitmap(video))). - then((videoFrames) => { - for (let i = 0; i < videos.length; ++i) { + // These videos are displayed at different fps. Not every video needs to be + // updated in this frame. The videos at lower indices are updated faster + // (higher fps) than videos at higher indices. See comments of + // GetNumOfVideosToCopyForCurrentFrame() for how the videos with different + // fps are arranged. + const numVideosToCopy = GetNumOfVideosToCopyForCurrentFrame(frameId); + + Promise.all(videos.slice(0, numVideosToCopy). + map(video => createImageBitmap(video))).then((videoFrames) => { + for (let i = 0; i < numVideosToCopy; ++i) { device.queue.copyImageBitmapToTexture( { imageBitmap: videoFrames[i], origin: { x: 0, y: 0 } }, { texture: videoTextures[i] }, { width: videos[i].videoWidth, height: videos[i].videoHeight, depth: 1 } ); + } + const length = _save_restore_swap_chain ? numVideosToCopy : + videos.length; + for (let i = 0; i < length; ++i) { const firstVertex = i * 6; passEncoder.setBindGroup(0, bindGroups[i]); passEncoder.draw(6, 1, firstVertex, 0); } - // Add UI on Top of (videoRows * videoColumns) videos. + // Add UI on Top of all videos. if (addUI) { passEncoder.setPipeline(pipelineForIcons); passEncoder.setVertexBuffer(0, verticesBufferForIcons); - passEncoder.draw(videos.length * 6); + passEncoder.draw(length * 6); } - passEncoder.endPass(); + + // Backup the canvas for the next frame if the next frame does partial + // update. + if (_save_restore_swap_chain) { + commandEncoder.copyTextureToTexture( + { texture: swapChainTexture }, + { texture: savedSwapChain }, + { width: canvas.width, height: canvas.height, depth: 1 }); + } device.queue.submit([commandEncoder.finish()]); + + frameId++; }); } const oneFrameWithImportTextureApi = () => { - renderPassDescriptor.colorAttachments[0].attachment = swapChain - .getCurrentTexture() + const swapChainTexture = swapChain.getCurrentTexture(); + renderPassDescriptor.colorAttachments[0].attachment = swapChainTexture .createView(); - for (let i = 0; i < videos.length; ++i) { + // These videos are displayed at different fps. Not every video needs to be + // updated in this frame. The videos at lower indices are updated faster + // than videos at higher indices. See GetNumOfVideosToCopyForCurrentFrame() + // for how the videos with different fps are arranged. + const numVideosToCopy = GetNumOfVideosToCopyForCurrentFrame(frameId); + + for (let i = 0; i < numVideosToCopy; ++i) { + // Destroy the textures after submit to promptly recycle resources. + // The textures not being imported here this time are not to be destroyed. + // We still need to render those textures for this frame. + videoTextures[i].destroy(); videoTextures[i] = device.experimentalImportTexture( videos[i], GPUTextureUsage.SAMPLED); } const commandEncoder = device.createCommandEncoder(); + if (_save_restore_swap_chain) { + commandEncoder.copyTextureToTexture( + { texture: savedSwapChain }, + { texture: swapChainTexture }, + { width: canvas.width, height: canvas.height, depth: 1 }); + } const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor); passEncoder.setPipeline(pipeline); passEncoder.setVertexBuffer(0, verticesBuffer); - for (let i = 0; i < videos.length; ++i) { + const length = _save_restore_swap_chain ? numVideosToCopy : videos.length; + for (let i = 0; i < length; ++i) { bindGroups[i] = device.createBindGroup({ layout: pipeline.getBindGroupLayout(0), entries: [ @@ -409,29 +492,31 @@ passEncoder.draw(6, 1, firstVertex, 0); } - // Add UI on Top of (videoRows * videoColumns) videos. + // Add UI on Top of all videos. if (addUI) { passEncoder.setPipeline(pipelineForIcons); passEncoder.setVertexBuffer(0, verticesBufferForIcons); - passEncoder.draw(videos.length * 6); + passEncoder.draw(length * 6); } - passEncoder.endPass(); + + // Backup the canvas for the next frame if the next frame does partial + // update. + if (_save_restore_swap_chain) { + commandEncoder.copyTextureToTexture( + { texture: savedSwapChain }, + { texture: swapChainTexture }, + { width: canvas.width, height: canvas.height, depth: 1 }); + } device.queue.submit([commandEncoder.finish()]); - // Destroy the texture after submit to promptly recycle resources. - for (let i = 0; i < videoTextures.length; ++i) - videoTextures[i].destroy(); + frameId++; } + // Call oneFrame() every 33 milliseconds to simulate 30 fps. if (useImportTextureApi) { - setInterval(oneFrameWithImportTextureApi, 143); + setInterval(oneFrameWithImportTextureApi, 33); } else { - setInterval(oneFrame, 143); + setInterval(oneFrame, 33); } - - // TODO(magchen@): Render frames at different fps. - // 4 videos at 30 fps, oneFrame() should be called every 33 milliseconds. - // 12 videos at 30 fps, oneFrame() should be called 33 milliseconds. - // The rest at 7 fps, oneFrame() should be called 143 milliseconds. }
diff --git a/content/test/data/gpu/vc/webgpu_videos_mxn.html b/content/test/data/gpu/vc/webgpu_videos_mxn.html index da84cc0..74fe92c 100644 --- a/content/test/data/gpu/vc/webgpu_videos_mxn.html +++ b/content/test/data/gpu/vc/webgpu_videos_mxn.html
@@ -58,9 +58,9 @@ const gpuSetting = await webGpuInit(_totalVideoWidth, _totalVideoHeight); if (!gpuSetting) { p.innerHTML = "Webgpu not supported!" + "<br />" + "<br />" + - "Did you forget to add command line switch --enable-unsafe-webgpu ?" + + "Did you forget to add command line switch --enable-unsafe-webgpu --enable-experimental-web-platform-features?" + "<br />" + - " Are you running on the latest build of Canary/Chromium?" + "Are you running on the latest Canary or Chromium build?" return; } @@ -109,6 +109,7 @@ video.loop = true; video.autoplay = true; video.muted = true; + video.display = "none"; video.src = GetVideoSource(videoCount, i); video.width = videoWidth; video.height = videoHeight;
diff --git a/extensions/common/csp_validator.cc b/extensions/common/csp_validator.cc index 9686e16..3ddf1bf 100644 --- a/extensions/common/csp_validator.cc +++ b/extensions/common/csp_validator.cc
@@ -45,8 +45,6 @@ const char kDirectiveSeparator = ';'; -const char kPluginTypes[] = "plugin-types"; - const char kObjectSrcDefaultDirective[] = "object-src 'self';"; const char kScriptSrcDefaultDirective[] = "script-src 'self';"; @@ -58,14 +56,6 @@ const char kAllowSameOriginToken[] = "allow-same-origin"; const char kAllowTopNavigation[] = "allow-top-navigation"; -// This is the list of plugin types which are fully sandboxed and are safe to -// load up in an extension, regardless of the URL they are navigated to. -const char* const kSandboxedPluginTypes[] = { - "application/pdf", - "application/x-google-chrome-pdf", - "application/x-pnacl" -}; - // List of CSP hash-source prefixes that are accepted. Blink is a bit more // lenient, but we only accept standard hashes to be forward-compatible. // http://www.w3.org/TR/2015/CR-CSP2-20150721/#hash_algo @@ -321,37 +311,6 @@ return base::JoinString(sane_csp_parts, " "); } -// Returns true if the |plugin_type| is one of the fully sandboxed plugin types. -bool PluginTypeAllowed(base::StringPiece plugin_type) { - for (size_t i = 0; i < base::size(kSandboxedPluginTypes); ++i) { - if (plugin_type == kSandboxedPluginTypes[i]) - return true; - } - return false; -} - -// Returns true if the policy is allowed to contain an insecure object-src -// directive. This requires OPTIONS_ALLOW_INSECURE_OBJECT_SRC to be specified -// as an option and the plugin-types that can be loaded must be restricted to -// the set specified in kSandboxedPluginTypes. -bool AllowedToHaveInsecureObjectSrc(int options, - const DirectiveList& directives) { - if (!(options & OPTIONS_ALLOW_INSECURE_OBJECT_SRC)) - return false; - - auto it = std::find_if(directives.begin(), directives.end(), - [](const Directive& directive) { - return directive.directive_name == kPluginTypes; - }); - - // plugin-types not specified. - if (it == directives.end()) - return false; - - return std::all_of(it->directive_values.begin(), it->directive_values.end(), - PluginTypeAllowed); -} - using SecureDirectiveValueFunction = base::RepeatingCallback<std::string( const std::string& directive_name, const std::vector<base::StringPiece>& directive_values, @@ -619,9 +578,7 @@ std::vector<InstallWarning>* warnings) { CSPParser csp_parser(policy); - bool allow_insecure_object_src = - AllowedToHaveInsecureObjectSrc(options, csp_parser.directives()); - + bool allow_insecure_object_src = options & OPTIONS_ALLOW_INSECURE_OBJECT_SRC; ExtensionCSPEnforcer csp_enforcer(std::move(manifest_key), allow_insecure_object_src, options); return csp_enforcer.Enforce(csp_parser.directives(), warnings);
diff --git a/extensions/common/csp_validator.h b/extensions/common/csp_validator.h index acc35e7..1c2b442 100644 --- a/extensions/common/csp_validator.h +++ b/extensions/common/csp_validator.h
@@ -29,9 +29,7 @@ // Allows 'unsafe-eval' to be specified as a source in a directive. OPTIONS_ALLOW_UNSAFE_EVAL = 1 << 0, // Allow an object-src to be specified with any sources (i.e. it may contain - // wildcards or http sources). Specifying this requires the CSP to contain - // a plugin-types directive which restricts the plugins that can be loaded - // to those which are fully sandboxed. + // wildcards or http sources). OPTIONS_ALLOW_INSECURE_OBJECT_SRC = 1 << 1, };
diff --git a/extensions/common/csp_validator_unittest.cc b/extensions/common/csp_validator_unittest.cc index f69d378..7e163d3 100644 --- a/extensions/common/csp_validator_unittest.cc +++ b/extensions/common/csp_validator_unittest.cc
@@ -393,41 +393,20 @@ InsecureValueWarning("object-src", "*"))); EXPECT_TRUE(CheckCSP(SanitizeCSP("script-src 'self'; object-src *", OPTIONS_ALLOW_INSECURE_OBJECT_SRC), - "script-src 'self'; object-src;", - InsecureValueWarning("object-src", "*"))); - EXPECT_TRUE(CheckCSP(SanitizeCSP( - "script-src 'self'; object-src *; plugin-types application/pdf;", - OPTIONS_ALLOW_INSECURE_OBJECT_SRC))); - EXPECT_TRUE(CheckCSP(SanitizeCSP("script-src 'self'; object-src *; " - "plugin-types application/x-shockwave-flash", + "script-src 'self'; object-src *;")); + EXPECT_TRUE(CheckCSP( + SanitizeCSP("script-src 'self'; object-src http://www.example.com", + OPTIONS_ALLOW_INSECURE_OBJECT_SRC))); + EXPECT_TRUE(CheckCSP( + SanitizeCSP("object-src http://www.example.com blob:; script-src 'self'", + OPTIONS_ALLOW_INSECURE_OBJECT_SRC))); + EXPECT_TRUE( + CheckCSP(SanitizeCSP("script-src 'self'; object-src http://*.example.com", + OPTIONS_ALLOW_INSECURE_OBJECT_SRC))); + EXPECT_TRUE(CheckCSP(SanitizeCSP("script-src *; object-src *", OPTIONS_ALLOW_INSECURE_OBJECT_SRC), - "script-src 'self'; object-src; " - "plugin-types application/x-shockwave-flash;", - InsecureValueWarning("object-src", "*"))); - EXPECT_TRUE(CheckCSP( - SanitizeCSP("script-src 'self'; object-src *; " - "plugin-types application/x-shockwave-flash application/pdf;", - OPTIONS_ALLOW_INSECURE_OBJECT_SRC), - "script-src 'self'; object-src; " - "plugin-types application/x-shockwave-flash application/pdf;", - InsecureValueWarning("object-src", "*"))); - EXPECT_TRUE(CheckCSP(SanitizeCSP( - "script-src 'self'; object-src http://www.example.com; " - "plugin-types application/pdf;", - OPTIONS_ALLOW_INSECURE_OBJECT_SRC))); - EXPECT_TRUE(CheckCSP(SanitizeCSP( - "object-src http://www.example.com blob:; script-src 'self'; " - "plugin-types application/pdf;", - OPTIONS_ALLOW_INSECURE_OBJECT_SRC))); - EXPECT_TRUE(CheckCSP(SanitizeCSP( - "script-src 'self'; object-src http://*.example.com; " - "plugin-types application/pdf;", - OPTIONS_ALLOW_INSECURE_OBJECT_SRC))); - EXPECT_TRUE(CheckCSP( - SanitizeCSP("script-src *; object-src *; plugin-types application/pdf;", - OPTIONS_ALLOW_INSECURE_OBJECT_SRC), - "script-src; object-src *; plugin-types application/pdf;", - InsecureValueWarning("script-src", "*"))); + "script-src; object-src *", + InsecureValueWarning("script-src", "*"))); EXPECT_TRUE(CheckCSP(SanitizeCSP( "default-src; script-src"
diff --git a/extensions/common/manifest_handlers/csp_info.cc b/extensions/common/manifest_handlers/csp_info.cc index 2b6cb61..3489a2d 100644 --- a/extensions/common/manifest_handlers/csp_info.cc +++ b/extensions/common/manifest_handlers/csp_info.cc
@@ -72,10 +72,7 @@ // Component extensions can specify an insecure object-src directive. This // should be safe because non-NPAPI plugins should load in a sandboxed process - // and only allow communication via postMessage. Flash is an exception since - // it allows scripting into the embedder page, but even then it should - // disallow cross-origin scripting. At some point we may want to consider - // allowing this publicly. + // and only allow communication via postMessage. if (extensions::Manifest::IsComponentLocation(extension->location())) options |= csp_validator::OPTIONS_ALLOW_INSECURE_OBJECT_SRC;
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index 7585e89..29b4305 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -432,9 +432,6 @@ <message name="IDS_IOS_BOOKMARK_NAME_FIELD_HEADER" desc="Title shown above bookmark name field on Edit Bookmark screen. [Length: 20em]"> Name </message> - <message name="IDS_IOS_BOOKMARK_NEW_BACK_LABEL" desc="Accessibility label for a button that takes the user back to the previous screen. [Length: 30em.]"> - Back - </message> <message name="IDS_IOS_BOOKMARK_NEW_BOOKMARKS_BAR_TITLE" desc="Text that describes the bookmarks present in the bookmarks bar for chrome on desktop. [Length: 30em.] [iOS only]"> Bookmarks Bar </message>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb index 2a1bc91..2f11bbb 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_it.xtb
@@ -75,7 +75,7 @@ <translation id="766361182512894255">La tua password è stata compromessa a causa di una violazione dei dati. Chrome consiglia di cambiare subito la password.</translation> <translation id="7698568245838009292">Chrome vorrebbe accedere alla fotocamera</translation> <translation id="7855730255114109580">Google Chrome è aggiornato</translation> -<translation id="8045508249136869751">Per impostare Chrome come browser predefinito, apri le Impostazioni, tocca Default Browser App (App browser predefinita) e seleziona Chrome.</translation> +<translation id="8045508249136869751">Per impostare Chrome come browser predefinito, apri le Impostazioni, tocca App browser predefinita e seleziona Chrome.</translation> <translation id="8160472928944011082">Impossibile aggiornare Chrome</translation> <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC Tutti i diritti riservati.</translation> <translation id="840168496893712993">Alcuni componenti aggiuntivi provocano l'arresto anomalo di Chrome. Prova a disinstallarli.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb index b41dfa7..4966130 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb
@@ -11,7 +11,7 @@ <translation id="2147651015520127414">Chrome, bu web sitesi sertifikasının <ph name="ISSUER" /> tarafından yayınlandığını doğruladı.</translation> <translation id="2199719347983604670">Chrome senkronizasyonundan veriler</translation> <translation id="2347208864470321755">Bu özellik açık durumdayken Chrome, diğer dillerde yazılmış sayfaları Google Çeviri'yi kullanarak çevirmeyi teklif eder. <ph name="BEGIN_LINK" />Daha fazla bilgi edinin<ph name="END_LINK" /></translation> -<translation id="2415682770504543561">Chrome'u Varsayılan Tarayıcınız Yapma</translation> +<translation id="2415682770504543561">Chrome'u Varsayılan Tarayıcınız Yapın</translation> <translation id="2574249610672786438">Chrome kullandığınız her yerde sekmelerinizi görmek için tüm cihazlarınızda oturum açın.</translation> <translation id="2576431527583832481">Chrome daha da iyi hale geldi! Yeni bir sürüm var.</translation> <translation id="257708665678654955">Google Chrome'un bir dahaki sefere bu siteden <ph name="LANGUAGE_NAME" /> dilindeki sayfaları çevirmeyi önermesini ister misiniz?</translation>
diff --git a/ios/chrome/browser/safe_browsing/BUILD.gn b/ios/chrome/browser/safe_browsing/BUILD.gn index 508929b..8fe701d 100644 --- a/ios/chrome/browser/safe_browsing/BUILD.gn +++ b/ios/chrome/browser/safe_browsing/BUILD.gn
@@ -40,6 +40,7 @@ "//build:branding_buildflags", "//components/keyed_service/core", "//components/keyed_service/ios", + "//components/omnibox/common", "//components/password_manager/core/browser", "//components/prefs", "//components/safe_browsing/core:csd_proto", @@ -59,14 +60,17 @@ "//components/security_interstitials/core", "//components/security_interstitials/core:unsafe_resource", "//components/strings:components_strings_grit", + "//components/sync/base", "//components/sync/protocol", "//components/sync_user_events", + "//components/variations/service", "//ios/chrome/browser", "//ios/chrome/browser/browser_state", "//ios/chrome/browser/content_settings", "//ios/chrome/browser/history", "//ios/chrome/browser/net", "//ios/chrome/browser/passwords", + "//ios/chrome/browser/policy", "//ios/chrome/browser/prerender", "//ios/chrome/browser/signin", "//ios/chrome/browser/sync",
diff --git a/ios/chrome/browser/safe_browsing/chrome_password_protection_service.h b/ios/chrome/browser/safe_browsing/chrome_password_protection_service.h index aed8eed..5db78a1d 100644 --- a/ios/chrome/browser/safe_browsing/chrome_password_protection_service.h +++ b/ios/chrome/browser/safe_browsing/chrome_password_protection_service.h
@@ -18,6 +18,7 @@ class ChromeBrowserState; class GURL; class PrefService; +class SafeBrowsingService; namespace password_manager { class PasswordStore; @@ -35,7 +36,8 @@ : public safe_browsing::PasswordProtectionService, public KeyedService { public: - explicit ChromePasswordProtectionService(ChromeBrowserState* browser_state); + ChromePasswordProtectionService(SafeBrowsingService* sb_service, + ChromeBrowserState* browser_state); ~ChromePasswordProtectionService() override; void ShowModalWarning( @@ -136,6 +138,16 @@ bool IsInExcludedCountry() override; // PasswordProtectionService override. + void MaybeStartProtectedPasswordEntryRequest( + web::WebState* web_state, + const GURL& main_frame_url, + const std::string& username, + safe_browsing::PasswordType password_type, + const std::vector<password_manager::MatchingReusedCredential>& + matching_reused_credentials, + bool password_field_exists) override; + + // PasswordProtectionService override. void MaybeLogPasswordReuseLookupEvent( web::WebState* web_state, safe_browsing::RequestOutcome outcome, @@ -178,6 +190,17 @@ std::vector<base::string16> GetPlaceholdersForSavedPasswordWarningText() const; + // Creates, starts, and tracks a new request. + void StartRequest( + web::WebState* web_state, + const GURL& main_frame_url, + const std::string& username, + safe_browsing::PasswordType password_type, + const std::vector<password_manager::MatchingReusedCredential>& + matching_reused_credentials, + safe_browsing::LoginReputationClientRequest::TriggerType trigger_type, + bool password_field_exists); + protected: FRIEND_TEST_ALL_PREFIXES(ChromePasswordProtectionServiceTest, VerifySendsPingForAboutBlank);
diff --git a/ios/chrome/browser/safe_browsing/chrome_password_protection_service.mm b/ios/chrome/browser/safe_browsing/chrome_password_protection_service.mm index b40af94..727694b 100644 --- a/ios/chrome/browser/safe_browsing/chrome_password_protection_service.mm +++ b/ios/chrome/browser/safe_browsing/chrome_password_protection_service.mm
@@ -10,16 +10,29 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "components/keyed_service/core/service_access_type.h" +#include "components/omnibox/common/omnibox_features.h" #include "components/password_manager/core/browser/password_store.h" #include "components/prefs/pref_service.h" #include "components/safe_browsing/core/common/safe_browsing_prefs.h" +#include "components/safe_browsing/core/common/safebrowsing_constants.h" #include "components/safe_browsing/core/features.h" +#include "components/safe_browsing/ios/password_protection/password_protection_request_ios.h" +#include "components/signin/public/identity_manager/identity_manager.h" #include "components/strings/grit/components_strings.h" +#include "components/sync/base/model_type.h" +#include "components/sync/driver/sync_service.h" #include "components/sync/protocol/user_event_specifics.pb.h" #include "components/sync_user_events/user_event_service.h" +#include "components/variations/service/variations_service.h" +#import "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" +#include "ios/chrome/browser/history/history_service_factory.h" #include "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h" +#include "ios/chrome/browser/policy/browser_policy_connector_ios.h" +#import "ios/chrome/browser/safe_browsing/safe_browsing_service.h" +#include "ios/chrome/browser/signin/identity_manager_factory.h" #include "ios/chrome/browser/sync/ios_user_event_service_factory.h" +#include "ios/chrome/browser/sync/profile_sync_service_factory.h" #include "ios/web/public/navigation/navigation_item.h" #include "ios/web/public/navigation/navigation_manager.h" #include "ios/web/public/thread/web_thread.h" @@ -51,7 +64,7 @@ namespace { -// Given a |web_state|, returns a timestemp of its last committed +// Given a |web_state|, returns a timestamp of its last committed // navigation. int64_t GetLastCommittedNavigationTimestamp(web::WebState* web_state) { if (!web_state) @@ -93,8 +106,14 @@ } // namespace ChromePasswordProtectionService::ChromePasswordProtectionService( + SafeBrowsingService* sb_service, ChromeBrowserState* browser_state) - : safe_browsing::PasswordProtectionService(nullptr, nullptr, nullptr), + : safe_browsing::PasswordProtectionService( + sb_service->GetDatabaseManager(), + sb_service->GetURLLoaderFactory(), + ios::HistoryServiceFactory::GetForBrowserState( + browser_state, + ServiceAccessType::EXPLICIT_ACCESS)), browser_state_(browser_state) {} ChromePasswordProtectionService::~ChromePasswordProtectionService() = default; @@ -112,11 +131,11 @@ const std::string& username, PasswordType password_type, bool is_phishing_url) { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Enterprise reporting extension not yet supported in iOS. } void ChromePasswordProtectionService::ReportPasswordChanged() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Enterprise reporting extension not yet supported in iOS. } void ChromePasswordProtectionService::FillReferrerChain( @@ -124,12 +143,12 @@ SessionID event_tab_id, // SessionID::InvalidValue() // if tab not available. LoginReputationClientRequest::Frame* frame) { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Not yet supported in iOS. } void ChromePasswordProtectionService::SanitizeReferrerChain( ReferrerChain* referrer_chain) { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Sample pings not yet supported in iOS. } void ChromePasswordProtectionService::PersistPhishedSavedPasswordCredential( @@ -213,12 +232,12 @@ RemoveUnhandledSyncPasswordReuseOnURLsDeleted( bool all_history, const history::URLRows& deleted_rows) { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Sync password not yet supported in iOS. } bool ChromePasswordProtectionService::UserClickedThroughSBInterstitial( safe_browsing::PasswordProtectionRequest* request) { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Not yet supported in iOS. return false; } @@ -241,38 +260,82 @@ LoginReputationClientRequest::UrlDisplayExperiment ChromePasswordProtectionService::GetUrlDisplayExperiment() const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. safe_browsing::LoginReputationClientRequest::UrlDisplayExperiment experiment; + experiment.set_simplified_url_display_enabled( + base::FeatureList::IsEnabled(safe_browsing::kSimplifiedUrlDisplay)); + // Delayed warnings parameters: + experiment.set_delayed_warnings_enabled( + base::FeatureList::IsEnabled(safe_browsing::kDelayedWarnings)); + experiment.set_delayed_warnings_mouse_clicks_enabled( + safe_browsing::kDelayedWarningsEnableMouseClicks.Get()); + // Actual URL display experiments: + experiment.set_reveal_on_hover(base::FeatureList::IsEnabled( + omnibox::kRevealSteadyStateUrlPathQueryAndRefOnHover)); + experiment.set_hide_on_interaction(base::FeatureList::IsEnabled( + omnibox::kHideSteadyStateUrlPathQueryAndRefOnInteraction)); + experiment.set_elide_to_registrable_domain( + base::FeatureList::IsEnabled(omnibox::kMaybeElideToRegistrableDomain)); return experiment; } const policy::BrowserPolicyConnector* ChromePasswordProtectionService::GetBrowserPolicyConnector() const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return nullptr; + return GetApplicationContext()->GetBrowserPolicyConnector(); } AccountInfo ChromePasswordProtectionService::GetAccountInfo() const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return AccountInfo(); + signin::IdentityManager* identity_manager = + IdentityManagerFactory::GetForBrowserState(browser_state_); + if (!identity_manager) + return AccountInfo(); + base::Optional<AccountInfo> primary_account_info = + identity_manager->FindExtendedAccountInfoForAccountWithRefreshToken( + identity_manager->GetPrimaryAccountInfo()); + return primary_account_info.value_or(AccountInfo()); } AccountInfo ChromePasswordProtectionService::GetSignedInNonSyncAccount( const std::string& username) const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return AccountInfo(); + auto* identity_manager = + IdentityManagerFactory::GetForBrowserState(browser_state_); + if (!identity_manager) + return AccountInfo(); + std::vector<CoreAccountInfo> signed_in_accounts = + identity_manager->GetAccountsWithRefreshTokens(); + auto account_iterator = + std::find_if(signed_in_accounts.begin(), signed_in_accounts.end(), + [username](const auto& account) { + return password_manager::AreUsernamesSame( + account.email, + /*is_username1_gaia_account=*/true, username, + /*is_username2_gaia_account=*/true); + }); + if (account_iterator == signed_in_accounts.end()) + return AccountInfo(); + + return identity_manager + ->FindExtendedAccountInfoForAccountWithRefreshToken(*account_iterator) + .value_or(AccountInfo()); } LoginReputationClientRequest::PasswordReuseEvent::SyncAccountType ChromePasswordProtectionService::GetSyncAccountType() const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return PasswordReuseEvent::NOT_SIGNED_IN; + const AccountInfo account_info = GetAccountInfo(); + if (!IsPrimaryAccountSignedIn()) { + return PasswordReuseEvent::NOT_SIGNED_IN; + } + + // For gmail or googlemail account, the hosted_domain will always be + // kNoHostedDomainFound. + return account_info.hosted_domain == kNoHostedDomainFound + ? PasswordReuseEvent::GMAIL + : PasswordReuseEvent::GSUITE; } bool ChromePasswordProtectionService::CanShowInterstitial( ReusedPasswordAccountType password_type, const GURL& main_frame_url) { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Not yet supported in iOS. return false; } @@ -281,7 +344,7 @@ if (!browser_state_) return false; - PrefService* prefs = browser_state_->GetPrefs(); + PrefService* prefs = GetPrefs(); return safe_browsing::IsURLAllowlistedByPolicy(url, *prefs) || safe_browsing::MatchesPasswordProtectionChangePasswordURL(url, *prefs) || @@ -295,7 +358,7 @@ } bool ChromePasswordProtectionService::CanSendSamplePing() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Sample pings not yet enabled in iOS. return false; } @@ -315,54 +378,95 @@ } bool ChromePasswordProtectionService::IsIncognito() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return false; + return browser_state_->IsOffTheRecord(); } bool ChromePasswordProtectionService::IsExtendedReporting() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Not yet supported in iOS. return false; } bool ChromePasswordProtectionService::IsEnhancedProtection() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Not yet supported in iOS. return false; } bool ChromePasswordProtectionService::IsUserMBBOptedIn() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. + // Not yet supported in iOS. return false; } bool ChromePasswordProtectionService::IsHistorySyncEnabled() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return false; + syncer::SyncService* sync = + ProfileSyncServiceFactory::GetForBrowserState(browser_state_); + return sync && sync->IsSyncFeatureActive() && !sync->IsLocalSyncEnabled() && + sync->GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES); } bool ChromePasswordProtectionService::IsPrimaryAccountSyncing() const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return false; + syncer::SyncService* sync = + ProfileSyncServiceFactory::GetForBrowserState(browser_state_); + return sync && sync->IsSyncFeatureActive() && !sync->IsLocalSyncEnabled(); } bool ChromePasswordProtectionService::IsPrimaryAccountSignedIn() const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return true; + return !GetAccountInfo().account_id.empty() && + !GetAccountInfo().hosted_domain.empty(); } bool ChromePasswordProtectionService::IsPrimaryAccountGmail() const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return false; + return GetAccountInfo().hosted_domain == kNoHostedDomainFound; } bool ChromePasswordProtectionService::IsOtherGaiaAccountGmail( const std::string& username) const { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return false; + return GetSignedInNonSyncAccount(username).hosted_domain == + kNoHostedDomainFound; } bool ChromePasswordProtectionService::IsInExcludedCountry() { - // TODO(crbug.com/1147967): Complete PhishGuard iOS implementation. - return false; + variations::VariationsService* variations_service = + GetApplicationContext()->GetVariationsService(); + if (!variations_service) + return false; + return base::Contains(safe_browsing::GetExcludedCountries(), + variations_service->GetStoredPermanentCountry()); +} + +void ChromePasswordProtectionService::MaybeStartProtectedPasswordEntryRequest( + web::WebState* web_state, + const GURL& main_frame_url, + const std::string& username, + PasswordType password_type, + const std::vector<password_manager::MatchingReusedCredential>& + matching_reused_credentials, + bool password_field_exists) { + DCHECK_CURRENTLY_ON(web::WebThread::UI); + + LoginReputationClientRequest::TriggerType trigger_type = + LoginReputationClientRequest::PASSWORD_REUSE_EVENT; + ReusedPasswordAccountType reused_password_account_type = + GetPasswordProtectionReusedPasswordAccountType(password_type, username); + + if (IsSupportedPasswordTypeForPinging(password_type)) { + if (CanSendPing(LoginReputationClientRequest::PASSWORD_REUSE_EVENT, + main_frame_url, reused_password_account_type)) { + saved_passwords_matching_reused_credentials_ = + matching_reused_credentials; + StartRequest(web_state, main_frame_url, username, password_type, + matching_reused_credentials, + LoginReputationClientRequest::PASSWORD_REUSE_EVENT, + password_field_exists); + } else { + RequestOutcome reason = GetPingNotSentReason( + trigger_type, main_frame_url, reused_password_account_type); + LogNoPingingReason(trigger_type, reason, reused_password_account_type); + + if (reused_password_account_type.is_account_syncing()) + MaybeLogPasswordReuseLookupEvent(web_state, reason, password_type, + nullptr); + } + } } void ChromePasswordProtectionService::MaybeLogPasswordReuseLookupEvent( @@ -523,6 +627,25 @@ return placeholders; } +void ChromePasswordProtectionService::StartRequest( + web::WebState* web_state, + const GURL& main_frame_url, + const std::string& username, + PasswordType password_type, + const std::vector<password_manager::MatchingReusedCredential>& + matching_reused_credentials, + LoginReputationClientRequest::TriggerType trigger_type, + bool password_field_exists) { + DCHECK_CURRENTLY_ON(web::WebThread::UI); + scoped_refptr<safe_browsing::PasswordProtectionRequest> request( + new safe_browsing::PasswordProtectionRequestIOS( + web_state, main_frame_url, web_state->GetContentsMimeType(), username, + password_type, matching_reused_credentials, trigger_type, + password_field_exists, this, GetRequestTimeoutInMS())); + request->Start(); + pending_requests_.insert(std::move(request)); +} + password_manager::PasswordStore* ChromePasswordProtectionService::GetStoreForReusedCredential( const password_manager::MatchingReusedCredential& reused_credential) {
diff --git a/ios/chrome/browser/safe_browsing/chrome_password_protection_service_factory.mm b/ios/chrome/browser/safe_browsing/chrome_password_protection_service_factory.mm index 7584a03..2f2249d8 100644 --- a/ios/chrome/browser/safe_browsing/chrome_password_protection_service_factory.mm +++ b/ios/chrome/browser/safe_browsing/chrome_password_protection_service_factory.mm
@@ -5,11 +5,15 @@ #import "ios/chrome/browser/safe_browsing/chrome_password_protection_service_factory.h" #include "components/keyed_service/ios/browser_state_dependency_manager.h" +#import "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/browser_state/browser_state_otr_helper.h" #import "ios/chrome/browser/browser_state/chrome_browser_state.h" +#include "ios/chrome/browser/history/history_service_factory.h" #include "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h" #import "ios/chrome/browser/safe_browsing/chrome_password_protection_service.h" +#import "ios/chrome/browser/signin/identity_manager_factory.h" #include "ios/chrome/browser/sync/ios_user_event_service_factory.h" +#import "ios/chrome/browser/sync/profile_sync_service_factory.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -34,17 +38,25 @@ : BrowserStateKeyedServiceFactory( "ChromePasswordProtectionService", BrowserStateDependencyManager::GetInstance()) { + DependsOn(IdentityManagerFactory::GetInstance()); DependsOn(IOSChromePasswordStoreFactory::GetInstance()); DependsOn(IOSUserEventServiceFactory::GetInstance()); + DependsOn(ProfileSyncServiceFactory::GetInstance()); + DependsOn(ios::HistoryServiceFactory::GetInstance()); } std::unique_ptr<KeyedService> ChromePasswordProtectionServiceFactory::BuildServiceInstanceFor( web::BrowserState* browser_state) const { + SafeBrowsingService* safe_browsing_service = + GetApplicationContext()->GetSafeBrowsingService(); + if (!safe_browsing_service) { + return nullptr; + } ChromeBrowserState* chrome_browser_state = ChromeBrowserState::FromBrowserState(browser_state); return std::make_unique<ChromePasswordProtectionService>( - chrome_browser_state); + safe_browsing_service, chrome_browser_state); } bool ChromePasswordProtectionServiceFactory::ServiceIsCreatedWithBrowserState()
diff --git a/ios/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.mm b/ios/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.mm index 0a49c49..f3644719 100644 --- a/ios/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.mm +++ b/ios/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.mm
@@ -26,6 +26,7 @@ #include "components/sync_user_events/fake_user_event_service.h" #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" #include "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h" +#include "ios/chrome/browser/safe_browsing/fake_safe_browsing_service.h" #include "ios/chrome/browser/sync/ios_user_event_service_factory.h" #import "ios/chrome/browser/web/chrome_web_test.h" #include "ios/web/public/navigation/referrer.h" @@ -85,8 +86,9 @@ : public ChromePasswordProtectionService { public: explicit FakeChromePasswordProtectionService( - TestChromeBrowserState* browser_state) - : ChromePasswordProtectionService(browser_state), + SafeBrowsingService* sb_service, + ChromeBrowserState* browser_state) + : ChromePasswordProtectionService(sb_service, browser_state), is_incognito_(false), is_account_signed_in_(false), is_no_hosted_domain_found_(false) {} @@ -118,8 +120,10 @@ class ChromePasswordProtectionServiceTest : public ChromeWebTest { public: ChromePasswordProtectionServiceTest() : ChromeWebTest() { + safe_browsing_service_ = base::MakeRefCounted<FakeSafeBrowsingService>(); + service_ = std::make_unique<FakeChromePasswordProtectionService>( - chrome_browser_state_.get()); + safe_browsing_service_.get(), chrome_browser_state_.get()); auto navigation_manager = std::make_unique<web::FakeNavigationManager>(); fake_navigation_manager_ = navigation_manager.get(); @@ -176,6 +180,7 @@ } protected: + scoped_refptr<SafeBrowsingService> safe_browsing_service_; std::unique_ptr<FakeChromePasswordProtectionService> service_; web::FakeWebState fake_web_state_; web::FakeNavigationManager* fake_navigation_manager_;
diff --git a/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.h b/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.h index a16f360..4b1e32b 100644 --- a/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.h +++ b/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.h
@@ -33,6 +33,8 @@ web::WebState* web_state) override; bool CanCheckUrl(const GURL& url) const override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; + scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> GetDatabaseManager() + override; void ClearCookies(const net::CookieDeletionInfo::TimeRange& creation_range, base::OnceClosure callback) override;
diff --git a/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.mm b/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.mm index c3c9027..46f9159 100644 --- a/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.mm +++ b/ios/chrome/browser/safe_browsing/fake_safe_browsing_service.mm
@@ -87,6 +87,11 @@ &url_loader_factory_); } +scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> +FakeSafeBrowsingService::GetDatabaseManager() { + return nil; +} + void FakeSafeBrowsingService::ClearCookies( const net::CookieDeletionInfo::TimeRange& creation_range, base::OnceClosure callback) {
diff --git a/ios/chrome/browser/safe_browsing/safe_browsing_service.h b/ios/chrome/browser/safe_browsing/safe_browsing_service.h index 9ab90eda..2c327d3 100644 --- a/ios/chrome/browser/safe_browsing/safe_browsing_service.h +++ b/ios/chrome/browser/safe_browsing/safe_browsing_service.h
@@ -22,6 +22,7 @@ } namespace safe_browsing { +class SafeBrowsingDatabaseManager; class SafeBrowsingUrlCheckerImpl; } // namespace safe_browsing @@ -60,6 +61,10 @@ virtual scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() = 0; + // Returns the SafeBrowsingDatabaseManager owned by this service. + virtual scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> + GetDatabaseManager() = 0; + // Clears cookies if the given deletion time range is for "all time". Calls // the given |callback| once deletion is complete. virtual void ClearCookies(
diff --git a/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.h b/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.h index eb4de41d..340f8726 100644 --- a/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.h +++ b/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.h
@@ -45,6 +45,8 @@ web::WebState* web_state) override; bool CanCheckUrl(const GURL& url) const override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; + scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> GetDatabaseManager() + override; void ClearCookies(const net::CookieDeletionInfo::TimeRange& creation_range, base::OnceClosure callback) override;
diff --git a/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.mm b/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.mm index 4ec212a9..485254af 100644 --- a/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.mm +++ b/ios/chrome/browser/safe_browsing/safe_browsing_service_impl.mm
@@ -132,6 +132,11 @@ return shared_url_loader_factory_; } +scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> +SafeBrowsingServiceImpl::GetDatabaseManager() { + return safe_browsing_db_manager_; +} + void SafeBrowsingServiceImpl::ClearCookies( const net::CookieDeletionInfo::TimeRange& creation_range, base::OnceClosure callback) {
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm index 832c140..63c1bbe 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm
@@ -210,16 +210,6 @@ self.navigationItem.leftBarButtonItem = cancelItem; [self addToolbar]; - } else { - // Add Back button. - UIBarButtonItem* backItem = - [ChromeIcon templateBarButtonItemWithImage:[ChromeIcon backIcon] - target:self - action:@selector(dismiss)]; - backItem.accessibilityLabel = - l10n_util::GetNSString(IDS_IOS_BOOKMARK_NEW_BACK_LABEL); - backItem.accessibilityIdentifier = @"Back"; - self.navigationItem.leftBarButtonItem = backItem; } [self updateEditingState]; [self setupCollectionViewModel];
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm index f2f50e3..7c0ecc7 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm
@@ -170,17 +170,7 @@ action:@selector(cancel:)]; cancelItem.accessibilityIdentifier = @"Cancel"; self.navigationItem.leftBarButtonItem = cancelItem; - } else { - UIBarButtonItem* backItem = - [ChromeIcon templateBarButtonItemWithImage:[ChromeIcon backIcon] - target:self - action:@selector(back:)]; - backItem.accessibilityLabel = - l10n_util::GetNSString(IDS_IOS_BOOKMARK_NEW_BACK_LABEL); - backItem.accessibilityIdentifier = @"Back"; - self.navigationItem.leftBarButtonItem = backItem; } - // Configure the table view. self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; @@ -383,10 +373,6 @@ [self.delegate folderPickerDidCancel:self]; } -- (void)back:(id)sender { - [self.delegate folderPickerDidCancel:self]; -} - #pragma mark - Private - (BOOL)shouldShowDefaultSection {
diff --git a/ios/chrome/browser/ui/settings/BUILD.gn b/ios/chrome/browser/ui/settings/BUILD.gn index f61764f..f4c10b5e 100644 --- a/ios/chrome/browser/ui/settings/BUILD.gn +++ b/ios/chrome/browser/ui/settings/BUILD.gn
@@ -23,6 +23,7 @@ "//ios/chrome/browser/ui/settings/cells:public", "//ios/chrome/browser/ui/table_view", "//ios/chrome/browser/ui/table_view:styler", + "//ios/chrome/browser/ui/table_view:utils", "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@2x.png b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@2x.png index 68ef40d9..bc1d074 100644 --- a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@2x.png +++ b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@2x.png Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@3x.png b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@3x.png index 246cefde..c2ae547 100644 --- a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@3x.png +++ b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_error.imageset/sync_and_google_services_sync_error@3x.png Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@2x.png b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@2x.png index b51d8cc2..a49e699c 100644 --- a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@2x.png +++ b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@2x.png Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@3x.png b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@3x.png index beab667..1a187e2 100644 --- a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@3x.png +++ b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_off.imageset/sync_and_google_services_sync_off@3x.png Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@2x.png b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@2x.png index 385dee3e..fe2df50 100644 --- a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@2x.png +++ b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@2x.png Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@3x.png b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@3x.png index c14dcbc0..1156b89 100644 --- a/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@3x.png +++ b/ios/chrome/browser/ui/settings/resources/sync_and_google_services_sync_on.imageset/sync_and_google_services_sync_on@3x.png Binary files differ
diff --git a/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm b/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm index f20c692..d3ed6cc 100644 --- a/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_root_table_view_controller.mm
@@ -13,6 +13,7 @@ #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" #import "ios/chrome/browser/ui/settings/settings_root_table_constants.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h" +#import "ios/chrome/browser/ui/table_view/table_view_utils.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" @@ -197,7 +198,7 @@ heightForHeaderInSection:(NSInteger)section { if ([self.tableViewModel headerForSection:section]) return UITableViewAutomaticDimension; - return kDefaultHeaderFooterHeight; + return ChromeTableViewHeightForHeaderInSection(section); } - (CGFloat)tableView:(UITableView*)tableView
diff --git a/ios/chrome/browser/ui/table_view/table_view_utils.h b/ios/chrome/browser/ui/table_view/table_view_utils.h index ecda7866..09346a860 100644 --- a/ios/chrome/browser/ui/table_view/table_view_utils.h +++ b/ios/chrome/browser/ui/table_view/table_view_utils.h
@@ -10,4 +10,9 @@ // Returns an UITableViewStyle according to the width of the current device. UITableViewStyle ChromeTableViewStyle(); +// Returns a header height according to the given section. +// The returned size for the first section is bigger because it's used as +// padding between the first cell and the navigation bar. +CGFloat ChromeTableViewHeightForHeaderInSection(NSInteger section); + #endif // IOS_CHROME_BROWSER_UI_TABLE_VIEW_TABLE_VIEW_UTILS_H_
diff --git a/ios/chrome/browser/ui/table_view/table_view_utils.mm b/ios/chrome/browser/ui/table_view/table_view_utils.mm index 4d180ed..38486da 100644 --- a/ios/chrome/browser/ui/table_view/table_view_utils.mm +++ b/ios/chrome/browser/ui/table_view/table_view_utils.mm
@@ -11,6 +11,16 @@ #error "This file requires ARC support." #endif +namespace { + +// Header height used as a pading between the first cell and the navigation bar. +const CGFloat kFirstHeaderHeight = 25.0; + +// Default header Height when none is set. +const CGFloat kDefaultHeaderHeight = 10; + +} // namespace + UITableViewStyle ChromeTableViewStyle() { if (@available(iOS 13, *)) { if (base::FeatureList::IsEnabled(kSettingsRefresh) && !IsSmallDevice()) @@ -18,3 +28,11 @@ } return UITableViewStyleGrouped; } + +CGFloat ChromeTableViewHeightForHeaderInSection(NSInteger section) { + if (@available(iOS 13, *)) { + if (base::FeatureList::IsEnabled(kSettingsRefresh) && section == 0) + return kFirstHeaderHeight; + } + return kDefaultHeaderHeight; +}
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.mm b/ios/chrome/test/earl_grey/chrome_earl_grey.mm index 4c3eaed..c3a47b2 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
@@ -979,8 +979,8 @@ - (void)waitForIncognitoTabCount:(NSUInteger)count inWindowWithNumber:(int)windowNumber { - __block NSUInteger actualCount = - [ChromeEarlGreyAppInterface mainTabCountInWindowWithNumber:windowNumber]; + __block NSUInteger actualCount = [ChromeEarlGreyAppInterface + incognitoTabCountInWindowWithNumber:windowNumber]; NSString* conditionName = [NSString stringWithFormat: @"Failed waiting for incognito tab count to become %" PRIuNS
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 index d081488d..14b63e8 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -cc1ae3b752b97191e19d2e4d7ab25b7b318bb42e \ No newline at end of file +9eb6cc47783fd80e6ef8530be9321a3317a4587b \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 index 354de70..70443fc 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -bd34b10a2b3c387cfba4faa855fd30c42410b617 \ No newline at end of file +ad0e32decf9d058b12a3af5707b732cc3853f157 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 index 6cdc8ec..424ebb34 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -b201a526d008461a2dc14664e874a6b852f81d45 \ No newline at end of file +be442284bdde0159b3f94ebf0493498b2a41028e \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 index 44036741..b49032ac 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -ecb04848c777b30975232b24e3139ef941f8b810 \ No newline at end of file +07ecb67d5fe0affbed30c3436235fe752b508199 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 index a1d6c59..539630b 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -0be4694310f67b620c5d578dd8a70bce8af4b503 \ No newline at end of file +57cfe183347cc5e5ffea5563042aa0a7c75aade9 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 index 01e4443..71afe2b 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -7f4306a40ba90ad2b28a35401432f725befc7147 \ No newline at end of file +bdbec3f32e10f4797b6afba1684314b36c894d62 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 index 0cfae55..20b6dd2 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -1b245ff90aa3d55a4264af24191235f2b8fbb509 \ No newline at end of file +0c614477fe14cb0c004ff64fd725659f6676a403 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 index 3dc65a56..253c1e0 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -b281d533981e6a27c7c9f26e54fd95e1429ac667 \ No newline at end of file +0d21dbf91f0eb0701d8de2ae16191a3cf928aa18 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 index 9383421..f0c3f64 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -ad1902081171a8b89e72ad529b77d2f40d0ac06f \ No newline at end of file +b3ef33bb678c8428a0175bbf0064c2fcb02e6c57 \ No newline at end of file
diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc index f312861..4e1a1ec 100644 --- a/media/blink/webmediaplayer_impl_unittest.cc +++ b/media/blink/webmediaplayer_impl_unittest.cc
@@ -2298,7 +2298,8 @@ EXPECT_EQ(should_pause, ShouldPausePlaybackWhenHidden()); } -TEST_P(WebMediaPlayerImplBackgroundBehaviorTest, AudioVideo) { +// TODO(crbug.com/1177112) Re-enable test +TEST_P(WebMediaPlayerImplBackgroundBehaviorTest, DISABLED_AudioVideo) { SetMetadata(true, true); // Optimization requirements are the same for all platforms.
diff --git a/media/capture/video_capture_types.cc b/media/capture/video_capture_types.cc index bbee389d..36db929 100644 --- a/media/capture/video_capture_types.cc +++ b/media/capture/video_capture_types.cc
@@ -30,12 +30,12 @@ pixel_format(pixel_format) {} bool VideoCaptureFormat::IsValid() const { - return (frame_size.width() < media::limits::kMaxDimension) && - (frame_size.height() < media::limits::kMaxDimension) && + return (frame_size.width() <= media::limits::kMaxDimension) && + (frame_size.height() <= media::limits::kMaxDimension) && (frame_size.GetArea() >= 0) && - (frame_size.GetArea() < media::limits::kMaxCanvas) && + (frame_size.GetArea() <= media::limits::kMaxCanvas) && (frame_rate >= 0.0f) && - (frame_rate < media::limits::kMaxFramesPerSecond) && + (frame_rate <= media::limits::kMaxFramesPerSecond) && (pixel_format >= PIXEL_FORMAT_UNKNOWN && pixel_format <= PIXEL_FORMAT_MAX); }
diff --git a/mojo/public/cpp/bindings/BUILD.gn b/mojo/public/cpp/bindings/BUILD.gn index af1b7eb..2d12244 100644 --- a/mojo/public/cpp/bindings/BUILD.gn +++ b/mojo/public/cpp/bindings/BUILD.gn
@@ -64,6 +64,7 @@ "lib/map_serialization.h", "lib/may_auto_lock.h", "lib/message.cc", + "lib/message_fragment.h", "lib/message_header_validator.cc", "lib/message_internal.cc", "lib/message_internal.h",
diff --git a/mojo/public/cpp/bindings/lib/array_internal.h b/mojo/public/cpp/bindings/lib/array_internal.h index cb8c5b30..e59a0e8 100644 --- a/mojo/public/cpp/bindings/lib/array_internal.h +++ b/mojo/public/cpp/bindings/lib/array_internal.h
@@ -17,7 +17,7 @@ #include "mojo/public/c/system/macros.h" #include "mojo/public/cpp/bindings/lib/bindings_internal.h" #include "mojo/public/cpp/bindings/lib/buffer.h" -#include "mojo/public/cpp/bindings/lib/serialization_util.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/template_util.h" #include "mojo/public/cpp/bindings/lib/validate_params.h" #include "mojo/public/cpp/bindings/lib/validation_context.h" @@ -47,12 +47,10 @@ using ConstRef = const T&; static const uint32_t kMaxNumElements = - (std::numeric_limits<uint32_t>::max() - sizeof(ArrayHeader)) / - sizeof(StorageType); + MessageFragmentArrayTraits<T>::kMaxNumElements; static uint32_t GetStorageSize(uint32_t num_elements) { - DCHECK(num_elements <= kMaxNumElements); - return sizeof(ArrayHeader) + sizeof(StorageType) * num_elements; + return MessageFragmentArrayTraits<T>::GetStorageSize(num_elements); } static Ref ToRef(StorageType* storage, size_t offset) { return storage[offset]; @@ -88,14 +86,14 @@ // Because each element consumes only 1/8 byte. static const uint32_t kMaxNumElements = - std::numeric_limits<uint32_t>::max() - 7; + MessageFragmentArrayTraits<bool>::kMaxNumElements; using StorageType = uint8_t; using Ref = BitRef; using ConstRef = bool; static uint32_t GetStorageSize(uint32_t num_elements) { - return sizeof(ArrayHeader) + ((num_elements + 7) / 8); + return MessageFragmentArrayTraits<bool>::GetStorageSize(num_elements); } static BitRef ToRef(StorageType* storage, size_t offset) { return BitRef(&storage[offset / 8], 1 << (offset % 8)); @@ -279,36 +277,6 @@ std::is_same<T, Handle_Data>::value>; using Element = T; - class BufferWriter { - public: - BufferWriter() = default; - - void Allocate(size_t num_elements, Buffer* buffer) { - if (num_elements > Traits::kMaxNumElements) - return; - - uint32_t num_bytes = - Traits::GetStorageSize(static_cast<uint32_t>(num_elements)); - buffer_ = buffer; - index_ = buffer_->Allocate(num_bytes); - new (data()) - Array_Data<T>(num_bytes, static_cast<uint32_t>(num_elements)); - } - - bool is_null() const { return !buffer_; } - Array_Data<T>* data() { - DCHECK(!is_null()); - return buffer_->Get<Array_Data<T>>(index_); - } - Array_Data<T>* operator->() { return data(); } - - private: - Buffer* buffer_ = nullptr; - size_t index_ = 0; - - DISALLOW_COPY_AND_ASSIGN(BufferWriter); - }; - static bool Validate(const void* data, ValidationContext* validation_context, const ContainerValidateParams* validate_params) { @@ -376,6 +344,8 @@ } private: + friend class MessageFragment<Array_Data>; + Array_Data(uint32_t num_bytes, uint32_t num_elements) { header_.num_bytes = num_bytes; header_.num_elements = num_elements;
diff --git a/mojo/public/cpp/bindings/lib/array_serialization.h b/mojo/public/cpp/bindings/lib/array_serialization.h index ce5f918..a0966ec0 100644 --- a/mojo/public/cpp/bindings/lib/array_serialization.h +++ b/mojo/public/cpp/bindings/lib/array_serialization.h
@@ -16,6 +16,7 @@ #include "base/logging.h" #include "mojo/public/cpp/bindings/array_data_view.h" #include "mojo/public/cpp/bindings/lib/array_internal.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization_forward.h" #include "mojo/public/cpp/bindings/lib/template_util.h" #include "mojo/public/cpp/bindings/lib/validation_errors.h" @@ -115,7 +116,6 @@ using DataElement = typename Data::Element; using Element = typename MojomType::Element; using Traits = ArrayTraits<UserType>; - using BufferWriter = typename Data::BufferWriter; static_assert(std::is_same<Element, DataElement>::value, "Incorrect array serializer"); @@ -125,10 +125,10 @@ typename std::remove_const<typename Traits::Element>::type>::value, "Incorrect array serializer"); - static void SerializeElements(UserTypeIterator* input, - BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + static void SerializeElements( + UserTypeIterator* input, + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { DCHECK(!validate_params->element_is_nullable) << "Primitive type should be non-nullable"; DCHECK(!validate_params->element_validate_params) @@ -139,7 +139,7 @@ return; auto data = input->GetDataIfExists(); - Data* output = writer->data(); + Data* output = fragment.data(); if (data) { memcpy(output->storage(), data, size * sizeof(DataElement)); } else { @@ -182,21 +182,20 @@ using DataElement = typename Data::Element; using Element = typename MojomType::Element; using Traits = ArrayTraits<UserType>; - using BufferWriter = typename Data::BufferWriter; static_assert(sizeof(Element) == sizeof(DataElement), "Incorrect array serializer"); - static void SerializeElements(UserTypeIterator* input, - BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + static void SerializeElements( + UserTypeIterator* input, + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { DCHECK(!validate_params->element_is_nullable) << "Primitive type should be non-nullable"; DCHECK(!validate_params->element_validate_params) << "Primitive type should not have array validate params"; - Data* output = writer->data(); + Data* output = fragment.data(); size_t size = input->GetSize(); for (size_t i = 0; i < size; ++i) Serialize<Element>(input->GetNext(), output->storage() + i); @@ -229,21 +228,20 @@ using UserType = typename std::remove_const<MaybeConstUserType>::type; using Traits = ArrayTraits<UserType>; using Data = typename MojomTypeTraits<MojomType>::Data; - using BufferWriter = typename Data::BufferWriter; static_assert(std::is_same<bool, typename Traits::Element>::value, "Incorrect array serializer"); - static void SerializeElements(UserTypeIterator* input, - BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + static void SerializeElements( + UserTypeIterator* input, + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { DCHECK(!validate_params->element_is_nullable) << "Primitive type should be non-nullable"; DCHECK(!validate_params->element_validate_params) << "Primitive type should not have array validate params"; - Data* output = writer->data(); + Data* output = fragment.data(); size_t size = input->GetSize(); for (size_t i = 0; i < size; ++i) output->at(i) = input->GetNext(); @@ -278,20 +276,19 @@ using Data = typename MojomTypeTraits<MojomType>::Data; using Element = typename MojomType::Element; using Traits = ArrayTraits<UserType>; - using BufferWriter = typename Data::BufferWriter; - static void SerializeElements(UserTypeIterator* input, - BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + static void SerializeElements( + UserTypeIterator* input, + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { DCHECK(!validate_params->element_validate_params) << "Handle or interface type should not have array validate params"; - Data* output = writer->data(); + Data* output = fragment.data(); size_t size = input->GetSize(); for (size_t i = 0; i < size; ++i) { typename UserTypeIterator::GetNextResult next = input->GetNext(); - Serialize<Element>(next, &output->at(i), message); + Serialize<Element>(next, &output->at(i), &fragment.message()); static const ValidationError kError = BelongsTo<Element, @@ -339,26 +336,23 @@ using UserType = typename std::remove_const<MaybeConstUserType>::type; using Data = typename MojomTypeTraits<MojomType>::Data; using Element = typename MojomType::Element; - using DataElementWriter = - typename MojomTypeTraits<Element>::Data::BufferWriter; + using ElementData = typename MojomTypeTraits<Element>::Data; using Traits = ArrayTraits<UserType>; - using BufferWriter = typename Data::BufferWriter; - static void SerializeElements(UserTypeIterator* input, - BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + static void SerializeElements( + UserTypeIterator* input, + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { size_t size = input->GetSize(); for (size_t i = 0; i < size; ++i) { - DataElementWriter data_writer; + MessageFragment<ElementData> data_fragment(fragment.message()); typename UserTypeIterator::GetNextResult next = input->GetNext(); - SerializeCaller<Element>::Run(next, &data_writer, - validate_params->element_validate_params, - message); - writer->data()->at(i).Set(data_writer.is_null() ? nullptr - : data_writer.data()); + SerializeCaller<Element>::Run(next, data_fragment, + validate_params->element_validate_params); + fragment->at(i).Set(data_fragment.is_null() ? nullptr + : data_fragment.data()); MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( - !validate_params->element_is_nullable && data_writer.is_null(), + !validate_params->element_is_nullable && data_fragment.is_null(), VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, MakeMessageWithArrayIndex("null in array expecting valid pointers", size, i)); @@ -386,10 +380,9 @@ struct SerializeCaller { template <typename InputElementType> static void Run(InputElementType&& input, - DataElementWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { - Serialize<T>(std::forward<InputElementType>(input), writer, message); + MessageFragment<ElementData>& fragment, + const ContainerValidateParams* validate_params) { + Serialize<T>(std::forward<InputElementType>(input), fragment); } }; @@ -397,11 +390,10 @@ struct SerializeCaller<T, true> { template <typename InputElementType> static void Run(InputElementType&& input, - DataElementWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { - Serialize<T>(std::forward<InputElementType>(input), writer, - validate_params, message); + MessageFragment<ElementData>& fragment, + const ContainerValidateParams* validate_params) { + Serialize<T>(std::forward<InputElementType>(input), fragment, + validate_params); } }; }; @@ -419,24 +411,22 @@ using UserType = typename std::remove_const<MaybeConstUserType>::type; using Data = typename MojomTypeTraits<MojomType>::Data; using Element = typename MojomType::Element; - using ElementWriter = typename Data::Element::BufferWriter; + using DataElement = typename Data::Element; using Traits = ArrayTraits<UserType>; - using BufferWriter = typename Data::BufferWriter; - static void SerializeElements(UserTypeIterator* input, - BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + static void SerializeElements( + UserTypeIterator* input, + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { size_t size = input->GetSize(); for (size_t i = 0; i < size; ++i) { - ElementWriter result; - result.AllocateInline(message->payload_buffer(), - writer->data()->storage() + i); + MessageFragment<DataElement> inlined_union_element(fragment.message()); + inlined_union_element.Claim(fragment->storage() + i); typename UserTypeIterator::GetNextResult next = input->GetNext(); - Serialize<Element>(next, &result, true, message); + Serialize<Element>(next, inlined_union_element, true); MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( !validate_params->element_is_nullable && - writer->data()->at(i).is_null(), + inlined_union_element.is_null(), VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, MakeMessageWithArrayIndex("null in array expecting valid unions", size, i)); @@ -465,12 +455,10 @@ MaybeConstUserType, ArrayIterator<Traits, MaybeConstUserType>>; using Data = typename MojomTypeTraits<ArrayDataView<Element>>::Data; - using BufferWriter = typename Data::BufferWriter; static void Serialize(MaybeConstUserType& input, - BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { if (CallIsNullIfExists<Traits>(input)) return; @@ -482,9 +470,9 @@ internal::MakeMessageWithExpectedArraySize( "fixed-size array has wrong number of elements", size, validate_params->expected_num_elements)); - writer->Allocate(size, message->payload_buffer()); + fragment.AllocateArrayData(size); ArrayIterator<Traits, MaybeConstUserType> iterator(input); - Impl::SerializeElements(&iterator, writer, validate_params, message); + Impl::SerializeElements(&iterator, fragment, validate_params); } static bool Deserialize(Data* input, UserType* output, Message* message) {
diff --git a/mojo/public/cpp/bindings/lib/control_message_handler.cc b/mojo/public/cpp/bindings/lib/control_message_handler.cc index c6cdf83..3cbf6007 100644 --- a/mojo/public/cpp/bindings/lib/control_message_handler.cc +++ b/mojo/public/cpp/bindings/lib/control_message_handler.cc
@@ -11,6 +11,7 @@ #include "base/macros.h" #include "base/notreached.h" #include "mojo/public/cpp/bindings/interface_endpoint_client.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/lib/validation_util.h" #include "mojo/public/cpp/bindings/message.h" @@ -119,10 +120,10 @@ Message response_message(interface_control::kRunMessageId, Message::kFlagIsResponse, 0, 0, nullptr); response_message.set_request_id(message->request_id()); - interface_control::internal::RunResponseMessageParams_Data::BufferWriter - response_writer; + MessageFragment<interface_control::internal::RunResponseMessageParams_Data> + response_fragment(response_message); Serialize<interface_control::RunResponseMessageParamsDataView>( - response_params_ptr, &response_writer, &response_message); + response_params_ptr, response_fragment); ignore_result(responder->Accept(&response_message)); return true; }
diff --git a/mojo/public/cpp/bindings/lib/control_message_proxy.cc b/mojo/public/cpp/bindings/lib/control_message_proxy.cc index 56849ad..321bbe2e2 100644 --- a/mojo/public/cpp/bindings/lib/control_message_proxy.cc +++ b/mojo/public/cpp/bindings/lib/control_message_proxy.cc
@@ -80,9 +80,9 @@ Message message(interface_control::kRunMessageId, Message::kFlagExpectsResponse, 0, 0, nullptr); message.set_heap_profiler_tag(kMessageTag); - interface_control::internal::RunMessageParams_Data::BufferWriter writer; - Serialize<interface_control::RunMessageParamsDataView>(params_ptr, &writer, - &message); + MessageFragment<interface_control::internal::RunMessageParams_Data> fragment( + message); + Serialize<interface_control::RunMessageParamsDataView>(params_ptr, fragment); std::unique_ptr<MessageReceiver> responder = std::make_unique<RunResponseForwardToCallback>(std::move(callback)); endpoint->SendControlMessageWithResponder(&message, std::move(responder)); @@ -95,10 +95,11 @@ Message message(interface_control::kRunOrClosePipeMessageId, 0, 0, 0, nullptr); message.set_heap_profiler_tag(kMessageTag); - interface_control::internal::RunOrClosePipeMessageParams_Data::BufferWriter - writer; - Serialize<interface_control::RunOrClosePipeMessageParamsDataView>( - params_ptr, &writer, &message); + + MessageFragment<interface_control::internal::RunOrClosePipeMessageParams_Data> + fragment(message); + Serialize<interface_control::RunOrClosePipeMessageParamsDataView>(params_ptr, + fragment); return message; }
diff --git a/mojo/public/cpp/bindings/lib/map_data_internal.h b/mojo/public/cpp/bindings/lib/map_data_internal.h index 217904fd..422c894 100644 --- a/mojo/public/cpp/bindings/lib/map_data_internal.h +++ b/mojo/public/cpp/bindings/lib/map_data_internal.h
@@ -19,30 +19,6 @@ template <typename Key, typename Value> class Map_Data { public: - class BufferWriter { - public: - BufferWriter() = default; - - void Allocate(Buffer* buffer) { - buffer_ = buffer; - index_ = buffer_->Allocate(sizeof(Map_Data)); - new (data()) Map_Data(); - } - - bool is_null() const { return !buffer_; } - Map_Data* data() { - DCHECK(!is_null()); - return buffer_->Get<Map_Data>(index_); - } - Map_Data* operator->() { return data(); } - - private: - Buffer* buffer_ = nullptr; - size_t index_ = 0; - - DISALLOW_COPY_AND_ASSIGN(BufferWriter); - }; - // |validate_params| must have non-null |key_validate_params| and // |element_validate_params| members. static bool Validate(const void* data, @@ -89,6 +65,8 @@ Pointer<Array_Data<Value>> values; private: + friend class MessageFragment<Map_Data>; + Map_Data() { header_.num_bytes = sizeof(*this); header_.version = 0;
diff --git a/mojo/public/cpp/bindings/lib/map_serialization.h b/mojo/public/cpp/bindings/lib/map_serialization.h index 150c2058..fa15ad7 100644 --- a/mojo/public/cpp/bindings/lib/map_serialization.h +++ b/mojo/public/cpp/bindings/lib/map_serialization.h
@@ -96,32 +96,30 @@ MapValueReader<MaybeConstUserType>>; static void Serialize(MaybeConstUserType& input, - typename Data::BufferWriter* writer, - const ContainerValidateParams* validate_params, - Message* message) { + MessageFragment<Data>& fragment, + const ContainerValidateParams* validate_params) { DCHECK(validate_params->key_validate_params); DCHECK(validate_params->element_validate_params); if (CallIsNullIfExists<Traits>(input)) return; - writer->Allocate(message->payload_buffer()); - typename MojomTypeTraits<ArrayDataView<Key>>::Data::BufferWriter - keys_writer; - keys_writer.Allocate(Traits::GetSize(input), message->payload_buffer()); + fragment.Allocate(); + MessageFragment<typename MojomTypeTraits<ArrayDataView<Key>>::Data> + keys_fragment(fragment.message()); + keys_fragment.AllocateArrayData(Traits::GetSize(input)); MapKeyReader<MaybeConstUserType> key_reader(input); - KeyArraySerializer::SerializeElements(&key_reader, &keys_writer, - validate_params->key_validate_params, - message); - (*writer)->keys.Set(keys_writer.data()); + KeyArraySerializer::SerializeElements(&key_reader, keys_fragment, + validate_params->key_validate_params); + fragment->keys.Set(keys_fragment.data()); - typename MojomTypeTraits<ArrayDataView<Value>>::Data::BufferWriter - values_writer; - values_writer.Allocate(Traits::GetSize(input), message->payload_buffer()); + MessageFragment<typename MojomTypeTraits<ArrayDataView<Value>>::Data> + values_fragment(fragment.message()); + values_fragment.AllocateArrayData(Traits::GetSize(input)); MapValueReader<MaybeConstUserType> value_reader(input); ValueArraySerializer::SerializeElements( - &value_reader, &values_writer, validate_params->element_validate_params, - message); - (*writer)->values.Set(values_writer.data()); + &value_reader, values_fragment, + validate_params->element_validate_params); + fragment->values.Set(values_fragment.data()); } static bool Deserialize(Data* input, UserType* output, Message* message) {
diff --git a/mojo/public/cpp/bindings/lib/message.cc b/mojo/public/cpp/bindings/lib/message.cc index c4eb432..f90d47f4 100644 --- a/mojo/public/cpp/bindings/lib/message.cc +++ b/mojo/public/cpp/bindings/lib/message.cc
@@ -23,6 +23,7 @@ #include "base/trace_event/trace_id_helper.h" #include "mojo/public/cpp/bindings/associated_group_controller.h" #include "mojo/public/cpp/bindings/lib/array_internal.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/unserialized_message_context.h" namespace mojo { @@ -459,15 +460,16 @@ DCHECK(payload_buffer_.is_valid()); DCHECK(handle_.is_valid()); - internal::Array_Data<uint32_t>::BufferWriter handle_writer; - handle_writer.Allocate(num_endpoint_handles, &payload_buffer_); - header_v2()->payload_interface_ids.Set(handle_writer.data()); + internal::MessageFragment<internal::Array_Data<uint32_t>> handles_fragment( + *this); + handles_fragment.AllocateArrayData(num_endpoint_handles); + header_v2()->payload_interface_ids.Set(handles_fragment.data()); for (size_t i = 0; i < num_endpoint_handles; ++i) { ScopedInterfaceEndpointHandle& handle = (*mutable_associated_endpoint_handles())[i]; DCHECK(handle.pending_association()); - handle_writer->storage()[i] = + handles_fragment->storage()[i] = group_controller->AssociateInterface(std::move(handle)); } mutable_associated_endpoint_handles()->clear();
diff --git a/mojo/public/cpp/bindings/lib/message_fragment.h b/mojo/public/cpp/bindings/lib/message_fragment.h new file mode 100644 index 0000000..90d021f --- /dev/null +++ b/mojo/public/cpp/bindings/lib/message_fragment.h
@@ -0,0 +1,165 @@ +// 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 MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_FRAGMENT_H_ +#define MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_FRAGMENT_H_ + +#include <stddef.h> + +#include <limits> + +#include "base/check_op.h" +#include "base/component_export.h" +#include "mojo/public/cpp/bindings/lib/bindings_internal.h" +#include "mojo/public/cpp/bindings/message.h" + +namespace mojo { +namespace internal { + +// Sentinel value used to denote an invalid index and thus a null fragment. Note +// that we choose a sentinel value over something more explicit like +// base::Optional because this is used heavily in generated code, so code size +// is particularly relevant. +constexpr size_t kInvalidFragmentIndex = std::numeric_limits<size_t>::max(); + +// MessageFragment provides a common interface for serialization code to +// allocate, initialize, and expose convenient access to aligned blocks of data +// within a Message object. Each MessageFragment corresponds to a logical data +// element (e.g. struct, field, array, array element, etc) within a Message. +// +// A MessageFragment is configured at construction time with a partially +// serialized Message. The fragment is initially null and does not reference +// valid memory. +// +// In order to use `data()` or `operator->` the fragment must first claim a +// chunk of memory within the message. This is done by calling either +// `Allocate()` -- which appends `sizeof(T)` bytes to the end of the Message +// payload and assumes control of those bytes -- or `Claim()` which takes an +// existing pointer within the message payload and assumes control of the first +// `sizeof(T)` bytes at that message offset. In either case, a new `T` is +// constructed over the claimed bytes and can subsequently be read or modified +// using this fragment. +// +// Note that array types use a specialization of this class defined below, +// and must instead call `AllocateArrayData()` to allocate and claim space +// within the Message. +template <typename T> +class MessageFragment { + public: + // Constructs a null MessageFragment for `message`. + explicit MessageFragment(Message& message) : message_(message) {} + + MessageFragment(const MessageFragment&) = delete; + MessageFragment& operator=(const MessageFragment&) = delete; + + Message& message() { return message_; } + + // Indicates whether space for a T has been by this fragment. + bool is_null() const { return index_ == kInvalidFragmentIndex; } + + // Returns the in-Message memory claimed by this MessageFragment. + T* data() { + DCHECK(!is_null()); + return message_.payload_buffer()->template Get<T>(index_); + } + + T* operator->() { return data(); } + + // Allocates and claims `sizeof(T)` bytes on the end of the Message's payload, + // and initializes a new `T` in place. + void Allocate() { + index_ = message_.payload_buffer()->Allocate(sizeof(T)); + new (data()) T(); + } + + // Claims `sizeof(T)` bytes of already-allocated memory at `ptr`, which must + // fall entirely within an existing MessageFragment for the same Message. + // Initializes a new `T` in place. + void Claim(void* ptr) { + const char* start = + static_cast<const char*>(message_.payload_buffer()->data()); + const char* slot = static_cast<const char*>(ptr); + DCHECK_GT(slot, start); + index_ = slot - start; + new (data()) T(); + } + + private: + Message& message_; + size_t index_ = kInvalidFragmentIndex; +}; + +// Traits to help infer an array sizing function from the element type. Needed +// because of bool arrays -- everything else is trivially the product of element +// size and element count. +template <typename ElementType> +struct MessageFragmentArrayTraits { + static constexpr uint32_t kMaxNumElements = + (std::numeric_limits<uint32_t>::max() - sizeof(ArrayHeader)) / + sizeof(ElementType); + static uint32_t GetStorageSize(uint32_t num_elements) { + DCHECK_LE(num_elements, kMaxNumElements); + return sizeof(ArrayHeader) + sizeof(ElementType) * num_elements; + } +}; + +// Bool arrays are packed bit for bit, so e.g. an 8-element bool array requires +// only a single byte of storage apart from the header. +template <> +struct MessageFragmentArrayTraits<bool> { + static constexpr uint32_t kMaxNumElements = + std::numeric_limits<uint32_t>::max() - 7; + static uint32_t GetStorageSize(uint32_t num_elements) { + DCHECK_LE(num_elements, kMaxNumElements); + return sizeof(ArrayHeader) + ((num_elements + 7) / 8); + } +}; + +template <typename T> +class Array_Data; + +// Specialization of MessageFragment<T> specific to Array_Data types. +template <typename T> +class MessageFragment<Array_Data<T>> { + public: + using Traits = MessageFragmentArrayTraits<T>; + + explicit MessageFragment(Message& message) : message_(message) {} + + MessageFragment(const MessageFragment&) = delete; + MessageFragment& operator=(const MessageFragment&) = delete; + + Message& message() { return message_; } + + // Indicates whether space for the array has been claimed by this fragment. + bool is_null() const { return index_ == kInvalidFragmentIndex; } + + // Returns the in-Message memory claimed by this MessageFragment. + Array_Data<T>* data() { + DCHECK(!is_null()); + return message_.payload_buffer()->template Get<Array_Data<T>>(index_); + } + + Array_Data<T>* operator->() { return data(); } + + // Allocates and claims enough memory for `num_elements` elements of type `T`, + // plus an array header, and initializes a new `Array_Data<T>` in place. + void AllocateArrayData(size_t num_elements) { + if (num_elements > Traits::kMaxNumElements) + return; + + const size_t num_bytes = Traits::GetStorageSize(num_elements); + index_ = message_.payload_buffer()->Allocate(num_bytes); + new (data()) Array_Data<T>(num_bytes, num_elements); + } + + private: + Message& message_; + size_t index_ = kInvalidFragmentIndex; +}; + +} // namespace internal +} // namespace mojo + +#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_FRAGMENT_H_
diff --git a/mojo/public/cpp/bindings/lib/native_struct_serialization.cc b/mojo/public/cpp/bindings/lib/native_struct_serialization.cc index 0fbf4af..4148646 100644 --- a/mojo/public/cpp/bindings/lib/native_struct_serialization.cc +++ b/mojo/public/cpp/bindings/lib/native_struct_serialization.cc
@@ -7,6 +7,7 @@ #include "ipc/ipc_message_attachment.h" #include "ipc/ipc_message_attachment_set.h" #include "ipc/native_handle_type_converters.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/lib/serialization_forward.h" @@ -16,29 +17,27 @@ // static void UnmappedNativeStructSerializerImpl::Serialize( const native::NativeStructPtr& input, - native::internal::NativeStruct_Data::BufferWriter* writer, - Message* message) { + MessageFragment<native::internal::NativeStruct_Data>& fragment) { if (!input) return; - writer->Allocate(message->payload_buffer()); - - Array_Data<uint8_t>::BufferWriter data_writer; + fragment.Allocate(); + MessageFragment<Array_Data<uint8_t>> data_fragment(fragment.message()); const mojo::internal::ContainerValidateParams data_validate_params(0, false, nullptr); - mojo::internal::Serialize<ArrayDataView<uint8_t>>( - input->data, &data_writer, &data_validate_params, message); - writer->data()->data.Set(data_writer.data()); + mojo::internal::Serialize<ArrayDataView<uint8_t>>(input->data, data_fragment, + &data_validate_params); + fragment->data.Set(data_fragment.data()); - mojo::internal::Array_Data<mojo::internal::Pointer< - native::internal::SerializedHandle_Data>>::BufferWriter handles_writer; + MessageFragment<Array_Data<Pointer<native::internal::SerializedHandle_Data>>> + handles_fragment(fragment.message()); const mojo::internal::ContainerValidateParams handles_validate_params( 0, false, nullptr); mojo::internal::Serialize< mojo::ArrayDataView<::mojo::native::SerializedHandleDataView>>( - input->handles, &handles_writer, &handles_validate_params, message); - writer->data()->handles.Set(handles_writer.is_null() ? nullptr - : handles_writer.data()); + input->handles, handles_fragment, &handles_validate_params); + fragment->handles.Set(handles_fragment.is_null() ? nullptr + : handles_fragment.data()); } // static @@ -59,39 +58,39 @@ // static void UnmappedNativeStructSerializerImpl::SerializeMessageContents( IPC::Message* ipc_message, - native::internal::NativeStruct_Data::BufferWriter* writer, - Message* message) { - writer->Allocate(message->payload_buffer()); + MessageFragment<native::internal::NativeStruct_Data>& fragment) { + fragment.Allocate(); // Allocate a uint8 array, initialize its header, and copy the Pickle in. - Array_Data<uint8_t>::BufferWriter data_writer; - data_writer.Allocate(ipc_message->payload_size(), message->payload_buffer()); - memcpy(data_writer->storage(), ipc_message->payload(), + MessageFragment<Array_Data<uint8_t>> data_fragment(fragment.message()); + data_fragment.AllocateArrayData(ipc_message->payload_size()); + memcpy(data_fragment->storage(), ipc_message->payload(), ipc_message->payload_size()); - writer->data()->data.Set(data_writer.data()); + fragment->data.Set(data_fragment.data()); if (ipc_message->attachment_set()->empty()) { - writer->data()->handles.Set(nullptr); + fragment->handles.Set(nullptr); return; } - mojo::internal::Array_Data<mojo::internal::Pointer< - native::internal::SerializedHandle_Data>>::BufferWriter handles_writer; + MessageFragment<Array_Data<Pointer<native::internal::SerializedHandle_Data>>> + handles_fragment(fragment.message()); auto* attachments = ipc_message->attachment_set(); - handles_writer.Allocate(attachments->size(), message->payload_buffer()); + handles_fragment.AllocateArrayData(attachments->size()); for (unsigned i = 0; i < attachments->size(); ++i) { - native::internal::SerializedHandle_Data::BufferWriter handle_writer; - handle_writer.Allocate(message->payload_buffer()); + MessageFragment<native::internal::SerializedHandle_Data> handle_fragment( + fragment.message()); + handle_fragment.Allocate(); auto attachment = attachments->GetAttachmentAt(i); ScopedHandle handle = attachment->TakeMojoHandle(); internal::Serializer<ScopedHandle, ScopedHandle>::Serialize( - handle, &handle_writer->the_handle, message); - handle_writer->type = static_cast<int32_t>( + handle, &handle_fragment->the_handle, &fragment.message()); + handle_fragment->type = static_cast<int32_t>( mojo::ConvertTo<native::SerializedHandleType>(attachment->GetType())); - handles_writer.data()->at(i).Set(handle_writer.data()); + handles_fragment->at(i).Set(handle_fragment.data()); } - writer->data()->handles.Set(handles_writer.data()); + fragment->handles.Set(handles_fragment.data()); } // static
diff --git a/mojo/public/cpp/bindings/lib/native_struct_serialization.h b/mojo/public/cpp/bindings/lib/native_struct_serialization.h index c2d80b2..5212848 100644 --- a/mojo/public/cpp/bindings/lib/native_struct_serialization.h +++ b/mojo/public/cpp/bindings/lib/native_struct_serialization.h
@@ -17,6 +17,7 @@ #include "ipc/ipc_param_traits.h" #include "mojo/public/cpp/bindings/lib/array_internal.h" #include "mojo/public/cpp/bindings/lib/bindings_internal.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization_forward.h" #include "mojo/public/cpp/bindings/lib/serialization_util.h" #include "mojo/public/interfaces/bindings/native_struct.mojom.h" @@ -32,8 +33,7 @@ struct COMPONENT_EXPORT(MOJO_CPP_BINDINGS) UnmappedNativeStructSerializerImpl { static void Serialize( const native::NativeStructPtr& input, - native::internal::NativeStruct_Data::BufferWriter* writer, - Message* message); + MessageFragment<native::internal::NativeStruct_Data>& fragment); static bool Deserialize(native::internal::NativeStruct_Data* input, native::NativeStructPtr* output, @@ -41,8 +41,7 @@ static void SerializeMessageContents( IPC::Message* ipc_message, - native::internal::NativeStruct_Data::BufferWriter* writer, - Message* message); + MessageFragment<native::internal::NativeStruct_Data>& fragment); static bool DeserializeMessageAttachments( native::internal::NativeStruct_Data* data, @@ -57,12 +56,11 @@ static void Serialize( MaybeConstUserType& value, - native::internal::NativeStruct_Data::BufferWriter* writer, - Message* message) { + MessageFragment<native::internal::NativeStruct_Data>& fragment) { IPC::Message ipc_message; Traits::Write(&ipc_message, value); - UnmappedNativeStructSerializerImpl::SerializeMessageContents( - &ipc_message, writer, message); + UnmappedNativeStructSerializerImpl::SerializeMessageContents(&ipc_message, + fragment); } static bool Deserialize(native::internal::NativeStruct_Data* data,
diff --git a/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc b/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc index f4f64c0..50df08c9 100644 --- a/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc +++ b/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/macros.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/message.h" #include "mojo/public/interfaces/bindings/pipe_control_messages.mojom.h" @@ -23,9 +24,11 @@ params_ptr->input = std::move(input_ptr); Message message(pipe_control::kRunOrClosePipeMessageId, 0, 0, 0, nullptr); - pipe_control::internal::RunOrClosePipeMessageParams_Data::BufferWriter writer; + internal::MessageFragment< + pipe_control::internal::RunOrClosePipeMessageParams_Data> + fragment(message); internal::Serialize<pipe_control::RunOrClosePipeMessageParamsDataView>( - params_ptr, &writer, &message); + params_ptr, fragment); message.set_interface_id(kInvalidInterfaceId); message.set_heap_profiler_tag(kMessageTag); message.SerializeHandles(/*group_controller=*/nullptr);
diff --git a/mojo/public/cpp/bindings/lib/serialization.h b/mojo/public/cpp/bindings/lib/serialization.h index 17fd3af9..880acb5 100644 --- a/mojo/public/cpp/bindings/lib/serialization.h +++ b/mojo/public/cpp/bindings/lib/serialization.h
@@ -17,6 +17,7 @@ #include "mojo/public/cpp/bindings/lib/buffer.h" #include "mojo/public/cpp/bindings/lib/handle_serialization.h" #include "mojo/public/cpp/bindings/lib/map_serialization.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/string_serialization.h" #include "mojo/public/cpp/bindings/lib/template_util.h" #include "mojo/public/cpp/bindings/map_traits_flat_map.h" @@ -36,11 +37,9 @@ MojomType, typename std::enable_if< BelongsTo<MojomType, MojomTypeCategory::kStruct>::value>::type> { - template <typename MaybeConstUserType, typename WriterType> - static void Serialize(MaybeConstUserType& input, - WriterType* writer, - Message* message) { - mojo::internal::Serialize<MojomType>(input, writer, message); + template <typename MaybeConstUserType, typename FragmentType> + static void Serialize(MaybeConstUserType& input, FragmentType& fragment) { + mojo::internal::Serialize<MojomType>(input, fragment); } }; @@ -49,12 +48,9 @@ MojomType, typename std::enable_if< BelongsTo<MojomType, MojomTypeCategory::kUnion>::value>::type> { - template <typename MaybeConstUserType, typename WriterType> - static void Serialize(MaybeConstUserType& input, - WriterType* writer, - Message* message) { - mojo::internal::Serialize<MojomType>(input, writer, false /* inline */, - message); + template <typename MaybeConstUserType, typename FragmentType> + static void Serialize(MaybeConstUserType& input, FragmentType& fragment) { + mojo::internal::Serialize<MojomType>(input, fragment, false /* inline */); } }; @@ -65,8 +61,8 @@ // limits to be applied. mojo::Message message(0, 0, 0, 0, MOJO_CREATE_MESSAGE_FLAG_UNLIMITED_SIZE, nullptr); - typename MojomTypeTraits<MojomType>::Data::BufferWriter writer; - MojomSerializationImplTraits<MojomType>::Serialize(*input, &writer, &message); + MessageFragment<typename MojomTypeTraits<MojomType>::Data> fragment(message); + MojomSerializationImplTraits<MojomType>::Serialize(*input, fragment); message.SerializeHandles(/*group_controller=*/nullptr); return message; }
diff --git a/mojo/public/cpp/bindings/lib/serialization_forward.h b/mojo/public/cpp/bindings/lib/serialization_forward.h index bdd75651..637729d 100644 --- a/mojo/public/cpp/bindings/lib/serialization_forward.h +++ b/mojo/public/cpp/bindings/lib/serialization_forward.h
@@ -9,6 +9,7 @@ #include "mojo/public/cpp/bindings/array_traits.h" #include "mojo/public/cpp/bindings/enum_traits.h" #include "mojo/public/cpp/bindings/lib/buffer.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/template_util.h" #include "mojo/public/cpp/bindings/map_traits.h" #include "mojo/public/cpp/bindings/string_traits.h" @@ -58,16 +59,14 @@ template <typename MojomType, typename InputUserType, - typename BufferWriterType, + typename FragmentType, typename... Args, typename std::enable_if< IsOptionalWrapper<InputUserType>::value>::type* = nullptr> -void Serialize(InputUserType&& input, - BufferWriterType* writer, - Args&&... args) { +void Serialize(InputUserType&& input, FragmentType& fragment, Args&&... args) { if (!input) return; - Serialize<MojomType>(*input, writer, std::forward<Args>(args)...); + Serialize<MojomType>(*input, fragment, std::forward<Args>(args)...); } template <typename MojomType,
diff --git a/mojo/public/cpp/bindings/lib/string_serialization.h b/mojo/public/cpp/bindings/lib/string_serialization.h index 2a9a027..b06716c 100644 --- a/mojo/public/cpp/bindings/lib/string_serialization.h +++ b/mojo/public/cpp/bindings/lib/string_serialization.h
@@ -9,6 +9,7 @@ #include <string.h> #include "mojo/public/cpp/bindings/lib/array_internal.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization_forward.h" #include "mojo/public/cpp/bindings/lib/serialization_util.h" #include "mojo/public/cpp/bindings/string_data_view.h" @@ -23,14 +24,13 @@ using Traits = StringTraits<UserType>; static void Serialize(MaybeConstUserType& input, - String_Data::BufferWriter* writer, - Message* message) { + MessageFragment<String_Data>& fragment) { if (CallIsNullIfExists<Traits>(input)) return; auto r = Traits::GetUTF8(input); - writer->Allocate(r.size(), message->payload_buffer()); - memcpy((*writer)->storage(), r.data(), r.size()); + fragment.AllocateArrayData(r.size()); + memcpy(fragment->storage(), r.data(), r.size()); } static bool Deserialize(String_Data* input,
diff --git a/mojo/public/cpp/bindings/tests/data_view_unittest.cc b/mojo/public/cpp/bindings/tests/data_view_unittest.cc index 701c5c1e..73ff422 100644 --- a/mojo/public/cpp/bindings/tests/data_view_unittest.cc +++ b/mojo/public/cpp/bindings/tests/data_view_unittest.cc
@@ -8,6 +8,7 @@ #include <vector> #include "base/test/task_environment.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" @@ -33,11 +34,11 @@ std::unique_ptr<DataViewHolder> SerializeTestStruct(TestStructPtr input) { auto result = std::make_unique<DataViewHolder>(); result->message = Message(0, 0, 0, 0, nullptr); - internal::TestStruct_Data::BufferWriter writer; - mojo::internal::Serialize<TestStructDataView>(input, &writer, - &result->message); + mojo::internal::MessageFragment<internal::TestStruct_Data> fragment( + result->message); + mojo::internal::Serialize<TestStructDataView>(input, fragment); result->data_view = - std::make_unique<TestStructDataView>(writer.data(), &result->message); + std::make_unique<TestStructDataView>(fragment.data(), &result->message); return result; }
diff --git a/mojo/public/cpp/bindings/tests/serialization_warning_unittest.cc b/mojo/public/cpp/bindings/tests/serialization_warning_unittest.cc index 38c18ca..7ccf8ef 100644 --- a/mojo/public/cpp/bindings/tests/serialization_warning_unittest.cc +++ b/mojo/public/cpp/bindings/tests/serialization_warning_unittest.cc
@@ -9,6 +9,7 @@ #include <utility> #include "mojo/public/cpp/bindings/lib/array_internal.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/lib/validation_errors.h" #include "mojo/public/cpp/system/message_pipe.h" @@ -50,9 +51,10 @@ warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE); mojo::Message message(0, 0, 0, 0, nullptr); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; - mojo::internal::Serialize<MojomType>(obj, &writer, &message); + mojo::internal::MessageFragment< + typename mojo::internal::MojomTypeTraits<MojomType>::Data> + fragment(message); + mojo::internal::Serialize<MojomType>(obj, fragment); EXPECT_EQ(expected_warning, warning_observer_.last_warning()); } @@ -63,10 +65,10 @@ warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE); mojo::Message message(0, 0, 0, 0, nullptr); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; - mojo::internal::Serialize<MojomType>(obj, &writer, validate_params, - &message); + mojo::internal::MessageFragment< + typename mojo::internal::MojomTypeTraits<MojomType>::Data> + fragment(message); + mojo::internal::Serialize<MojomType>(obj, fragment, validate_params); EXPECT_EQ(expected_warning, warning_observer_.last_warning()); } @@ -78,9 +80,10 @@ warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE); mojo::Message message(0, 0, 0, 0, nullptr); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; - mojo::internal::Serialize<MojomType>(obj, &writer, false, &message); + mojo::internal::MessageFragment< + typename mojo::internal::MojomTypeTraits<MojomType>::Data> + fragment(message); + mojo::internal::Serialize<MojomType>(obj, fragment, false); EXPECT_EQ(expected_warning, warning_observer_.last_warning()); }
diff --git a/mojo/public/cpp/bindings/tests/struct_unittest.cc b/mojo/public/cpp/bindings/tests/struct_unittest.cc index 04b4ff0..83bbd43 100644 --- a/mojo/public/cpp/bindings/tests/struct_unittest.cc +++ b/mojo/public/cpp/bindings/tests/struct_unittest.cc
@@ -7,6 +7,7 @@ #include <string.h> #include <utility> +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/system/message_pipe.h" #include "mojo/public/interfaces/bindings/tests/test_export2.mojom.h" #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" @@ -47,9 +48,9 @@ typename SerializeStructHelperTraits<StructType>::DataView; *message = mojo::Message(0, 0, 0, 0, nullptr); const size_t payload_start = message->payload_buffer()->cursor(); - typename DataType::BufferWriter writer; - mojo::internal::Serialize<DataViewType>(input, &writer, message); - *out_data = writer.is_null() ? nullptr : writer.data(); + mojo::internal::MessageFragment<DataType> fragment(*message); + mojo::internal::Serialize<DataViewType>(input, fragment); + *out_data = fragment.is_null() ? nullptr : fragment.data(); return message->payload_buffer()->cursor() - payload_start; }
diff --git a/mojo/public/cpp/bindings/tests/union_unittest.cc b/mojo/public/cpp/bindings/tests/union_unittest.cc index 096bd33..fb1f8573 100644 --- a/mojo/public/cpp/bindings/tests/union_unittest.cc +++ b/mojo/public/cpp/bindings/tests/union_unittest.cc
@@ -12,6 +12,7 @@ #include "base/run_loop.h" #include "base/test/task_environment.h" #include "mojo/public/cpp/bindings/lib/array_internal.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/lib/validation_context.h" #include "mojo/public/cpp/bindings/lib/validation_errors.h" @@ -34,9 +35,9 @@ using DataViewType = typename StructType::DataView; *message = mojo::Message(0, 0, 0, 0, nullptr); const size_t payload_start = message->payload_buffer()->cursor(); - typename DataType::BufferWriter writer; - mojo::internal::Serialize<DataViewType>(input, &writer, message); - *out_data = writer.is_null() ? nullptr : writer.data(); + mojo::internal::MessageFragment<DataType> fragment(*message); + mojo::internal::Serialize<DataViewType>(input, fragment); + *out_data = fragment.is_null() ? nullptr : fragment.data(); return message->payload_buffer()->cursor() - payload_start; } @@ -48,9 +49,9 @@ using DataViewType = typename StructType::DataView; *message = mojo::Message(0, 0, 0, 0, nullptr); const size_t payload_start = message->payload_buffer()->cursor(); - typename DataType::BufferWriter writer; - mojo::internal::Serialize<DataViewType>(input, &writer, false, message); - *out_data = writer.is_null() ? nullptr : writer.data(); + mojo::internal::MessageFragment<DataType> fragment(*message); + mojo::internal::Serialize<DataViewType>(input, fragment, false); + *out_data = fragment.is_null() ? nullptr : fragment.data(); return message->payload_buffer()->cursor() - payload_start; } @@ -61,12 +62,13 @@ typename DataViewType::Data_** out_data) { *message = mojo::Message(0, 0, 0, 0, nullptr); const size_t payload_start = message->payload_buffer()->cursor(); - typename DataViewType::Data_::BufferWriter writer; + + mojo::internal::MessageFragment<typename DataViewType::Data_> fragment( + *message); mojo::internal::ContainerValidateParams validate_params(0, nullable_elements, nullptr); - mojo::internal::Serialize<DataViewType>(input, &writer, &validate_params, - message); - *out_data = writer.is_null() ? nullptr : writer.data(); + mojo::internal::Serialize<DataViewType>(input, fragment, &validate_params); + *out_data = fragment.is_null() ? nullptr : fragment.data(); return message->payload_buffer()->cursor() - payload_start; } @@ -290,14 +292,15 @@ mojo::internal::Buffer& buffer = *message.payload_buffer(); EXPECT_EQ(sizeof(mojo::internal::MessageHeader), buffer.cursor()); - internal::PodUnion_Data::BufferWriter writer; - writer.Allocate(&buffer); - mojo::internal::Serialize<PodUnionDataView>(pod, &writer, true, &message); - EXPECT_TRUE(writer.data()->is_null()); + mojo::internal::MessageFragment<internal::PodUnion_Data> fragment(message); + fragment.Allocate(); + mojo::internal::Serialize<PodUnionDataView>(pod, fragment, true); + EXPECT_TRUE(fragment->is_null()); EXPECT_EQ(16U + sizeof(mojo::internal::MessageHeader), buffer.cursor()); PodUnionPtr pod2; - mojo::internal::Deserialize<PodUnionDataView>(writer.data(), &pod2, nullptr); + mojo::internal::Deserialize<PodUnionDataView>(fragment.data(), &pod2, + nullptr); EXPECT_TRUE(pod2.is_null()); } @@ -319,23 +322,23 @@ TEST(UnionTest, OOBValidation) { constexpr size_t size = sizeof(internal::PodUnion_Data) - 1; mojo::Message message(0, 0, size, 0, nullptr); - internal::PodUnion_Data::BufferWriter writer; - writer.Allocate(message.payload_buffer()); + mojo::internal::MessageFragment<internal::PodUnion_Data> fragment(message); + fragment.Allocate(); mojo::internal::ValidationContext validation_context( - writer.data(), static_cast<uint32_t>(size), 0, 0); - EXPECT_FALSE(internal::PodUnion_Data::Validate(writer.data(), + fragment.data(), static_cast<uint32_t>(size), 0, 0); + EXPECT_FALSE(internal::PodUnion_Data::Validate(fragment.data(), &validation_context, false)); } TEST(UnionTest, UnknownTagValidation) { constexpr size_t size = sizeof(internal::PodUnion_Data); mojo::Message message(0, 0, size, 0, nullptr); - internal::PodUnion_Data::BufferWriter writer; - writer.Allocate(message.payload_buffer()); - writer->tag = static_cast<internal::PodUnion_Data::PodUnion_Tag>(0xFFFFFF); + mojo::internal::MessageFragment<internal::PodUnion_Data> fragment(message); + fragment.Allocate(); + fragment->tag = static_cast<internal::PodUnion_Data::PodUnion_Tag>(0xFFFFFF); mojo::internal::ValidationContext validation_context( - writer.data(), static_cast<uint32_t>(size), 0, 0); - EXPECT_FALSE(internal::PodUnion_Data::Validate(writer.data(), + fragment.data(), static_cast<uint32_t>(size), 0, 0); + EXPECT_FALSE(internal::PodUnion_Data::Validate(fragment.data(), &validation_context, false)); } @@ -426,12 +429,12 @@ constexpr size_t size = sizeof(internal::ObjectUnion_Data); Message message(0, 0, 0, 0, nullptr); mojo::internal::Buffer& buffer = *message.payload_buffer(); - internal::ObjectUnion_Data::BufferWriter writer; - writer.Allocate(&buffer); - writer->tag = internal::ObjectUnion_Data::ObjectUnion_Tag::F_STRING; - writer->data.unknown = 0x0; + mojo::internal::MessageFragment<internal::ObjectUnion_Data> fragment(message); + fragment.Allocate(); + fragment->tag = internal::ObjectUnion_Data::ObjectUnion_Tag::F_STRING; + fragment->data.unknown = 0x0; mojo::internal::ValidationContext validation_context( - writer.data(), static_cast<uint32_t>(size), 0, 0); + fragment.data(), static_cast<uint32_t>(size), 0, 0); EXPECT_FALSE(internal::ObjectUnion_Data::Validate( buffer.data(), &validation_context, false)); } @@ -440,12 +443,12 @@ constexpr size_t size = sizeof(internal::ObjectUnion_Data); Message message(0, 0, 0, 0, nullptr); mojo::internal::Buffer& buffer = *message.payload_buffer(); - internal::ObjectUnion_Data::BufferWriter writer; - writer.Allocate(&buffer); - writer->tag = internal::ObjectUnion_Data::ObjectUnion_Tag::F_STRING; - writer->data.unknown = 0xFFFFFFFFFFFFFFFF; + mojo::internal::MessageFragment<internal::ObjectUnion_Data> fragment(message); + fragment.Allocate(); + fragment->tag = internal::ObjectUnion_Data::ObjectUnion_Tag::F_STRING; + fragment->data.unknown = 0xFFFFFFFFFFFFFFFF; mojo::internal::ValidationContext validation_context( - writer.data(), static_cast<uint32_t>(size), 0, 0); + fragment.data(), static_cast<uint32_t>(size), 0, 0); EXPECT_FALSE(internal::ObjectUnion_Data::Validate( buffer.data(), &validation_context, false)); } @@ -453,17 +456,18 @@ TEST(UnionTest, StringValidateOOB) { Message message(0, 0, 0, 0, nullptr); mojo::internal::Buffer& buffer = *message.payload_buffer(); - internal::ObjectUnion_Data::BufferWriter writer; - writer.Allocate(&buffer); - writer->tag = internal::ObjectUnion_Data::ObjectUnion_Tag::F_STRING; + mojo::internal::MessageFragment<internal::ObjectUnion_Data> fragment(message); + fragment.Allocate(); + fragment->tag = internal::ObjectUnion_Data::ObjectUnion_Tag::F_STRING; - writer->data.f_f_string.offset = 8; - char* ptr = reinterpret_cast<char*>(&writer->data.f_f_string); + fragment->data.f_f_string.offset = 8; + char* ptr = reinterpret_cast<char*>(&fragment->data.f_f_string); mojo::internal::ArrayHeader* array_header = reinterpret_cast<mojo::internal::ArrayHeader*>(ptr + *ptr); array_header->num_bytes = 20; // This should go out of bounds. array_header->num_elements = 20; - mojo::internal::ValidationContext validation_context(writer.data(), 32, 0, 0); + mojo::internal::ValidationContext validation_context(fragment.data(), 32, 0, + 0); EXPECT_FALSE(internal::ObjectUnion_Data::Validate( buffer.data(), &validation_context, false)); } @@ -647,13 +651,13 @@ constexpr size_t size = sizeof(internal::SmallStructNonNullableUnion_Data); Message message(0, 0, 0, 0, nullptr); - mojo::internal::Buffer& buffer = *message.payload_buffer(); - internal::SmallStructNonNullableUnion_Data::BufferWriter writer; - writer.Allocate(&buffer); + mojo::internal::MessageFragment<internal::SmallStructNonNullableUnion_Data> + fragment(message); + fragment.Allocate(); mojo::internal::ValidationContext validation_context( - writer.data(), static_cast<uint32_t>(size), 0, 0); + fragment.data(), static_cast<uint32_t>(size), 0, 0); EXPECT_FALSE(internal::SmallStructNonNullableUnion_Data::Validate( - writer.data(), &validation_context)); + fragment.data(), &validation_context)); } // Validation passes with nullable null union. @@ -697,17 +701,16 @@ mojo::Message message(0, 0, 0, 0, nullptr); const size_t payload_start = message.payload_buffer()->cursor(); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; + using DataType = typename mojo::internal::MojomTypeTraits<MojomType>::Data; + mojo::internal::MessageFragment<DataType> fragment(message); mojo::internal::ContainerValidateParams validate_params( new mojo::internal::ContainerValidateParams(0, false, nullptr), new mojo::internal::ContainerValidateParams(0, false, nullptr)); - mojo::internal::Serialize<MojomType>(map, &writer, &validate_params, - &message); + mojo::internal::Serialize<MojomType>(map, fragment, &validate_params); EXPECT_EQ(120U, message.payload_buffer()->cursor() - payload_start); base::flat_map<std::string, PodUnionPtr> map2; - mojo::internal::Deserialize<MojomType>(writer.data(), &map2, &message); + mojo::internal::Deserialize<MojomType>(fragment.data(), &map2, &message); EXPECT_EQ(8, map2["one"]->get_f_int8()); EXPECT_EQ(16, map2["two"]->get_f_int16()); @@ -725,17 +728,16 @@ mojo::Message message(0, 0, 0, 0, nullptr); const size_t payload_start = message.payload_buffer()->cursor(); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; + using DataType = mojo::internal::MojomTypeTraits<MojomType>::Data; + mojo::internal::MessageFragment<DataType> fragment(message); mojo::internal::ContainerValidateParams validate_params( new mojo::internal::ContainerValidateParams(0, false, nullptr), new mojo::internal::ContainerValidateParams(0, true, nullptr)); - mojo::internal::Serialize<MojomType>(map, &writer, &validate_params, - &message); + mojo::internal::Serialize<MojomType>(map, fragment, &validate_params); EXPECT_EQ(120U, message.payload_buffer()->cursor() - payload_start); base::flat_map<std::string, PodUnionPtr> map2; - mojo::internal::Deserialize<MojomType>(writer.data(), &map2, &message); + mojo::internal::Deserialize<MojomType>(fragment.data(), &map2, &message); EXPECT_EQ(8, map2["one"]->get_f_int8()); EXPECT_TRUE(map2["two"].is_null());
diff --git a/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc b/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc index b439ecf..6eed451 100644 --- a/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc +++ b/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc
@@ -6,6 +6,7 @@ #include "base/run_loop.h" #include "base/stl_util.h" #include "base/test/task_environment.h" +#include "mojo/public/cpp/bindings/lib/message_fragment.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/lib/wtf_serialization.h" #include "mojo/public/cpp/bindings/receiver.h" @@ -113,15 +114,15 @@ auto cloned_strs = strs; mojo::Message message(0, 0, 0, 0, nullptr); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; + mojo::internal::MessageFragment< + typename mojo::internal::MojomTypeTraits<MojomType>::Data> + fragment(message); mojo::internal::ContainerValidateParams validate_params( 0, true, new mojo::internal::ContainerValidateParams(0, false, nullptr)); - mojo::internal::Serialize<MojomType>(cloned_strs, &writer, &validate_params, - &message); + mojo::internal::Serialize<MojomType>(cloned_strs, fragment, &validate_params); WTF::Vector<WTF::String> strs2; - mojo::internal::Deserialize<MojomType>(writer.data(), &strs2, &message); + mojo::internal::Deserialize<MojomType>(fragment.data(), &strs2, &message); EXPECT_EQ(strs, strs2); } @@ -138,15 +139,15 @@ auto cloned_strs = strs; mojo::Message message(0, 0, 0, 0, nullptr); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; + mojo::internal::MessageFragment< + typename mojo::internal::MojomTypeTraits<MojomType>::Data> + fragment(message); mojo::internal::ContainerValidateParams validate_params( 0, true, new mojo::internal::ContainerValidateParams(0, false, nullptr)); - mojo::internal::Serialize<MojomType>(cloned_strs, &writer, &validate_params, - &message); + mojo::internal::Serialize<MojomType>(cloned_strs, fragment, &validate_params); WTF::Vector<WTF::String, 1> strs2; - mojo::internal::Deserialize<MojomType>(writer.data(), &strs2, &message); + mojo::internal::Deserialize<MojomType>(fragment.data(), &strs2, &message); EXPECT_EQ(strs, strs2); } @@ -158,15 +159,15 @@ auto cloned_strs = strs; mojo::Message message(0, 0, 0, 0, nullptr); - typename mojo::internal::MojomTypeTraits<MojomType>::Data::BufferWriter - writer; + mojo::internal::MessageFragment< + typename mojo::internal::MojomTypeTraits<MojomType>::Data> + fragment(message); mojo::internal::ContainerValidateParams validate_params( 0, true, new mojo::internal::ContainerValidateParams(0, false, nullptr)); - mojo::internal::Serialize<MojomType>(cloned_strs, &writer, &validate_params, - &message); + mojo::internal::Serialize<MojomType>(cloned_strs, fragment, &validate_params); std::vector<base::Optional<std::string>> strs2; - mojo::internal::Deserialize<MojomType>(writer.data(), &strs2, &message); + mojo::internal::Deserialize<MojomType>(fragment.data(), &strs2, &message); ASSERT_EQ(4u, strs2.size()); EXPECT_FALSE(strs2[0]);
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_macros.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_macros.tmpl index f4909368..a177ebd 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_macros.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_macros.tmpl
@@ -108,11 +108,11 @@ mojo::Message {{message_object_name}}( {{message_name}}, {{flags_text}}, 0, 0, nullptr); {%- endif %} - {{params_struct|get_qualified_name_for_kind(internal=True)}}::BufferWriter - params; + mojo::internal::MessageFragment< + {{params_struct|get_qualified_name_for_kind(internal=True)}}> params( + {{message_object_name}}); {{struct_macros.serialize( - params_struct, params_description, param_name_prefix, "params", - "&" + message_object_name)}} + params_struct, params_description, param_name_prefix, "params")}} {%- endmacro %} {%- macro define_message_type(interface, message_typename, message_name, @@ -258,10 +258,11 @@ private: // mojo::internal::UnserializedMessageContext: void Serialize(mojo::Message& message) override { - {{params_struct|get_qualified_name_for_kind(internal=True)}}::BufferWriter - params; - {{struct_macros.serialize(params_struct, params_description, "param_%s_", - "params", "&message")}} + mojo::internal::MessageFragment< + {{params_struct|get_qualified_name_for_kind(internal=True)}}> params( + message); + {{struct_macros.serialize( + params_struct, params_description, "param_%s_", "params")}} } {%- for param in parameters %}
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_declaration.tmpl index 5f90c0d..93bd9760 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_declaration.tmpl
@@ -2,30 +2,6 @@ class {{export_attribute}} {{class_name}} { public: - class BufferWriter { - public: - BufferWriter() = default; - - void Allocate(mojo::internal::Buffer* serialization_buffer) { - serialization_buffer_ = serialization_buffer; - index_ = serialization_buffer_->Allocate(sizeof({{class_name}})); - new (data()) {{class_name}}(); - } - - bool is_null() const { return !serialization_buffer_; } - {{class_name}}* data() { - DCHECK(!is_null()); - return serialization_buffer_->Get<{{class_name}}>(index_); - } - {{class_name}}* operator->() { return data(); } - - private: - mojo::internal::Buffer* serialization_buffer_ = nullptr; - size_t index_ = 0; - - DISALLOW_COPY_AND_ASSIGN(BufferWriter); - }; - static bool Validate(const void* data, mojo::internal::ValidationContext* validation_context); @@ -58,6 +34,8 @@ {%- endif %} private: + friend class mojo::internal::MessageFragment<{{class_name}}>; + {{class_name}}(); ~{{class_name}}() = delete; };
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl index c42acce..0d110d0 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl
@@ -7,17 +7,16 @@ |input_field_pattern| should be a pattern that contains one string placeholder, for example, "input->%s", "p_%s". The placeholder will be substituted with struct field names to refer to the input fields. - |writer| is the name of the BufferWriter to use for allocation and writing. - |message| is the name of the Message object we're serializing into. + |fragment| is the name of the MessageFragment to serialize into. |input_may_be_temp|: please see the comments of get_serialized_size. This macro is expanded to do serialization for both: - user-defined structs: the input is an instance of the corresponding struct wrapper class. - method parameters/response parameters: the input is a list of arguments. #} -{%- macro serialize(struct, struct_display_name, input_field_pattern, writer, - message, input_may_be_temp=False) -%} - {{writer}}.Allocate(({{message}})->payload_buffer()); +{%- macro serialize(struct, struct_display_name, input_field_pattern, fragment, + input_may_be_temp=False) -%} + {{fragment}}.Allocate(); {%- for pf in struct.packed.packed_fields_in_ordinal_order %} {%- set input_field = input_field_pattern|format(pf.field.name) %} {%- set name = pf.field.name %} @@ -35,42 +34,43 @@ {%- if kind|is_object_kind %} {%- if kind|is_array_kind or kind|is_map_kind %} - typename decltype({{writer}}->{{name}})::BaseType::BufferWriter - {{name}}_writer; + mojo::internal::MessageFragment< + typename decltype({{fragment}}->{{name}})::BaseType> + {{name}}_fragment({{fragment}}.message()); const mojo::internal::ContainerValidateParams {{name}}_validate_params( {{kind|get_container_validate_params_ctor_args|indent(10)}}); mojo::internal::Serialize<{{serializer_type}}>( - {{input_field}}, &{{name}}_writer, &{{name}}_validate_params, - {{message}}); - {{writer}}->{{name}}.Set( - {{name}}_writer.is_null() ? nullptr : {{name}}_writer.data()); + {{input_field}}, {{name}}_fragment, &{{name}}_validate_params); + {{fragment}}->{{name}}.Set( + {{name}}_fragment.is_null() ? nullptr : {{name}}_fragment.data()); {%- elif kind|is_union_kind %} - typename decltype({{writer}}->{{name}})::BufferWriter {{name}}_writer; - {{name}}_writer.AllocateInline(({{message}})->payload_buffer(), - &{{writer}}->{{name}}); + mojo::internal::MessageFragment<decltype({{fragment}}->{{name}})> + {{name}}_fragment({{fragment}}.message()); + {{name}}_fragment.Claim(&{{fragment}}->{{name}}); mojo::internal::Serialize<{{serializer_type}}>( - {{input_field}}, &{{name}}_writer, true, {{message}}); + {{input_field}}, {{name}}_fragment, true); {%- else %} - typename decltype({{writer}}->{{name}})::BaseType::BufferWriter - {{name}}_writer; + mojo::internal::MessageFragment< + typename decltype({{fragment}}->{{name}})::BaseType> {{name}}_fragment( + {{fragment}}.message()); mojo::internal::Serialize<{{serializer_type}}>( - {{input_field}}, &{{name}}_writer, {{message}}); - {{writer}}->{{name}}.Set( - {{name}}_writer.is_null() ? nullptr : {{name}}_writer.data()); + {{input_field}}, {{name}}_fragment); + {{fragment}}->{{name}}.Set( + {{name}}_fragment.is_null() ? nullptr : {{name}}_fragment.data()); {%- endif %} {%- if not kind|is_nullable_kind %} MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( - {{writer}}->{{name}}.is_null(), + {{fragment}}->{{name}}.is_null(), mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, "null {{name}} in {{struct_display_name}}"); {%- endif %} {%- elif kind|is_any_handle_or_interface_kind %} mojo::internal::Serialize<{{serializer_type}}>( - {{input_field}}, &{{writer}}->{{name}}, {{message}}); + {{input_field}}, &{{fragment}}->{{name}}, &{{fragment}}.message()); {%- if not kind|is_nullable_kind %} MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( - !mojo::internal::IsHandleOrInterfaceValid({{writer}}->{{name}}), + !mojo::internal::IsHandleOrInterfaceValid({{fragment}}->{{name}}), {%- if kind|is_associated_kind %} mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID, {%- else %} @@ -81,10 +81,10 @@ {%- elif kind|is_enum_kind %} mojo::internal::Serialize<{{serializer_type}}>( - {{input_field}}, &{{writer}}->{{name}}); + {{input_field}}, &{{fragment}}->{{name}}); {%- else %} - {{writer}}->{{name}} = {{input_field}}; + {{fragment}}->{{name}} = {{input_field}}; {%- endif %} {%- endfor %} {%- endmacro -%}
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl index 56317fa..594528e9 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl
@@ -11,15 +11,14 @@ using UserType = typename std::remove_const<MaybeConstUserType>::type; using Traits = StructTraits<{{data_view}}, UserType>; - static void Serialize(MaybeConstUserType& input, - {{data_type}}::BufferWriter* output, - Message* message) { + static void Serialize( + MaybeConstUserType& input, + mojo::internal::MessageFragment<{{data_type}}>& fragment) { if (CallIsNullIfExists<Traits>(input)) return; {{struct_macros.serialize( - struct, struct.name ~ " struct", - "Traits::%s(input)", "(*output)", - "message", True)|indent(2)}} + struct, struct.name ~ " struct", "Traits::%s(input)", "fragment", + True)|indent(2)}} } static bool Deserialize({{data_type}}* input,
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_unserialized_message_context.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_unserialized_message_context.tmpl index e7b2e97..d456b38 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_unserialized_message_context.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_unserialized_message_context.tmpl
@@ -20,8 +20,8 @@ private: // mojo::internal::UnserializedMessageContext: void Serialize(mojo::Message& message) override { - {{struct.name}}_Data::BufferWriter writer; - mojo::internal::Serialize<DataView>(user_data_, &writer, &message); + mojo::internal::MessageFragment<{{struct.name}}_Data> fragment(message); + mojo::internal::Serialize<DataView>(user_data_, fragment); } UserType user_data_;
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl index 3576693..dd00743 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl
@@ -18,39 +18,6 @@ // non-inlined union. ~{{class_name}}() {} - class BufferWriter { - public: - BufferWriter() = default; - - void Allocate(mojo::internal::Buffer* serialization_buffer) { - serialization_buffer_ = serialization_buffer; - index_ = serialization_buffer_->Allocate(sizeof({{class_name}})); - new (data()) {{class_name}}(); - } - - void AllocateInline(mojo::internal::Buffer* serialization_buffer, - void* ptr) { - const char* start = static_cast<const char*>( - serialization_buffer->data()); - const char* slot = static_cast<const char*>(ptr); - DCHECK_GT(slot, start); - serialization_buffer_ = serialization_buffer; - index_ = slot - start; - new (data()) {{class_name}}(); - } - - bool is_null() const { return !serialization_buffer_; } - {{class_name}}* data() { - DCHECK(!is_null()); - return serialization_buffer_->Get<{{class_name}}>(index_); - } - {{class_name}}* operator->() { return data(); } - - private: - mojo::internal::Buffer* serialization_buffer_ = nullptr; - size_t index_ = 0; - }; - static bool Validate(const void* data, mojo::internal::ValidationContext* validation_context, bool inlined);
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl index ebbd44a..72d43cc 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl
@@ -9,24 +9,22 @@ using Traits = UnionTraits<{{data_view}}, UserType>; static void Serialize(MaybeConstUserType& input, - {{data_type}}::BufferWriter* writer, - bool inlined, - Message* message) { + MessageFragment<{{data_type}}>& fragment, + bool inlined) { if (CallIsNullIfExists<Traits>(input)) { if (inlined) - writer->data()->set_null(); + fragment->set_null(); return; } - if (!inlined) - writer->Allocate(message->payload_buffer()); - {{data_type}}::BufferWriter& result = *writer; - ALLOW_UNUSED_LOCAL(result); + if (!inlined) + fragment.Allocate(); + // TODO(azani): Handle unknown and objects. // Set the not-null flag. - result->size = kUnionDataSize; - result->tag = Traits::GetTag(input); - switch (result->tag) { + fragment->size = kUnionDataSize; + fragment->tag = Traits::GetTag(input); + switch (fragment->tag) { {%- for field in union.fields %} {%- set name = field.name %} {%- set kind = field.kind %} @@ -35,36 +33,36 @@ decltype(Traits::{{name}}(input)) in_{{name}} = Traits::{{name}}(input); {%- if kind|is_object_kind %} - typename decltype(result->data.f_{{name}})::BaseType::BufferWriter - value_writer; + mojo::internal::MessageFragment< + typename decltype(fragment->data.f_{{name}})::BaseType> + value_fragment(fragment.message()); {%- if kind|is_union_kind %} mojo::internal::Serialize<{{serializer_type}}>( - in_{{name}}, &value_writer, false, message); + in_{{name}}, value_fragment, false); {%- elif kind|is_array_kind or kind|is_map_kind %} const ContainerValidateParams {{name}}_validate_params( {{kind|get_container_validate_params_ctor_args|indent(16)}}); mojo::internal::Serialize<{{serializer_type}}>( - in_{{name}}, &value_writer, &{{name}}_validate_params, - message); + in_{{name}}, value_fragment, &{{name}}_validate_params); {%- else %} mojo::internal::Serialize<{{serializer_type}}>( - in_{{name}}, &value_writer, message); + in_{{name}}, value_fragment); {%- endif %} {%- if not kind|is_nullable_kind %} MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( - value_writer.is_null(), + value_fragment.is_null(), mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, "null {{name}} in {{union.name}} union"); {%- endif %} - result->data.f_{{name}}.Set( - value_writer.is_null() ? nullptr : value_writer.data()); + fragment->data.f_{{name}}.Set( + value_fragment.is_null() ? nullptr : value_fragment.data()); {%- elif kind|is_any_handle_or_interface_kind %} mojo::internal::Serialize<{{serializer_type}}>( - in_{{name}}, &result->data.f_{{name}}, message); + in_{{name}}, &fragment->data.f_{{name}}, &fragment.message()); {%- if not kind|is_nullable_kind %} MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( - !mojo::internal::IsHandleOrInterfaceValid(result->data.f_{{name}}), + !mojo::internal::IsHandleOrInterfaceValid(fragment->data.f_{{name}}), {%- if kind|is_associated_kind %} mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID, {%- else %} @@ -75,10 +73,10 @@ {%- elif kind|is_enum_kind %} mojo::internal::Serialize<{{serializer_type}}>( - in_{{name}}, &result->data.f_{{name}}); + in_{{name}}, &fragment->data.f_{{name}}); {%- else %} - result->data.f_{{name}} = in_{{name}}; + fragment->data.f_{{name}} = in_{{name}}; {%- endif %} break; }
diff --git a/mojo/public/tools/bindings/generators/mojolpm_templates/mojolpm_from_proto_macros.tmpl b/mojo/public/tools/bindings/generators/mojolpm_templates/mojolpm_from_proto_macros.tmpl index 54450c0..2362654 100644 --- a/mojo/public/tools/bindings/generators/mojolpm_templates/mojolpm_from_proto_macros.tmpl +++ b/mojo/public/tools/bindings/generators/mojolpm_templates/mojolpm_from_proto_macros.tmpl
@@ -247,13 +247,14 @@ {%- set dataview_type = (struct|get_qualified_name_for_kind(flatten_nested_kind=True)) ~ "DataView" %} {%- set data_type = (struct|get_qualified_name_for_kind(flatten_nested_kind=True, internal=True)) %} ::mojo::Message mojolpm_message(0, 0, 0, 0, nullptr); - {{data_type}}::BufferWriter mojolpm_writer; + ::mojo::internal::MessageFragment<{{data_type}}> mojolpm_fragment( + mojolpm_message); bool result = false; ::mojo::internal::Serializer<{{dataview_type}}, const {{struct_type}}>::Serialize( - input, &mojolpm_writer, &mojolpm_message); + input, mojolpm_fragment); result = ::mojo::internal::Serializer<{{dataview_type}}, {{mojom_type}}>::Deserialize( - mojolpm_writer.data(), &output, &mojolpm_message); + mojolpm_fragment.data(), &output, &mojolpm_message); return result; @@ -324,12 +325,13 @@ {%- set dataview_type = (union|get_qualified_name_for_kind(flatten_nested_kind=True)) ~ "DataView" %} {%- set data_type = (union|get_qualified_name_for_kind(flatten_nested_kind=True, internal=True)) %} ::mojo::Message mojolpm_message(0, 0, 0, 0, nullptr); - {{data_type}}::BufferWriter mojolpm_writer; + mojo::internal::MessageFragment<{{data_type}}> mojolpm_fragment( + mojolpm_message); ::mojo::internal::Serializer<{{dataview_type}}, const {{union_type}}>::Serialize( - input, &mojolpm_writer, false, &mojolpm_message); + input, mojolpm_fragment, false); return ::mojo::internal::Serializer<{{dataview_type}}, {{mojom_type}}>::Deserialize( - mojolpm_writer.data(), &output, &mojolpm_message); + mojolpm_fragment.data(), &output, &mojolpm_message); {%- else %} switch (input.union_member_case()) { {%- for field in union.fields %}
diff --git a/net/log/net_log_event_type_list.h b/net/log/net_log_event_type_list.h index 04e817fb..92848070 100644 --- a/net/log/net_log_event_type_list.h +++ b/net/log/net_log_event_type_list.h
@@ -2437,6 +2437,13 @@ // } EVENT_TYPE(QUIC_PORT_MIGRATION_SUCCESS) +// A UDP socket error occurred while trying to read a QUIC packet. +// The following parameters are attached to the event: +// { +// "net_error": <Integer code for the specific error type>, +// } +EVENT_TYPE(QUIC_READ_ERROR) + // ------------------------------------------------------------------------ // HttpStreamParser // ------------------------------------------------------------------------
diff --git a/net/quic/quic_chromium_packet_reader.cc b/net/quic/quic_chromium_packet_reader.cc index 39a56c9b..8d6d807b 100644 --- a/net/quic/quic_chromium_packet_reader.cc +++ b/net/quic/quic_chromium_packet_reader.cc
@@ -85,6 +85,10 @@ bool QuicChromiumPacketReader::ProcessReadResult(int result) { read_pending_ = false; + if (result <= 0 && net_log_.IsCapturing()) { + net_log_.AddEventWithIntParams(NetLogEventType::QUIC_READ_ERROR, + "net_error", result); + } if (result == 0) { // 0-length UDP packets are legal but useless, ignore them. return true;
diff --git a/services/tracing/public/cpp/perfetto/perfetto_config.cc b/services/tracing/public/cpp/perfetto/perfetto_config.cc index de0d18a..a8f33a3 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_config.cc +++ b/services/tracing/public/cpp/perfetto/perfetto_config.cc
@@ -28,7 +28,8 @@ const std::string& chrome_config_string, bool privacy_filtering_enabled, bool convert_to_legacy_json, - perfetto::protos::gen::ChromeConfig::ClientPriority client_priority) { + perfetto::protos::gen::ChromeConfig::ClientPriority client_priority, + const std::string& json_agent_label_filter) { auto* data_source = perfetto_config->add_data_sources(); auto* source_config = data_source->mutable_config(); source_config->set_name(name); @@ -38,6 +39,10 @@ chrome_config->set_privacy_filtering_enabled(privacy_filtering_enabled); chrome_config->set_convert_to_legacy_json(convert_to_legacy_json); chrome_config->set_client_priority(client_priority); + + if (!json_agent_label_filter.empty()) + chrome_config->set_json_agent_label_filter(json_agent_label_filter); + return data_source; } @@ -48,7 +53,8 @@ const std::set<std::string>& source_names, bool privacy_filtering_enabled, bool convert_to_legacy_json, - perfetto::protos::gen::ChromeConfig::ClientPriority client_priority) { + perfetto::protos::gen::ChromeConfig::ClientPriority client_priority, + const std::string& json_agent_label_filter) { const std::string chrome_config_string = stripped_config.ToString(); if (stripped_config.IsCategoryGroupEnabled( @@ -56,10 +62,10 @@ DCHECK(source_names.empty() || source_names.count( tracing::mojom::kMemoryInstrumentationDataSourceName)); - AddDataSourceConfig(perfetto_config, - tracing::mojom::kMemoryInstrumentationDataSourceName, - chrome_config_string, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + AddDataSourceConfig( + perfetto_config, tracing::mojom::kMemoryInstrumentationDataSourceName, + chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json, + client_priority, json_agent_label_filter); } // Capture actual trace events. @@ -68,7 +74,7 @@ auto* trace_event_data_source = AddDataSourceConfig( perfetto_config, tracing::mojom::kTraceEventDataSourceName, chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json, - client_priority); + client_priority, json_agent_label_filter); for (auto& enabled_pid : process_filters.included_process_ids()) { *trace_event_data_source->add_producer_name_filter() = base::StrCat( {mojom::kPerfettoProducerNamePrefix, @@ -85,20 +91,20 @@ (BUILDFLAG(IS_CHROMECAST) && defined(OS_LINUX)) if (source_names.empty() || source_names.count(tracing::mojom::kSystemTraceDataSourceName) == 1) { - AddDataSourceConfig(perfetto_config, - tracing::mojom::kSystemTraceDataSourceName, - chrome_config_string, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + AddDataSourceConfig( + perfetto_config, tracing::mojom::kSystemTraceDataSourceName, + chrome_config_string, privacy_filtering_enabled, + convert_to_legacy_json, client_priority, json_agent_label_filter); } #endif #if BUILDFLAG(IS_CHROMEOS_ASH) if (source_names.empty() || source_names.count(tracing::mojom::kArcTraceDataSourceName) == 1) { - AddDataSourceConfig(perfetto_config, - tracing::mojom::kArcTraceDataSourceName, - chrome_config_string, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + AddDataSourceConfig( + perfetto_config, tracing::mojom::kArcTraceDataSourceName, + chrome_config_string, privacy_filtering_enabled, + convert_to_legacy_json, client_priority, json_agent_label_filter); } #endif } @@ -108,7 +114,8 @@ source_names.count(tracing::mojom::kMetaDataSourceName) == 1) { AddDataSourceConfig(perfetto_config, tracing::mojom::kMetaDataSourceName, chrome_config_string, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + convert_to_legacy_json, client_priority, + json_agent_label_filter); } if (stripped_config.IsCategoryGroupEnabled( @@ -116,10 +123,10 @@ DCHECK_EQ( 1u, source_names.empty() || source_names.count(tracing::mojom::kSamplerProfilerSourceName)); - AddDataSourceConfig(perfetto_config, - tracing::mojom::kSamplerProfilerSourceName, - chrome_config_string, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + AddDataSourceConfig( + perfetto_config, tracing::mojom::kSamplerProfilerSourceName, + chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json, + client_priority, json_agent_label_filter); } if (stripped_config.IsCategoryGroupEnabled( @@ -127,18 +134,18 @@ DCHECK_EQ(1u, source_names.empty() || source_names.count( tracing::mojom::kJavaHeapProfilerSourceName)); - AddDataSourceConfig(perfetto_config, - tracing::mojom::kJavaHeapProfilerSourceName, - chrome_config_string, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + AddDataSourceConfig( + perfetto_config, tracing::mojom::kJavaHeapProfilerSourceName, + chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json, + client_priority, json_agent_label_filter); } if (source_names.empty() || source_names.count(tracing::mojom::kReachedCodeProfilerSourceName) == 1) { - AddDataSourceConfig(perfetto_config, - tracing::mojom::kReachedCodeProfilerSourceName, - chrome_config_string, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + AddDataSourceConfig( + perfetto_config, tracing::mojom::kReachedCodeProfilerSourceName, + chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json, + client_priority, json_agent_label_filter); } } @@ -148,10 +155,11 @@ const base::trace_event::TraceConfig& chrome_config, bool privacy_filtering_enabled, bool convert_to_legacy_json, - perfetto::protos::gen::ChromeConfig::ClientPriority client_priority) { + perfetto::protos::gen::ChromeConfig::ClientPriority client_priority, + const std::string& json_agent_label_filter) { return GetPerfettoConfigWithDataSources( chrome_config, {}, privacy_filtering_enabled, convert_to_legacy_json, - client_priority); + client_priority, json_agent_label_filter); } perfetto::TraceConfig COMPONENT_EXPORT(TRACING_CPP) @@ -160,7 +168,8 @@ const std::set<std::string>& source_names, bool privacy_filtering_enabled, bool convert_to_legacy_json, - perfetto::protos::gen::ChromeConfig::ClientPriority client_priority) { + perfetto::protos::gen::ChromeConfig::ClientPriority client_priority, + const std::string& json_agent_label_filter) { perfetto::TraceConfig perfetto_config; size_t size_limit = chrome_config.GetTraceBufferSizeInKb(); @@ -222,7 +231,8 @@ AddDataSourceConfigs(&perfetto_config, chrome_config.process_filter_config(), stripped_config, source_names, privacy_filtering_enabled, - convert_to_legacy_json, client_priority); + convert_to_legacy_json, client_priority, + json_agent_label_filter); return perfetto_config; }
diff --git a/services/tracing/public/cpp/perfetto/perfetto_config.h b/services/tracing/public/cpp/perfetto/perfetto_config.h index 1525335..8e710e5 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_config.h +++ b/services/tracing/public/cpp/perfetto/perfetto_config.h
@@ -25,7 +25,8 @@ bool privacy_filtering_enabled = false, bool convert_to_legacy_json = false, perfetto::protos::gen::ChromeConfig::ClientPriority = - perfetto::protos::gen::ChromeConfig::USER_INITIATED); + perfetto::protos::gen::ChromeConfig::USER_INITIATED, + const std::string& json_agent_label_filter = ""); // Creates a perfetto trace config with only the data sources included in // |source_names| and enabled by |trace_config|. Passing empty set will add all @@ -38,7 +39,8 @@ bool privacy_filtering_enabled = false, bool convert_to_legacy_json = false, perfetto::protos::gen::ChromeConfig::ClientPriority = - perfetto::protos::gen::ChromeConfig::USER_INITIATED); + perfetto::protos::gen::ChromeConfig::USER_INITIATED, + const std::string& json_agent_label_filter = ""); } // namespace tracing
diff --git a/services/tracing/public/cpp/perfetto/perfetto_session.cc b/services/tracing/public/cpp/perfetto/perfetto_session.cc index b3588ddc..51eabcf 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_session.cc +++ b/services/tracing/public/cpp/perfetto/perfetto_session.cc
@@ -2,8 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "services/tracing/public/cpp/perfetto/perfetto_session.h" +#include "base/callback.h" +#include "services/tracing/public/cpp/perfetto/perfetto_session.h" +#include "services/tracing/public/cpp/perfetto/trace_packet_tokenizer.h" + +#include "third_party/perfetto/include/perfetto/ext/tracing/core/trace_packet.h" #include "third_party/perfetto/protos/perfetto/common/trace_stats.gen.h" namespace tracing { @@ -32,4 +36,74 @@ buf_stats.trace_writer_packet_loss() > 0; } +void ReadTraceStats( + const perfetto::TracingSession::GetTraceStatsCallbackArgs& args, + base::OnceCallback<void(bool success, float percent_full, bool data_loss)> + on_stats_callback, + const scoped_refptr<base::SequencedTaskRunner>& task_runner) { + float percent_full = 0; + bool data_lost = false; + perfetto::TraceStats trace_stats; + + if (args.success && + trace_stats.ParseFromArray(args.trace_stats_data.data(), + args.trace_stats_data.size())) { + percent_full = GetTraceBufferUsage(trace_stats); + data_lost = HasLostData(trace_stats); + } + + task_runner->PostTask( + FROM_HERE, base::BindOnce(std::move(on_stats_callback), args.success, + percent_full, data_lost)); +} + +void ReadTraceAsJson( + const perfetto::TracingSession::ReadTraceCallbackArgs& args, + const scoped_refptr< + base::RefCountedData<std::unique_ptr<TracePacketTokenizer>>>& tokenizer, + base::OnceCallback<void(std::unique_ptr<std::string>)> on_data_callback, + base::OnceClosure on_data_complete_callback, + const scoped_refptr<base::SequencedTaskRunner>& task_runner) { + if (args.size) { + std::vector<perfetto::TracePacket> packets = tokenizer->data->Parse( + reinterpret_cast<const uint8_t*>(args.data), args.size); + size_t total_size = 0; + for (const auto& packet : packets) { + for (const auto& slice : packet.slices()) { + total_size += slice.size; + } + } + if (total_size > 0) { + auto data_string = std::make_unique<std::string>(); + data_string->reserve(total_size); + for (const auto& packet : packets) { + for (const auto& slice : packet.slices()) { + data_string->append(reinterpret_cast<const char*>(slice.start), + slice.size); + } + } + task_runner->PostTask( + FROM_HERE, + base::BindOnce(std::move(on_data_callback), std::move(data_string))); + } + } + if (!args.has_more) + task_runner->PostTask(FROM_HERE, + base::BindOnce(std::move(on_data_complete_callback))); +} + +void ReadTraceAsProtobuf( + const perfetto::TracingSession::ReadTraceCallbackArgs& args, + base::OnceCallback<void(std::unique_ptr<std::string>)> on_data_callback, + base::OnceClosure on_data_complete_callback, + const scoped_refptr<base::SequencedTaskRunner>& task_runner) { + if (args.size) { + auto data_string = std::make_unique<std::string>(args.data, args.size); + task_runner->PostTask(FROM_HERE, base::BindOnce(std::move(on_data_callback), + std::move(data_string))); + } + if (!args.has_more) + task_runner->PostTask(FROM_HERE, std::move(on_data_complete_callback)); +} + } // namespace tracing \ No newline at end of file
diff --git a/services/tracing/public/cpp/perfetto/perfetto_session.h b/services/tracing/public/cpp/perfetto/perfetto_session.h index 9f6e0dd..bf3f924b 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_session.h +++ b/services/tracing/public/cpp/perfetto/perfetto_session.h
@@ -8,7 +8,11 @@ #include <set> #include <string> +#include "base/callback_forward.h" #include "base/component_export.h" +#include "base/sequenced_task_runner.h" + +#include "third_party/perfetto/include/perfetto/tracing/tracing.h" namespace perfetto { namespace protos { @@ -19,6 +23,7 @@ } // namespace perfetto namespace tracing { +class TracePacketTokenizer; // Helpers for deriving information from Perfetto's tracing session statistics. double COMPONENT_EXPORT(TRACING_CPP) @@ -26,6 +31,26 @@ bool COMPONENT_EXPORT(TRACING_CPP) HasLostData(const perfetto::protos::gen::TraceStats&); +void COMPONENT_EXPORT(TRACING_CPP) ReadTraceStats( + const perfetto::TracingSession::GetTraceStatsCallbackArgs& args, + base::OnceCallback<void(bool success, float percent_full, bool data_loss)> + on_stats_callback, + const scoped_refptr<base::SequencedTaskRunner>& task_runner); + +void COMPONENT_EXPORT(TRACING_CPP) ReadTraceAsJson( + const perfetto::TracingSession::ReadTraceCallbackArgs& args, + const scoped_refptr< + base::RefCountedData<std::unique_ptr<TracePacketTokenizer>>>& tokenizer, + base::OnceCallback<void(std::unique_ptr<std::string>)> on_data_callback, + base::OnceClosure on_data_complete_callback, + const scoped_refptr<base::SequencedTaskRunner>& task_runner); + +void COMPONENT_EXPORT(TRACING_CPP) ReadTraceAsProtobuf( + const perfetto::TracingSession::ReadTraceCallbackArgs& args, + base::OnceCallback<void(std::unique_ptr<std::string>)> on_data_callback, + base::OnceClosure on_data_complete_callback, + const scoped_refptr<base::SequencedTaskRunner>& task_runner); + } // namespace tracing #endif // SERVICES_TRACING_PUBLIC_CPP_PERFETTO_PERFETTO_SESSION_H_ \ No newline at end of file
diff --git a/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc b/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc index c0fbf47..8e981e3 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc +++ b/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc
@@ -433,7 +433,8 @@ if (data_source.config().has_chrome_config() && data_source.config().chrome_config().convert_to_legacy_json()) { tracing_session_host_->DisableTracingAndEmitJson( - /*agent_label_filter=*/"", std::move(producer_handle), + data_source.config().chrome_config().json_agent_label_filter(), + std::move(producer_handle), data_source.config().chrome_config().privacy_filtering_enabled(), base::BindOnce(&ConsumerEndpoint::OnReadBuffersComplete, base::Unretained(this)));
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index e6608795..5d5f95d0 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -35,7 +35,7 @@ "ignore_task_failure": false, "io_timeout": 21600, "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 8 + "shards": 10 }, "trigger_script": { "args": [
diff --git a/third_party/androidx/fetch_all_androidx.py b/third_party/androidx/fetch_all_androidx.py index b09c568..d1a8882 100755 --- a/third_party/androidx/fetch_all_androidx.py +++ b/third_party/androidx/fetch_all_androidx.py
@@ -32,6 +32,13 @@ # URL to BUILD_INFO in latest androidx snapshot. _ANDROIDX_LATEST_SNAPSHOT_BUILD_INFO_URL = 'https://androidx.dev/snapshots/latest/artifacts/BUILD_INFO' +# Snapshot repository URL with {{version}} placeholder. +_SNAPSHOT_REPOSITORY_URL = 'https://androidx.dev/snapshots/builds/{{version}}/artifacts/repository' + + +def _build_snapshot_repository_url(version): + return _SNAPSHOT_REPOSITORY_URL.replace('{{version}}', version) + def _delete_readonly_files(paths): for path in paths: @@ -105,17 +112,19 @@ with open(androidx_build_info_path, 'w') as f: f.write(androidx_build_info_response.read().decode('utf-8')) - # Compute repository URL from resolved BUILD_INFO url in case 'latest' redirect changes. - androidx_snapshot_repository_url = ( - androidx_build_info_response.geturl().rsplit('/', 1)[0] + - '/repository') + # Strip '/repository' from pattern. + resolved_snapshot_repository_url_pattern = ( + _build_snapshot_repository_url('([0-9]*)').rsplit('/', 1)[0]) + + version = re.match(resolved_snapshot_repository_url_pattern, + androidx_build_info_response.geturl()).group(1) with open(androidx_build_info_path, 'r') as f: build_info_dict = json.loads(f.read()) dir_list = build_info_dict['target']['dir_list'] dependency_version_map = _parse_dir_list(dir_list) - return (dependency_version_map, androidx_snapshot_repository_url) + return (dependency_version_map, version) def _process_build_gradle(dependency_version_map, androidx_repository_url): @@ -139,7 +148,7 @@ out.write(replacement) -def _write_cipd_yaml(libs_dir, cipd_yaml_path): +def _write_cipd_yaml(libs_dir, version, cipd_yaml_path): """Writes cipd.yaml file at the passed-in path.""" lib_dirs = os.listdir(libs_dir) @@ -161,12 +170,15 @@ continue data_files.append(os.path.join(androidx_rel_lib_dir, lib_file)) + # Prepend '0' to version to avoid conflicts with previous version format. contents = [ '# Copyright 2020 The Chromium Authors. All rights reserved.', '# Use of this source code is governed by a BSD-style license that can be', '# found in the LICENSE file.', - 'package: chromium/third_party/androidx', 'description: androidx', - 'data:' + '# version: cr-0' + version, + 'package: chromium/third_party/androidx', + 'description: androidx', + 'data:', ] contents.extend('- file: ' + f for f in data_files) @@ -189,8 +201,8 @@ os.path.join(_ANDROIDX_PATH, 'additional_readme_paths.json'), ]) - dependency_version_map, androidx_snapshot_repository_url = ( - _download_and_parse_build_info()) + dependency_version_map, version = _download_and_parse_build_info() + androidx_snapshot_repository_url = _build_snapshot_repository_url(version) _process_build_gradle(dependency_version_map, androidx_snapshot_repository_url) @@ -200,7 +212,8 @@ ] subprocess.run(fetch_all_cmd, check=True) - _write_cipd_yaml(libs_dir, os.path.join(_ANDROIDX_PATH, 'cipd.yaml')) + yaml_path = os.path.join(_ANDROIDX_PATH, 'cipd.yaml') + _write_cipd_yaml(libs_dir, version, yaml_path) if __name__ == '__main__':
diff --git a/third_party/blink/renderer/bindings/core/v8/generated.gni b/third_party/blink/renderer/bindings/core/v8/generated.gni index 01938ee0..a536341 100644 --- a/third_party/blink/renderer/bindings/core/v8/generated.gni +++ b/third_party/blink/renderer/bindings/core/v8/generated.gni
@@ -64,8 +64,6 @@ "$bindings_core_v8_output_dir/html_option_element_or_html_opt_group_element.h", "$bindings_core_v8_output_dir/html_script_element_or_svg_script_element.cc", "$bindings_core_v8_output_dir/html_script_element_or_svg_script_element.h", - "$bindings_core_v8_output_dir/image_bitmap_source.cc", - "$bindings_core_v8_output_dir/image_bitmap_source.h", "$bindings_core_v8_output_dir/internal_enum_or_internal_enum_sequence.cc", "$bindings_core_v8_output_dir/internal_enum_or_internal_enum_sequence.h", "$bindings_core_v8_output_dir/media_list_or_string.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index b11cb53..a271375 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -88,6 +88,8 @@ "//third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl", "//third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl", "//third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_rendering_context.idl", + "//third_party/blink/renderer/modules/canvas/imagebitmap/window_create_image_bitmap.idl", + "//third_party/blink/renderer/modules/canvas/imagebitmap/worker_create_image_bitmap.idl", "//third_party/blink/renderer/modules/canvas/offscreencanvas/offscreen_canvas_module.idl", "//third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl", "//third_party/blink/renderer/modules/clipboard/clipboard.idl",
diff --git a/third_party/blink/renderer/bindings/modules/v8/generated.gni b/third_party/blink/renderer/bindings/modules/v8/generated.gni index 4b51c2e..a8592c3a 100644 --- a/third_party/blink/renderer/bindings/modules/v8/generated.gni +++ b/third_party/blink/renderer/bindings/modules/v8/generated.gni
@@ -73,6 +73,8 @@ "$bindings_modules_v8_output_dir/idb_object_store_or_idb_index.h", "$bindings_modules_v8_output_dir/idb_object_store_or_idb_index_or_idb_cursor.cc", "$bindings_modules_v8_output_dir/idb_object_store_or_idb_index_or_idb_cursor.h", + "$bindings_modules_v8_output_dir/image_bitmap_source.cc", + "$bindings_modules_v8_output_dir/image_bitmap_source.h", "$bindings_modules_v8_output_dir/int32_array_or_long_sequence.cc", "$bindings_modules_v8_output_dir/int32_array_or_long_sequence.h", "$bindings_modules_v8_output_dir/long_or_constrain_long_range.cc",
diff --git a/third_party/blink/renderer/core/editing/commands/composite_edit_command.cc b/third_party/blink/renderer/core/editing/commands/composite_edit_command.cc index 70f644f..c8116dd 100644 --- a/third_party/blink/renderer/core/editing/commands/composite_edit_command.cc +++ b/third_party/blink/renderer/core/editing/commands/composite_edit_command.cc
@@ -1137,6 +1137,9 @@ visible_pos = CreateVisiblePosition(pos); visible_paragraph_start = StartOfParagraph(visible_pos); visible_paragraph_end = EndOfParagraph(visible_pos); + if (visible_paragraph_end.DeepEquivalent() < + visible_paragraph_start.DeepEquivalent()) + visible_paragraph_end = visible_paragraph_start; MoveParagraphs(visible_paragraph_start, visible_paragraph_end, destination, editing_state); if (editing_state->IsAborted())
diff --git a/third_party/blink/renderer/core/editing/commands/composite_edit_command_test.cc b/third_party/blink/renderer/core/editing/commands/composite_edit_command_test.cc index 004cdce..6bc2c26 100644 --- a/third_party/blink/renderer/core/editing/commands/composite_edit_command_test.cc +++ b/third_party/blink/renderer/core/editing/commands/composite_edit_command_test.cc
@@ -177,6 +177,24 @@ GetDocument().body()->innerHTML()); } +TEST_F(CompositeEditCommandTest, + MoveParagraphContentsToNewBlockWithButtonAndBr) { + GetDocument().setDesignMode("on"); + InsertStyleElement("br { content: 'x'; }"); + SetBodyContent("<button><br></button>"); + + SampleCommand& sample = *MakeGarbageCollected<SampleCommand>(GetDocument()); + Element* button = GetDocument().QuerySelector("button"); + Position pos = Position(button, 0); + EditingState editing_state; + + // Should not crash + sample.MoveParagraphContentsToNewBlockIfNecessary(pos, &editing_state); + EXPECT_FALSE(editing_state.IsAborted()); + EXPECT_EQ("<button><div><br></div><br></button>", + GetDocument().body()->innerHTML()); +} + TEST_F(CompositeEditCommandTest, InsertNodeOnDisconnectedParent) { SetBodyContent("<p><b></b></p>"); SampleCommand& sample = *MakeGarbageCollected<SampleCommand>(GetDocument());
diff --git a/third_party/blink/renderer/core/editing/editing_utilities.cc b/third_party/blink/renderer/core/editing/editing_utilities.cc index c63090c0..24428166 100644 --- a/third_party/blink/renderer/core/editing/editing_utilities.cc +++ b/third_party/blink/renderer/core/editing/editing_utilities.cc
@@ -1561,6 +1561,33 @@ return CreateVisiblePosition(range.StartPosition()); } +template <typename Strategy> +bool AreSameRangesAlgorithm(Node* node, + const PositionTemplate<Strategy>& start_position, + const PositionTemplate<Strategy>& end_position) { + DCHECK(node); + const EphemeralRange range = + CreateVisibleSelection( + SelectionInDOMTree::Builder().SelectAllChildren(*node).Build()) + .ToNormalizedEphemeralRange(); + return ToPositionInDOMTree(start_position) == range.StartPosition() && + ToPositionInDOMTree(end_position) == range.EndPosition(); +} + +bool AreSameRanges(Node* node, + const Position& start_position, + const Position& end_position) { + return AreSameRangesAlgorithm<EditingStrategy>(node, start_position, + end_position); +} + +bool AreSameRanges(Node* node, + const PositionInFlatTree& start_position, + const PositionInFlatTree& end_position) { + return AreSameRangesAlgorithm<EditingInFlatTreeStrategy>(node, start_position, + end_position); +} + bool IsRenderedAsNonInlineTableImageOrHR(const Node* node) { if (!node) return false;
diff --git a/third_party/blink/renderer/core/editing/editing_utilities.h b/third_party/blink/renderer/core/editing/editing_utilities.h index dfbf489..e530eb7c 100644 --- a/third_party/blink/renderer/core/editing/editing_utilities.h +++ b/third_party/blink/renderer/core/editing/editing_utilities.h
@@ -297,6 +297,13 @@ CORE_EXPORT VisiblePosition VisiblePositionForIndex(int index, ContainerNode* scope); +bool AreSameRanges(Node* node, + const Position& start_position, + const Position& end_position); +bool AreSameRanges(Node* node, + const PositionInFlatTree& start_position, + const PositionInFlatTree& end_position); + // ------------------------------------------------------------------------- // HTMLElement // -------------------------------------------------------------------------
diff --git a/third_party/blink/renderer/core/editing/serializers/serialization.cc b/third_party/blink/renderer/core/editing/serializers/serialization.cc index cddc1f4..34caf2e 100644 --- a/third_party/blink/renderer/core/editing/serializers/serialization.cc +++ b/third_party/blink/renderer/core/editing/serializers/serialization.cc
@@ -197,12 +197,7 @@ FirstPositionInOrBeforeNode(*first_node); if (Node* parent_list_node = EnclosingNodeOfType(first_node_position, IsListItem)) { - EphemeralRangeTemplate<Strategy> markup_range = - EphemeralRangeTemplate<Strategy>(start_position, end_position); - EphemeralRangeTemplate<Strategy> node_range = - NormalizeRange(EphemeralRangeTemplate<Strategy>::RangeOfContents( - *parent_list_node)); - if (node_range == markup_range) { + if (AreSameRanges(parent_list_node, start_position, end_position)) { ContainerNode* ancestor = parent_list_node->parentNode(); while (ancestor && !IsHTMLListElement(ancestor)) ancestor = ancestor->parentNode();
diff --git a/third_party/blink/renderer/core/editing/serializers/styled_markup_serializer.cc b/third_party/blink/renderer/core/editing/serializers/styled_markup_serializer.cc index d9e9edf..cebb9e1 100644 --- a/third_party/blink/renderer/core/editing/serializers/styled_markup_serializer.cc +++ b/third_party/blink/renderer/core/editing/serializers/styled_markup_serializer.cc
@@ -159,19 +159,6 @@ return NeedInterchangeNewlineAfter(PreviousPositionOf(v)); } -template <typename Strategy> -static bool AreSameRanges(Node* node, - const PositionTemplate<Strategy>& start_position, - const PositionTemplate<Strategy>& end_position) { - DCHECK(node); - const EphemeralRange range = - CreateVisibleSelection( - SelectionInDOMTree::Builder().SelectAllChildren(*node).Build()) - .ToNormalizedEphemeralRange(); - return ToPositionInDOMTree(start_position) == range.StartPosition() && - ToPositionInDOMTree(end_position) == range.EndPosition(); -} - static EditingStyle* StyleFromMatchedRulesAndInlineDecl( const HTMLElement* element) { EditingStyle* style =
diff --git a/third_party/blink/renderer/core/frame/window_or_worker_global_scope.cc b/third_party/blink/renderer/core/frame/window_or_worker_global_scope.cc index 10b32ed..86de8bf 100644 --- a/third_party/blink/renderer/core/frame/window_or_worker_global_scope.cc +++ b/third_party/blink/renderer/core/frame/window_or_worker_global_scope.cc
@@ -42,7 +42,6 @@ #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/page_dismissal_scope.h" #include "third_party/blink/renderer/core/html/parser/html_parser_idioms.h" -#include "third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h" #include "third_party/blink/renderer/core/trustedtypes/trusted_types_util.h" #include "third_party/blink/renderer/core/workers/worker_global_scope.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" @@ -222,30 +221,6 @@ DOMTimer::RemoveByID(context, timeout_id); } -ScriptPromise WindowOrWorkerGlobalScope::createImageBitmap( - ScriptState* script_state, - EventTarget&, - const ImageBitmapSourceUnion& bitmap_source, - const ImageBitmapOptions* options, - ExceptionState& exception_state) { - return ImageBitmapFactories::CreateImageBitmap(script_state, bitmap_source, - options, exception_state); -} - -ScriptPromise WindowOrWorkerGlobalScope::createImageBitmap( - ScriptState* script_state, - EventTarget&, - const ImageBitmapSourceUnion& bitmap_source, - int sx, - int sy, - int sw, - int sh, - const ImageBitmapOptions* options, - ExceptionState& exception_state) { - return ImageBitmapFactories::CreateImageBitmap( - script_state, bitmap_source, sx, sy, sw, sh, options, exception_state); -} - bool WindowOrWorkerGlobalScope::crossOriginIsolated( const ExecutionContext& execution_context) { return execution_context.CrossOriginIsolatedCapability();
diff --git a/third_party/blink/renderer/core/frame/window_or_worker_global_scope.h b/third_party/blink/renderer/core/frame/window_or_worker_global_scope.h index 16250b8..3a1d93b 100644 --- a/third_party/blink/renderer/core/frame/window_or_worker_global_scope.h +++ b/third_party/blink/renderer/core/frame/window_or_worker_global_scope.h
@@ -33,7 +33,9 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_WINDOW_OR_WORKER_GLOBAL_SCOPE_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_WINDOW_OR_WORKER_GLOBAL_SCOPE_H_ -#include "third_party/blink/renderer/bindings/core/v8/image_bitmap_source.h" +#include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/execution_context/execution_context.h" +#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/forward.h" #include "third_party/blink/renderer/platform/wtf/vector.h" @@ -42,15 +44,10 @@ class EventTarget; class ExceptionState; -class ImageBitmapOptions; -class ScriptPromise; class ScriptState; class ScriptValue; class V8Function; -typedef HTMLImageElementOrSVGImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrImageBitmapOrOffscreenCanvas - ImageBitmapSourceUnion; - class CORE_EXPORT WindowOrWorkerGlobalScope { STATIC_ONLY(WindowOrWorkerGlobalScope); @@ -85,21 +82,6 @@ static void clearTimeout(EventTarget&, int timeout_id); static void clearInterval(EventTarget&, int timeout_id); - static ScriptPromise createImageBitmap(ScriptState*, - EventTarget&, - const ImageBitmapSourceUnion&, - const ImageBitmapOptions*, - ExceptionState&); - static ScriptPromise createImageBitmap(ScriptState*, - EventTarget&, - const ImageBitmapSourceUnion&, - int sx, - int sy, - int sw, - int sh, - const ImageBitmapOptions*, - ExceptionState&); - static bool crossOriginIsolated(const ExecutionContext&); };
diff --git a/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl b/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl index 60191c05..5ad3584 100644 --- a/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl +++ b/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl
@@ -25,16 +25,6 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -// https://html.spec.whatwg.org/C/#imagebitmapsource -typedef (HTMLImageElement or - SVGImageElement or - HTMLVideoElement or - HTMLCanvasElement or - Blob or - ImageData or - ImageBitmap or - OffscreenCanvas) ImageBitmapSource; - // https://html.spec.whatwg.org/C/#windoworworkerglobalscope-mixin // https://html.spec.whatwg.org/C/#timers [ @@ -53,12 +43,6 @@ [CallWith=ScriptState] long setInterval(ScriptString handler, optional long timeout = 0, any... arguments); void clearInterval(optional long handle = 0); - // ImageBitmap - [CallWith=ScriptState, RaisesException] Promise<ImageBitmap> createImageBitmap( - ImageBitmapSource imageBitmap, optional ImageBitmapOptions options = {}); - [CallWith=ScriptState, RaisesException] Promise<ImageBitmap> createImageBitmap( - ImageBitmapSource imageBitmap, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options = {}); - [RuntimeEnabled=CrossOriginIsolation] readonly attribute boolean crossOriginIsolated; };
diff --git a/third_party/blink/renderer/core/html/forms/select_type.cc b/third_party/blink/renderer/core/html/forms/select_type.cc index 2197db3..3a02df5 100644 --- a/third_party/blink/renderer/core/html/forms/select_type.cc +++ b/third_party/blink/renderer/core/html/forms/select_type.cc
@@ -232,7 +232,7 @@ ->GetInputDeviceCapabilities() ->FiresTouchEvents(mouse_event->FromTouch()); select_->focus(FocusParams(SelectionBehaviorOnFocus::kRestore, - mojom::blink::FocusType::kNone, + mojom::blink::FocusType::kMouse, source_capabilities)); if (select_->GetLayoutObject() && !will_be_destroyed_ && !select_->IsDisabledFormControl()) {
diff --git a/third_party/blink/renderer/core/imagebitmap/build.gni b/third_party/blink/renderer/core/imagebitmap/build.gni index 3fe0219b..befd5f70 100644 --- a/third_party/blink/renderer/core/imagebitmap/build.gni +++ b/third_party/blink/renderer/core/imagebitmap/build.gni
@@ -5,8 +5,6 @@ blink_core_sources_imagebitmap = [ "image_bitmap.cc", "image_bitmap.h", - "image_bitmap_factories.cc", - "image_bitmap_factories.h", "image_bitmap_source.cc", "image_bitmap_source.h", ]
diff --git a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.cc b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.cc index 41301a3..c4474e9 100644 --- a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.cc +++ b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.cc
@@ -369,28 +369,6 @@ return LayoutRectOutsets(); } -// Effective column index is index of columns with mergeable -// columns skipped. Used in a11y. -unsigned LayoutNGTable::AbsoluteColumnToEffectiveColumn( - unsigned absolute_column_index) const { - NOT_DESTROYED(); - if (!cached_table_columns_) { - NOTREACHED(); - return absolute_column_index; - } - unsigned effective_column_index = 0; - unsigned column_count = cached_table_columns_.get()->data.size(); - for (unsigned current_column_index = 0; current_column_index < column_count; - ++current_column_index) { - if (current_column_index != 0 && - !cached_table_columns_.get()->data[current_column_index].is_mergeable) - ++effective_column_index; - if (current_column_index == absolute_column_index) - return effective_column_index; - } - return effective_column_index; -} - bool LayoutNGTable::IsFirstCell(const LayoutNGTableCellInterface& cell) const { NOT_DESTROYED(); const LayoutNGTableRowInterface* row = cell.RowInterface();
diff --git a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.h b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.h index c3eb81b..5c70f14 100644 --- a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.h +++ b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table.h
@@ -172,8 +172,14 @@ return ShouldCollapseBorders() ? 0 : StyleRef().VerticalBorderSpacing(); } + // Legacy had a concept of colspan column compression. This is a legacy + // method to map between absolute and compressed columns. + // Because NG does not compress columns, absolute and effective are the same. unsigned AbsoluteColumnToEffectiveColumn( - unsigned absolute_column_index) const final; + unsigned absolute_column_index) const final { + NOT_DESTROYED(); + return absolute_column_index; + } // NG does not need this method. Sections are not cached. void RecalcSectionsIfNeeded() const final {}
diff --git a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_section.cc b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_section.cc index e675fd2..b94c476 100644 --- a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_section.cc +++ b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_section.cc
@@ -132,12 +132,7 @@ // behaviour is correct. Consider removing these methods. unsigned LayoutNGTableSection::NumEffectiveColumns() const { NOT_DESTROYED(); - const LayoutNGTable* table = Table(); - DCHECK(table); - wtf_size_t column_count = table->ColumnCount(); - if (column_count == 0) - return 0; - return table->AbsoluteColumnToEffectiveColumn(column_count - 1) + 1; + return To<LayoutNGTable>(TableInterface()->ToLayoutObject())->ColumnCount(); } // TODO(crbug.com/1079133): Used by AXLayoutObject::IsDataTable/ColumnCount,
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc index 4621a92cc..768b3733 100644 --- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc
@@ -55,17 +55,9 @@ const NGTableTypes::Columns& column_constraints, LayoutUnit inline_table_border_padding, LayoutUnit inline_border_spacing) { - unsigned inline_space_count = 2; - bool is_first_column = true; - for (const NGTableTypes::Column& column : column_constraints.data) { - if (!column.is_mergeable) { - if (is_first_column) - is_first_column = false; - else - inline_space_count++; - } - } - + unsigned inline_space_count = 2 + (column_constraints.data.size() > 1 + ? column_constraints.data.size() - 1 + : 0); return inline_table_border_padding + inline_space_count * inline_border_spacing; } @@ -154,13 +146,7 @@ *has_collapsed_columns = *has_collapsed_columns || column_constraint.is_collapsed; column_location.offset = column_offset; - if (column_constraints.data[i].is_mergeable && - (column_sizes[i] == kIndefiniteSize || - column_sizes[i] == LayoutUnit())) { - // Empty mergeable columns are treated as collapsed. - column_location.size = LayoutUnit(); - column_location.is_collapsed = true; - } else if (shrink_collapsed && column_constraint.is_collapsed) { + if (shrink_collapsed && column_constraint.is_collapsed) { column_location.is_collapsed = true; column_location.size = LayoutUnit(); } else {
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers.cc index d7e735e..98b84d70 100644 --- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers.cc +++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers.cc
@@ -22,6 +22,7 @@ unsigned percent_columns_count = 0; unsigned fixed_columns_count = 0; unsigned auto_columns_count = 0; + // What guesses mean is described in table specification. // https://www.w3.org/TR/css-tables-3/#width-distribution-algorithm enum { kMinGuess, kPercentageGuess, kSpecifiedGuess, kMaxGuess, kAboveMax }; @@ -37,10 +38,7 @@ all_columns_count++; DCHECK(column->min_inline_size); DCHECK(column->max_inline_size); - - if (column->is_mergeable) { - ; // Mergeable columns are ignored. - } else if (column->percent) { + if (column->percent) { percent_columns_count++; total_percent += *column->percent; LayoutUnit percent_inline_size = @@ -94,8 +92,6 @@ LayoutUnit* computed_size = computed_sizes.begin(); for (const NGTableTypes::Column* column = start_column; column != end_column; ++column, ++computed_size) { - if (column->is_mergeable) - continue; *computed_size = column->min_inline_size.value_or(LayoutUnit()); } } break; @@ -110,8 +106,6 @@ LayoutUnit* last_computed_size = nullptr; for (const NGTableTypes::Column* column = start_column; column != end_column; ++column, ++computed_size) { - if (column->is_mergeable) - continue; if (column->percent) { last_computed_size = computed_size; LayoutUnit percent_inline_size = @@ -150,8 +144,6 @@ LayoutUnit* computed_size = computed_sizes.begin(); for (const NGTableTypes::Column* column = start_column; column != end_column; ++column, ++computed_size) { - if (column->is_mergeable) - continue; if (column->percent) { *computed_size = column->ResolvePercentInlineSize(target_inline_size); } else if (column->is_constrained) { @@ -198,8 +190,6 @@ LayoutUnit* computed_size = computed_sizes.begin(); for (const NGTableTypes::Column* column = start_column; column != end_column; ++column, ++computed_size) { - if (column->is_mergeable) - continue; if (column->percent) { *computed_size = column->ResolvePercentInlineSize(target_inline_size); } else if (column->is_constrained || is_exact_match) { @@ -236,8 +226,6 @@ LayoutUnit* computed_size = computed_sizes.begin(); for (const NGTableTypes::Column* column = start_column; column != end_column; ++column, ++computed_size) { - if (column->is_mergeable) - continue; if (column->percent) { *computed_size = column->ResolvePercentInlineSize(target_inline_size); @@ -268,8 +256,6 @@ LayoutUnit* computed_size = computed_sizes.begin(); for (const NGTableTypes::Column* column = start_column; column != end_column; ++column, ++computed_size) { - if (column->is_mergeable) - continue; if (column->percent) { *computed_size = column->ResolvePercentInlineSize(target_inline_size); @@ -300,8 +286,6 @@ LayoutUnit* computed_size = computed_sizes.begin(); for (const NGTableTypes::Column* column = start_column; column != end_column; ++column, ++computed_size) { - if (column->is_mergeable) - continue; DCHECK(column->percent); last_computed_size = computed_size; if (total_percent > 0.0f) { @@ -463,32 +447,18 @@ NGTableTypes::Column* end_column = start_column + colspan_cell.span; DCHECK_NE(start_column, end_column); - // Inline sizes for redistribution exclude border spacing. - LayoutUnit total_inner_border_spacing; - unsigned effective_span = 0; - bool is_first_column = true; - for (NGTableTypes::Column* column = start_column; column != end_column; - ++column) { - if (column->is_mergeable) - continue; - ++effective_span; - if (!is_first_column) - total_inner_border_spacing += inline_border_spacing; - else - is_first_column = false; - } LayoutUnit colspan_cell_min_inline_size; LayoutUnit colspan_cell_max_inline_size; // Colspanned cells only distribute min inline size if constrained. if (colspan_cell.cell_inline_constraint.is_constrained) { colspan_cell_min_inline_size = (colspan_cell.cell_inline_constraint.min_inline_size - - total_inner_border_spacing) + (colspan_cell.span - 1) * inline_border_spacing) .ClampNegativeToZero(); } colspan_cell_max_inline_size = (colspan_cell.cell_inline_constraint.max_inline_size - - total_inner_border_spacing) + (colspan_cell.span - 1) * inline_border_spacing) .ClampNegativeToZero(); // Distribute min/max/percentage evenly between all cells. @@ -498,19 +468,18 @@ colspan_cell.cell_inline_constraint.percent.value_or(0.0f); LayoutUnit new_min_size = LayoutUnit(colspan_cell_min_inline_size / - static_cast<float>(effective_span)); + static_cast<float>(colspan_cell.span)); LayoutUnit new_max_size = LayoutUnit(colspan_cell_max_inline_size / - static_cast<float>(effective_span)); + static_cast<float>(colspan_cell.span)); base::Optional<float> new_percent; if (colspan_cell.cell_inline_constraint.percent) { - new_percent = *colspan_cell.cell_inline_constraint.percent / effective_span; + new_percent = + *colspan_cell.cell_inline_constraint.percent / colspan_cell.span; } NGTableTypes::Column* last_column; for (NGTableTypes::Column* column = start_column; column < end_column; ++column) { - if (column->is_mergeable) - continue; last_column = column; rounding_error_min_inline_size -= new_min_size; rounding_error_max_inline_size -= new_max_size; @@ -552,25 +521,13 @@ NGTableTypes::Column* end_column = start_column + effective_span; // Inline sizes for redistribution exclude border spacing. - LayoutUnit total_inner_border_spacing; - bool is_first_column = true; - for (NGTableTypes::Column* column = start_column; column != end_column; - ++column) { - if (!column->is_mergeable) { - if (!is_first_column) - total_inner_border_spacing += inline_border_spacing; - else - is_first_column = false; - } - } - LayoutUnit colspan_cell_min_inline_size = (colspan_cell.cell_inline_constraint.min_inline_size - - total_inner_border_spacing) + (effective_span - 1) * inline_border_spacing) .ClampNegativeToZero(); LayoutUnit colspan_cell_max_inline_size = (colspan_cell.cell_inline_constraint.max_inline_size - - total_inner_border_spacing) + (effective_span - 1) * inline_border_spacing) .ClampNegativeToZero(); base::Optional<float> colspan_cell_percent = colspan_cell.cell_inline_constraint.percent; @@ -587,8 +544,6 @@ column->max_inline_size = LayoutUnit(); if (!column->min_inline_size) column->min_inline_size = LayoutUnit(); - if (column->is_mergeable) - continue; all_columns_count++; if (column->percent) { percent_columns_count++; @@ -604,7 +559,7 @@ // max_inline_size. for (NGTableTypes::Column* column = start_column; column != end_column; ++column) { - if (column->percent || column->is_mergeable) + if (column->percent) continue; float column_percent; if (nonpercent_columns_max_inline_size != LayoutUnit()) {
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers_test.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers_test.cc index cc9c95a17..ac8f540 100644 --- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers_test.cc +++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_helpers_test.cc
@@ -21,9 +21,7 @@ percent, /* border_padding */ LayoutUnit(), is_constrained, - /* is_collapsed */ false, - /* is_table_fixed */ false, - /* is_mergeable */ false}; + /* is_collapsed */ false}; } NGTableTypes::Row MakeRow(int block_size, @@ -157,16 +155,16 @@ column_constraints->data.Shrink(0); column_constraints->data.push_back( NGTableTypes::Column{LayoutUnit(0), column_widths[0], base::nullopt, - LayoutUnit(), false, false, false, false}); + LayoutUnit(), false, false}); column_constraints->data.push_back( NGTableTypes::Column{LayoutUnit(3.33333), column_widths[1], base::nullopt, - LayoutUnit(), false, false, false, false}); + LayoutUnit(), false, false}); column_constraints->data.push_back( NGTableTypes::Column{LayoutUnit(3.33333), column_widths[2], base::nullopt, - LayoutUnit(), false, false, false, false}); + LayoutUnit(), false, false}); column_constraints->data.push_back( NGTableTypes::Column{LayoutUnit(0), column_widths[3], base::nullopt, - LayoutUnit(), false, false, false, false}); + LayoutUnit(), false, false}); LayoutUnit assignable_table_inline_size = column_widths[0] + column_widths[1] + column_widths[2] + column_widths[3];
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc index bf9f8b0d..a3a0b4b 100644 --- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc +++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc
@@ -85,7 +85,6 @@ InlineSizesFromStyle(style, /* inline_border_padding */ LayoutUnit(), /* is_parallel */ true, &inline_size, &min_inline_size, &max_inline_size, &percentage_inline_size); - bool is_mergeable; if (!inline_size) inline_size = default_inline_size; if (min_inline_size && inline_size) @@ -94,16 +93,13 @@ if (percentage_inline_size && *percentage_inline_size == 0.0f) percentage_inline_size.reset(); bool is_collapsed = style.Visibility() == EVisibility::kCollapse; - if (is_table_fixed) { - is_mergeable = false; - } else { - is_mergeable = (inline_size.value_or(LayoutUnit()) == LayoutUnit()) && - (percentage_inline_size.value_or(0.0f) == 0.0f); - } - return Column(min_inline_size.value_or(LayoutUnit()), inline_size, + return Column{min_inline_size.value_or(LayoutUnit()), + inline_size, percentage_inline_size, - LayoutUnit() /* percent_border_padding */, is_constrained, - is_collapsed, is_table_fixed, is_mergeable); + LayoutUnit() /* percent_border_padding */, + is_constrained, + is_collapsed, + is_table_fixed}; } // Implements https://www.w3.org/TR/css-tables-3/#computing-cell-measures @@ -290,8 +286,7 @@ // Constrained columns in fixed tables take precedence over cells. if (is_constrained && is_table_fixed) return; - if (!is_table_fixed) - is_mergeable = false; + if (min_inline_size) { if (min_inline_size < cell->min_inline_size) { min_inline_size = cell->min_inline_size;
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h index b892c3f2..47e7177 100644 --- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h +++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h
@@ -57,23 +57,6 @@ // Constraint for a column. struct Column { DISALLOW_NEW(); - Column(const base::Optional<LayoutUnit>& min_inline_size, - const base::Optional<LayoutUnit>& max_inline_size, - const base::Optional<float>& percent, - LayoutUnit percent_border_padding, - bool is_constrained, - bool is_collapsed, - bool is_table_fixed, - bool is_mergeable) - : min_inline_size(min_inline_size), - max_inline_size(max_inline_size), - percent(percent), - percent_border_padding(percent_border_padding), - is_constrained(is_constrained), - is_collapsed(is_collapsed), - is_table_fixed(is_table_fixed), - is_mergeable(is_mergeable) {} - Column() = default; // These members are initialized from <col> and <colgroup>, then they // accumulate data from |CellInlineConstraint|s. base::Optional<LayoutUnit> min_inline_size; @@ -85,7 +68,6 @@ bool is_constrained = false; bool is_collapsed = false; bool is_table_fixed = false; - bool is_mergeable = false; void Encompass(const base::Optional<NGTableTypes::CellInlineConstraint>&); LayoutUnit ResolvePercentInlineSize(
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc index 03c16f5..d981861a 100644 --- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc
@@ -24,55 +24,6 @@ namespace { -// Mergeable columns cannot be distributed to. -// Make at least one spanned column is distributable. -void EnsureDistributableColumnExists( - wtf_size_t start_column_index, - wtf_size_t span, - NGTableTypes::Columns* column_constraints) { - if (span == 0) - return; - DCHECK_LT(start_column_index, column_constraints->data.size()); - wtf_size_t effective_span = - std::min(span, column_constraints->data.size() - start_column_index); - if (effective_span == 0) - return; - NGTableTypes::Column* start_column = - &column_constraints->data[start_column_index]; - NGTableTypes::Column* end_column = start_column + effective_span; - - NGTableTypes::Column* first_mergeable_column = nullptr; - for (NGTableTypes::Column* column = start_column; column != end_column; - ++column) { - if (!column->is_collapsed) { - if (!column->is_mergeable) { - // Found non-collapsed, non mergeable column, nothing to do. - return; - } else if (!first_mergeable_column) { - // Found first non-collapsed, mergeable column. - first_mergeable_column = column; - } - } - } - // The interesting problem being solved here is interaction between - // collapsed and mergeable columns. - // All columns that are created by colspanned cell are mergeable by - // default. Without collapsing, the first column would always be - // marked as !mergeable. - // What to do if the first column collapses? If that was the only - // non-mergeable column, the entire cell would merge into first column, - // and collapse. - // To prevent "whole cell hidden if 1st cell is collapsed", - // we try to make first non-collapsed column mergeable. - // If all columns collapse, first cell is marked as meargable. - if (first_mergeable_column) { - // Some columns were not collapsed, mark first as mergeable. - first_mergeable_column->is_mergeable = false; - } else { - start_column->is_mergeable = false; - } -} - // Applies cell/wide cell constraints to columns. // Guarantees columns min/max widths have non-empty values. void ApplyCellConstraintsToColumnConstraints( @@ -81,37 +32,8 @@ bool is_fixed_layout, NGTableTypes::ColspanCells* colspan_cell_constraints, NGTableTypes::Columns* column_constraints) { - // Satisfy prerequisites for cell merging: - - if (column_constraints->data.size() < cell_constraints.size()) { - // Column constraint must exist for each cell. - NGTableTypes::Column default_column; - default_column.is_table_fixed = is_fixed_layout; - default_column.is_mergeable = !is_fixed_layout; - wtf_size_t column_count = - cell_constraints.size() - column_constraints->data.size(); - // Must loop because WTF::Vector does not support resize with default value. - for (wtf_size_t i = 0; i < column_count; ++i) - column_constraints->data.push_back(default_column); - DCHECK_EQ(column_constraints->data.size(), cell_constraints.size()); - - } else if (column_constraints->data.size() > cell_constraints.size()) { - // Trim mergeable columns off the end. - wtf_size_t last_non_merged_column = column_constraints->data.size() - 1; - while (last_non_merged_column + 1 > cell_constraints.size() && - column_constraints->data[last_non_merged_column].is_mergeable) { - --last_non_merged_column; - } - column_constraints->data.resize(last_non_merged_column + 1); - DCHECK_GE(column_constraints->data.size(), cell_constraints.size()); - } - // Make sure there exists a non-mergeable column for each colspanned cell. - for (const NGTableTypes::ColspanCell& colspan_cell : - *colspan_cell_constraints) { - EnsureDistributableColumnExists(colspan_cell.start_column, - colspan_cell.span, column_constraints); - } - + if (column_constraints->data.size() < cell_constraints.size()) + column_constraints->data.resize(cell_constraints.size()); // Distribute cell constraints to column constraints. for (wtf_size_t i = 0; i < cell_constraints.size(); ++i) { column_constraints->data[i].Encompass(cell_constraints[i]);
diff --git a/third_party/blink/renderer/core/loader/build.gni b/third_party/blink/renderer/core/loader/build.gni index 9d227e6e..46c7b943 100644 --- a/third_party/blink/renderer/core/loader/build.gni +++ b/third_party/blink/renderer/core/loader/build.gni
@@ -77,6 +77,7 @@ "modulescript/document_module_script_fetcher.h", "modulescript/installed_service_worker_module_script_fetcher.cc", "modulescript/installed_service_worker_module_script_fetcher.h", + "modulescript/module_script_creation_params.cc", "modulescript/module_script_creation_params.h", "modulescript/module_script_fetch_request.h", "modulescript/module_script_fetcher.cc",
diff --git a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc index d49caaae..c9d6244 100644 --- a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc +++ b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
@@ -21,6 +21,7 @@ void DocumentModuleScriptFetcher::Fetch( FetchParameters& fetch_params, + ModuleType expected_module_type, ResourceFetcher* fetch_client_settings_object_fetcher, ModuleGraphLevel level, ModuleScriptFetcher::Client* client) { @@ -28,6 +29,7 @@ DCHECK(fetch_client_settings_object_fetcher); DCHECK(!client_); client_ = client; + expected_module_type_ = expected_module_type; // Streaming can currently only be triggered from the main thread. This // currently happens only for dynamic imports in worker modules. ScriptResource::StreamingAllowed streaming_allowed = @@ -42,11 +44,10 @@ auto* script_resource = To<ScriptResource>(resource); - ModuleType module_type; { HeapVector<Member<ConsoleMessage>> error_messages; - if (!WasModuleLoadSuccessful(script_resource, &error_messages, - &module_type)) { + if (!WasModuleLoadSuccessful(script_resource, expected_module_type_, + &error_messages)) { client_->NotifyFetchFinishedError(error_messages); return; } @@ -70,7 +71,7 @@ // https://html.spec.whatwg.org/multipage/webappapis.html#concept-script-base-url client_->NotifyFetchFinishedSuccess(ModuleScriptCreationParams( /*source_url=*/url, /*base_url=*/url, - ScriptSourceLocationType::kExternalFile, module_type, + ScriptSourceLocationType::kExternalFile, expected_module_type_, script_resource->SourceText(), script_resource->CacheHandler(), streamer, not_streamed_reason)); }
diff --git a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.h b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.h index eb298e6..8dd12f8 100644 --- a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.h +++ b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.h
@@ -23,6 +23,7 @@ // Implements ModuleScriptFetcher. void Fetch(FetchParameters&, + ModuleType, ResourceFetcher*, ModuleGraphLevel, Client*) override; @@ -35,6 +36,7 @@ private: Member<Client> client_; + ModuleType expected_module_type_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc index 70de748..8a00638 100644 --- a/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc +++ b/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc
@@ -28,6 +28,7 @@ void InstalledServiceWorkerModuleScriptFetcher::Fetch( FetchParameters& fetch_params, + ModuleType expected_module_type, ResourceFetcher*, ModuleGraphLevel level, ModuleScriptFetcher::Client* client) { @@ -36,6 +37,7 @@ auto* installed_scripts_manager = global_scope_->GetInstalledScriptsManager(); DCHECK(installed_scripts_manager); DCHECK(installed_scripts_manager->IsScriptInstalled(fetch_params.Url())); + expected_module_type_ = expected_module_type; std::unique_ptr<InstalledScriptsManager::ScriptData> script_data = installed_scripts_manager->GetScriptData(fetch_params.Url()); @@ -73,18 +75,18 @@ mojom::blink::kAppCacheNoCacheId); } - ModuleType module_type; - // TODO(sasebree) De-duplicate similar logic that lives in // ModuleScriptFetcher::WasModuleLoadSuccessful - if (MIMETypeRegistry::IsSupportedJavaScriptMIMEType( - script_data->GetHttpContentType())) { - module_type = ModuleType::kJavaScript; - } else if (base::FeatureList::IsEnabled(blink::features::kJSONModules) && - MIMETypeRegistry::IsJSONMimeType( - script_data->GetHttpContentType())) { - module_type = ModuleType::kJSON; - } else { + const bool fetched_javascript_module = + expected_module_type_ == ModuleType::kJavaScript && + MIMETypeRegistry::IsSupportedJavaScriptMIMEType( + script_data->GetHttpContentType()); + const bool fetched_json_module = + base::FeatureList::IsEnabled(blink::features::kJSONModules) && + expected_module_type_ == ModuleType::kJSON && + MIMETypeRegistry::IsJSONMimeType(script_data->GetHttpContentType()); + + if (!fetched_javascript_module && !fetched_json_module) { // This should never happen. // If we reach here, we know we received an incompatible mime type from the // network @@ -102,7 +104,7 @@ // https://html.spec.whatwg.org/multipage/webappapis.html#concept-script-base-url client->NotifyFetchFinishedSuccess(ModuleScriptCreationParams( /*source_url=*/fetch_params.Url(), /*base_url=*/fetch_params.Url(), - ScriptSourceLocationType::kExternalFile, module_type, + ScriptSourceLocationType::kExternalFile, expected_module_type_, ParkableString(script_data->TakeSourceText().Impl()), /*cache_handler=*/nullptr)); }
diff --git a/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h b/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h index 23ca47b0..97a0f17 100644 --- a/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h +++ b/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.h
@@ -23,6 +23,7 @@ // Implements ModuleScriptFetcher. void Fetch(FetchParameters&, + ModuleType, ResourceFetcher*, ModuleGraphLevel, ModuleScriptFetcher::Client*) override; @@ -35,6 +36,7 @@ } const Member<WorkerGlobalScope> global_scope_; + ModuleType expected_module_type_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.cc new file mode 100644 index 0000000..df4320c --- /dev/null +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.cc
@@ -0,0 +1,24 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h" + +namespace blink { + +String ModuleScriptCreationParams::ModuleTypeToString( + const ModuleType module_type) { + switch (module_type) { + case ModuleType::kJavaScript: + return "JavaScript"; + case ModuleType::kJSON: + return "JSON"; + case ModuleType::kCSS: + return "CSS"; + case ModuleType::kInvalid: + NOTREACHED(); + return ""; + } +} + +} // namespace blink
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h index d6fec809..d31a12d 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
@@ -106,6 +106,8 @@ return not_streaming_reason_; } + static String ModuleTypeToString(const ModuleType module_type); + private: // Creates an isolated copy. ModuleScriptCreationParams(const KURL& source_url,
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_fetch_request.h b/third_party/blink/renderer/core/loader/modulescript/module_script_fetch_request.h index da0bb85c..b91d5b25 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_script_fetch_request.h +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_fetch_request.h
@@ -14,6 +14,8 @@ namespace blink { +enum class ModuleType; + // A ModuleScriptFetchRequest essentially serves as a "parameter object" for // Modulator::Fetch{Single,NewSingle}. class ModuleScriptFetchRequest final { @@ -23,27 +25,31 @@ // Referrer is set only for internal module script fetch algorithms triggered // from ModuleTreeLinker to fetch descendant module scripts. ModuleScriptFetchRequest(const KURL& url, + ModuleType module_type, mojom::blink::RequestContextType context_type, network::mojom::RequestDestination destination, const ScriptFetchOptions& options, const String& referrer_string, const TextPosition& referrer_position) : url_(url), + expected_module_type_(module_type), context_type_(context_type), destination_(destination), options_(options), referrer_string_(referrer_string), referrer_position_(referrer_position) {} - static ModuleScriptFetchRequest CreateForTest(const KURL& url) { + static ModuleScriptFetchRequest CreateForTest(const KURL& url, + ModuleType module_type) { return ModuleScriptFetchRequest( - url, mojom::blink::RequestContextType::SCRIPT, + url, module_type, mojom::blink::RequestContextType::SCRIPT, network::mojom::RequestDestination::kScript, ScriptFetchOptions(), Referrer::ClientReferrerString(), TextPosition::MinimumPosition()); } ~ModuleScriptFetchRequest() = default; const KURL& Url() const { return url_; } + ModuleType GetExpectedModuleType() const { return expected_module_type_; } mojom::blink::RequestContextType ContextType() const { return context_type_; } network::mojom::RequestDestination Destination() const { return destination_; @@ -54,6 +60,7 @@ private: const KURL url_; + const ModuleType expected_module_type_; const mojom::blink::RequestContextType context_type_; const network::mojom::RequestDestination destination_; const ScriptFetchOptions options_;
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc index 2d607e0f..a65e1f1 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc
@@ -36,8 +36,8 @@ // <specdef href="https://html.spec.whatwg.org/C/#fetch-a-single-module-script"> bool ModuleScriptFetcher::WasModuleLoadSuccessful( ScriptResource* resource, - HeapVector<Member<ConsoleMessage>>* error_messages, - ModuleType* module_type) { + ModuleType expected_module_type, + HeapVector<Member<ConsoleMessage>>* error_messages) { DCHECK(error_messages); DCHECK_EQ(resource->GetScriptType(), mojom::blink::ScriptType::kModule); @@ -69,38 +69,45 @@ // MimeType() may be rewritten by mime sniffer. // // <spec step="12">If type is a JavaScript MIME type, then:</spec> - if (MIMETypeRegistry::IsSupportedJavaScriptMIMEType( + if (expected_module_type == ModuleType::kJavaScript && + MIMETypeRegistry::IsSupportedJavaScriptMIMEType( response.HttpContentType())) { - *module_type = ModuleType::kJavaScript; return true; } // <spec step="13">If type is a JSON MIME type, then:</spec> if (base::FeatureList::IsEnabled(blink::features::kJSONModules) && + expected_module_type == ModuleType::kJSON && MIMETypeRegistry::IsJSONMimeType(response.HttpContentType())) { - *module_type = ModuleType::kJSON; return true; } if (RuntimeEnabledFeatures::CSSModulesEnabled() && + expected_module_type == ModuleType::kCSS && MIMETypeRegistry::IsSupportedStyleSheetMIMEType( response.HttpContentType())) { - *module_type = ModuleType::kCSS; return true; } - String required_response_type = "JavaScript"; - if (base::FeatureList::IsEnabled(blink::features::kJSONModules)) { - required_response_type = required_response_type + ", JSON"; - } - if (RuntimeEnabledFeatures::CSSModulesEnabled()) { - required_response_type = required_response_type + ", CSS"; + + String message; + if (base::FeatureList::IsEnabled(blink::features::kJSONModules) || + RuntimeEnabledFeatures::CSSModulesEnabled()) { + message = + "Failed to load module script: Expected a " + + ModuleScriptCreationParams::ModuleTypeToString(expected_module_type) + + " module script but the server responded with a MIME type of \"" + + resource->GetResponse().HttpContentType() + + "\". Strict MIME type checking is enforced for module scripts per HTML " + "spec."; + } else { + message = + "Failed to load module script: The server responded with a " + "non-JavaScript " + "MIME type of \"" + + resource->GetResponse().HttpContentType() + + "\". Strict MIME type checking is enforced for module scripts per HTML " + "spec."; } - String message = - "Failed to load module script: The server responded with a non-" + - required_response_type + " MIME type of \"" + - resource->GetResponse().HttpContentType() + - "\". Strict MIME type checking is enforced for module scripts per HTML " - "spec."; error_messages->push_back(MakeGarbageCollected<ConsoleMessage>( mojom::ConsoleMessageSource::kJavaScript, mojom::ConsoleMessageLevel::kError, message,
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.h b/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.h index 85501b2..f3881ae 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.h +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.h
@@ -46,6 +46,7 @@ // Takes a non-const reference to FetchParameters because // ScriptResource::Fetch() requires it. virtual void Fetch(FetchParameters&, + ModuleType, ResourceFetcher*, ModuleGraphLevel, Client*) = 0; @@ -55,8 +56,8 @@ protected: static bool WasModuleLoadSuccessful( ScriptResource* resource, - HeapVector<Member<ConsoleMessage>>* error_messages, - ModuleType* module_type); + ModuleType expected_module_type, + HeapVector<Member<ConsoleMessage>>* error_messages); }; } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc index b335e720..075adfd 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc
@@ -237,8 +237,8 @@ // response.</spec> module_fetcher_ = modulator_->CreateModuleScriptFetcher(custom_fetch_type, PassKey()); - module_fetcher_->Fetch(fetch_params, fetch_client_settings_object_fetcher, - level, this); + module_fetcher_->Fetch(fetch_params, module_request.GetExpectedModuleType(), + fetch_client_settings_object_fetcher, level, this); } // <specdef href="https://html.spec.whatwg.org/C/#fetch-a-single-module-script">
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc index 1f41692..22b6f270 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
@@ -243,10 +243,10 @@ TestModuleScriptLoaderClient* client) { auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>(); KURL url("data:text/javascript,export default 'grapes';"); - ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url), - fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, - GetModulator(), custom_fetch_type, registry, - client); + ModuleScriptLoader::Fetch( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), + custom_fetch_type, registry, client); } void ModuleScriptLoaderTest::TestFetchDataURLJSONModule( @@ -257,10 +257,10 @@ "data:application/" "json,{\"1\":{\"name\":\"MIKE\",\"surname\":\"TAYLOR\"},\"2\":{\"name\":" "\"TOM\",\"surname\":\"JERRY\"}}"); - ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url), - fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, - GetModulator(), custom_fetch_type, registry, - client); + ModuleScriptLoader::Fetch( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJSON), fetcher_, + ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), custom_fetch_type, + registry, client); } void ModuleScriptLoaderTest::TestFetchDataURLInvalidJSONModule( @@ -270,10 +270,10 @@ KURL url( "data:application/" "json,{{{"); - ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url), - fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, - GetModulator(), custom_fetch_type, registry, - client); + ModuleScriptLoader::Fetch( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJSON), fetcher_, + ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), custom_fetch_type, + registry, client); } TEST_F(ModuleScriptLoaderTest, FetchDataURL) { @@ -424,10 +424,10 @@ auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>(); KURL url("data:text/javascript,import 'invalid';export default 'grapes';"); GetModulator()->SetModuleRequests({"invalid"}); - ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url), - fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, - GetModulator(), custom_fetch_type, registry, - client); + ModuleScriptLoader::Fetch( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), + custom_fetch_type, registry, client); } TEST_F(ModuleScriptLoaderTest, InvalidSpecifier) { @@ -468,10 +468,10 @@ auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>(); KURL url; EXPECT_FALSE(url.IsValid()); - ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url), - fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, - GetModulator(), custom_fetch_type, registry, - client); + ModuleScriptLoader::Fetch( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), + custom_fetch_type, registry, client); } TEST_F(ModuleScriptLoaderTest, FetchInvalidURL) { @@ -510,10 +510,10 @@ platform_->GetURLLoaderMockFactory()); auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>(); - ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url), - fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, - GetModulator(), custom_fetch_type, registry, - client); + ModuleScriptLoader::Fetch( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + fetcher_, ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), + custom_fetch_type, registry, client); } TEST_F(ModuleScriptLoaderTest, FetchURL) {
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc index fd5e3dc..024aa5c 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc +++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
@@ -33,6 +33,21 @@ namespace blink { +namespace { + +struct ModuleScriptFetchTarget { + ModuleScriptFetchTarget(KURL url, + ModuleType module_type, + TextPosition position) + : url(url), module_type(module_type), position(position) {} + + KURL url; + ModuleType module_type; + TextPosition position; +}; + +} // namespace + void ModuleTreeLinker::Fetch( const KURL& url, const ModuleType& module_type, @@ -222,8 +237,7 @@ // // <spec label="fetch-a-module-worker-script-tree" step="4">Let visited set be // « url ».</spec> - // TODO(crbug.com/1132413) Include module_type in visited_set_. - visited_set_.insert(url); + visited_set_.insert(std::make_pair(url, module_type)); // <spec label="fetch-a-module-script-tree" step="1">Fetch a single module // script given url, settings object, "script", options, settings object, @@ -237,11 +251,9 @@ // module script given url, fetch client settings object, destination, // options, module map settings object, "client", and with the top-level // module fetch flag set. ...</spec> - - // TODO(crbug.com/1132413) Include module_type ModuleScriptFetchRequest. - ModuleScriptFetchRequest request(url, context_type_, destination_, options, - Referrer::ClientReferrerString(), - TextPosition::MinimumPosition()); + ModuleScriptFetchRequest request( + url, module_type, context_type_, destination_, options, + Referrer::ClientReferrerString(), TextPosition::MinimumPosition()); ++num_incomplete_fetches_; modulator_->FetchSingle(request, fetch_client_settings_object_fetcher_.Get(), ModuleGraphLevel::kTopLevelModuleFetch, @@ -352,6 +364,8 @@ // <specdef // href="https://html.spec.whatwg.org/C/#fetch-the-descendants-of-a-module-script"> +// See also https://github.com/whatwg/html/pull/5658/ which adds ModuleRequest +// and module type to the HTML spec. void ModuleTreeLinker::FetchDescendants(const ModuleScript* module_script) { DCHECK(module_script); @@ -389,20 +403,19 @@ // Note: We defer this bail-out until the end of the procedure. The rest of // the procedure will be no-op anyway if record.[[RequestedModules]] is empty. - // <spec step="4">Let urls be a new empty list.</spec> - Vector<KURL> urls; - Vector<TextPosition> positions; + // <spec step="4">Let moduleRequests be a new empty list.</spec> + Vector<ModuleScriptFetchTarget> module_requests; - // <spec step="5">For each string requested of + // <spec step="5">For each ModuleRequest Record requested of // record.[[RequestedModules]],</spec> - Vector<ModuleRequest> module_requests = + Vector<ModuleRequest> record_requested_modules = modulator_->ModuleRequestsFromModuleRecord(record); - for (const auto& module_request : module_requests) { + for (const auto& requested : record_requested_modules) { // <spec step="5.1">Let url be the result of resolving a module specifier - // given module script's base URL and requested.</spec> - KURL url = module_script->ResolveModuleSpecifier(module_request.specifier); - ModuleType module_type = modulator_->ModuleTypeFromRequest(module_request); + // given module script's base URL and requested.[[Specifier]].</spec> + KURL url = module_script->ResolveModuleSpecifier(requested.specifier); + ModuleType module_type = modulator_->ModuleTypeFromRequest(requested); // <spec step="5.2">Assert: url is never failure, because resolving a module // specifier must have been previously successful with these same two @@ -410,27 +423,24 @@ CHECK(url.IsValid()) << "ModuleScript::ResolveModuleSpecifier() impl must " "return a valid url."; CHECK_NE(module_type, ModuleType::kInvalid); - // TODO(crbug.com/1132413) Collect module types alongside URLs to include in - // visited_set_ and each ModuleScriptFetchRequest. - // <spec step="5.3">If visited set does not contain url, then:</spec> - if (!visited_set_.Contains(url)) { - // <spec step="5.3.1">Append url to urls.</spec> - urls.push_back(url); + // <spec step="5.4">If visited set does not contain (url, module type), + // then:</spec> + if (!visited_set_.Contains(std::make_pair(url, module_type))) { + // <spec step="5.4.1">Append (url, module type) to moduleRequests.</spec> + module_requests.emplace_back(url, module_type, requested.position); - // <spec step="5.3.2">Append url to visited set.</spec> - visited_set_.insert(url); - - positions.push_back(module_request.position); + // <spec step="5.4.2">Append (url, module type) to visited set.</spec> + visited_set_.insert(std::make_pair(url, module_type)); } } - if (urls.IsEmpty()) { + if (module_requests.IsEmpty()) { // <spec step="3">... if record.[[RequestedModules]] is empty, // asynchronously complete this algorithm with module script.</spec> // - // Also, if record.[[RequestedModules]] is not empty but |urls| is - // empty here, we complete this algorithm. + // Also, if record.[[RequestedModules]] is not empty but |module_requests| + // is empty here, we complete this algorithm. FinalizeFetchDescendantsForOneModuleScript(); return; } @@ -456,22 +466,24 @@ mojom::blink::FetchImportanceMode::kImportanceAuto, RenderBlockingBehavior::kNonBlocking); - // <spec step="8">For each url in urls, ...</spec> + // <spec step="8">For each moduleRequest in moduleRequests, ...</spec> // // <spec step="8">... These invocations of the internal module script graph // fetching procedure should be performed in parallel to each other. // ...</spec> - for (wtf_size_t i = 0; i < urls.size(); ++i) { + for (const auto& module_request : module_requests) { // <spec step="8">... perform the internal module script graph fetching - // procedure given url, fetch client settings object, destination, options, - // module script's settings object, visited set, and module script's base - // URL. ...</spec> + // procedure given moduleRequest, fetch client settings object, destination, + // options, module script's settings object, visited set, and module + // script's base URL. ...</spec> ModuleScriptFetchRequest request( - urls[i], context_type_, destination_, options, - module_script->BaseURL().GetString(), positions[i]); + module_request.url, module_request.module_type, context_type_, + destination_, options, module_script->BaseURL().GetString(), + module_request.position); // <spec label="IMSGF" step="1">Assert: visited set contains url.</spec> - DCHECK(visited_set_.Contains(request.Url())); + DCHECK(visited_set_.Contains( + std::make_pair(request.Url(), request.GetExpectedModuleType()))); ++num_incomplete_fetches_;
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h index ae45fbc5..325a6ce 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h +++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h
@@ -80,6 +80,7 @@ kInstantiating, kFinished, }; + #if DCHECK_IS_ON() static const char* StateToString(State); #endif @@ -108,7 +109,7 @@ const network::mojom::RequestDestination destination_; const Member<Modulator> modulator_; const ModuleScriptCustomFetchType custom_fetch_type_; - HashSet<KURL> visited_set_; + HashSet<std::pair<KURL, ModuleType>> visited_set_; const Member<ModuleTreeLinkerRegistry> registry_; const Member<ModuleTreeClient> client_; State state_ = State::kInitial;
diff --git a/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc index 8a13eeb..e9bc8dd 100644 --- a/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc +++ b/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc
@@ -35,6 +35,7 @@ // <specdef href="https://html.spec.whatwg.org/C/#run-a-worker"> void WorkerModuleScriptFetcher::Fetch( FetchParameters& fetch_params, + ModuleType expected_module_type, ResourceFetcher* fetch_client_settings_object_fetcher, ModuleGraphLevel level, ModuleScriptFetcher::Client* client) { @@ -44,6 +45,7 @@ fetch_client_settings_object_fetcher_ = fetch_client_settings_object_fetcher; client_ = client; level_ = level; + expected_module_type_ = expected_module_type; // Use WorkerMainScriptLoader to load the main script when // dedicated workers (PlzDedicatedWorker) and shared workers. @@ -91,17 +93,16 @@ ClearResource(); auto* script_resource = To<ScriptResource>(resource); - ModuleType module_type; { HeapVector<Member<ConsoleMessage>> error_messages; - if (!WasModuleLoadSuccessful(script_resource, &error_messages, - &module_type)) { + if (!WasModuleLoadSuccessful(script_resource, expected_module_type_, + &error_messages)) { client_->NotifyFetchFinishedError(error_messages); return; } } - NotifyClient(resource->Url(), module_type, + NotifyClient(resource->Url(), expected_module_type_, script_resource->SourceText(), resource->GetResponse(), script_resource->CacheHandler()); }
diff --git a/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.h b/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.h index 32be6a6..f351d88 100644 --- a/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.h +++ b/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.h
@@ -29,6 +29,7 @@ // Implements ModuleScriptFetcher. void Fetch(FetchParameters&, + ModuleType, ResourceFetcher*, ModuleGraphLevel, ModuleScriptFetcher::Client*) override; @@ -64,6 +65,7 @@ Member<ResourceFetcher> fetch_client_settings_object_fetcher_; Member<Client> client_; ModuleGraphLevel level_; + ModuleType expected_module_type_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc index ca3e6dd..d811c1fb 100644 --- a/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc +++ b/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.cc
@@ -17,12 +17,13 @@ void WorkletModuleScriptFetcher::Fetch( FetchParameters& fetch_params, + ModuleType expected_module_type, ResourceFetcher* fetch_client_settings_object_fetcher, ModuleGraphLevel level, ModuleScriptFetcher::Client* client) { DCHECK_EQ(fetch_params.GetScriptType(), mojom::blink::ScriptType::kModule); if (module_responses_map_->GetEntry( - fetch_params.Url(), client, + fetch_params.Url(), expected_module_type, client, fetch_client_settings_object_fetcher->GetTaskRunner())) { return; } @@ -38,6 +39,7 @@ // need to handle that case, maybe by having a way to restart fetches in a // different global scope? url_ = fetch_params.Url(); + expected_module_type_ = expected_module_type; ScriptResource::Fetch(fetch_params, fetch_client_settings_object_fetcher, this, ScriptResource::kNoStreaming); } @@ -48,20 +50,20 @@ base::Optional<ModuleScriptCreationParams> params; auto* script_resource = To<ScriptResource>(resource); HeapVector<Member<ConsoleMessage>> error_messages; - ModuleType module_type; - if (WasModuleLoadSuccessful(script_resource, &error_messages, &module_type)) { + if (WasModuleLoadSuccessful(script_resource, expected_module_type_, + &error_messages)) { const KURL& url = script_resource->GetResponse().CurrentRequestUrl(); // Create an external module script where base_url == source_url. // https://html.spec.whatwg.org/multipage/webappapis.html#concept-script-base-url params.emplace(/*source_url=*/url, /*base_url=*/url, - ScriptSourceLocationType::kExternalFile, module_type, - script_resource->SourceText(), + ScriptSourceLocationType::kExternalFile, + expected_module_type_, script_resource->SourceText(), script_resource->CacheHandler()); } // This will eventually notify |client| passed to // WorkletModuleScriptFetcher::Fetch(). - module_responses_map_->SetEntryParams(url_, params); + module_responses_map_->SetEntryParams(url_, expected_module_type_, params); } } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.h b/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.h index e6081c1d..f478f7f 100644 --- a/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.h +++ b/third_party/blink/renderer/core/loader/modulescript/worklet_module_script_fetcher.h
@@ -31,6 +31,7 @@ // Implements ModuleScriptFetcher. void Fetch(FetchParameters&, + ModuleType, ResourceFetcher*, ModuleGraphLevel, ModuleScriptFetcher::Client*) override; @@ -48,6 +49,7 @@ CrossThreadPersistent<WorkletModuleResponsesMap> module_responses_map_; KURL url_; + ModuleType expected_module_type_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/preload_helper.cc b/third_party/blink/renderer/core/loader/preload_helper.cc index afc5b29..aa62c8c 100644 --- a/third_party/blink/renderer/core/loader/preload_helper.cc +++ b/third_party/blink/renderer/core/loader/preload_helper.cc
@@ -27,6 +27,7 @@ #include "third_party/blink/renderer/core/loader/alternate_signed_exchange_resource_info.h" #include "third_party/blink/renderer/core/loader/importance_attribute.h" #include "third_party/blink/renderer/core/loader/link_load_parameters.h" +#include "third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h" #include "third_party/blink/renderer/core/loader/modulescript/module_script_fetch_request.h" #include "third_party/blink/renderer/core/loader/resource/css_style_sheet_resource.h" #include "third_party/blink/renderer/core/loader/resource/font_resource.h" @@ -486,7 +487,7 @@ // metadata is "not-parser-inserted", credentials mode is credentials mode, // and referrer policy is referrer policy." [spec text] ModuleScriptFetchRequest request( - params.href, context_type, destination, + params.href, ModuleType::kJavaScript, context_type, destination, ScriptFetchOptions(params.nonce, integrity_metadata, params.integrity, kNotParserInserted, credentials_mode, params.referrer_policy,
diff --git a/third_party/blink/renderer/core/loader/resource/font_resource.cc b/third_party/blink/renderer/core/loader/resource/font_resource.cc index 884a9e4..09293d0 100644 --- a/third_party/blink/renderer/core/loader/resource/font_resource.cc +++ b/third_party/blink/renderer/core/loader/resource/font_resource.cc
@@ -27,6 +27,7 @@ #include "third_party/blink/renderer/core/loader/resource/font_resource.h" #include "base/metrics/histogram_functions.h" +#include "base/trace_event/memory_dump_manager.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" #include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom-blink.h" #include "third_party/blink/renderer/platform/fonts/font_custom_platform_data.h" @@ -209,7 +210,13 @@ const String name = GetMemoryDumpName() + "/decoded_webfont"; WebMemoryAllocatorDump* dump = memory_dump->CreateMemoryAllocatorDump(name); dump->AddScalar("size", "bytes", font_data_->DataSize()); - memory_dump->AddSuballocation(dump->Guid(), "malloc"); + + const char* system_allocator_name = + base::trace_event::MemoryDumpManager::GetInstance() + ->system_allocator_pool_name(); + if (system_allocator_name) { + memory_dump->AddSuballocation(dump->Guid(), system_allocator_name); + } } void FontResource::AddClearDataObserver(
diff --git a/third_party/blink/renderer/core/paint/object_painter_base.cc b/third_party/blink/renderer/core/paint/object_painter_base.cc index be69765..4e1210d 100644 --- a/third_party/blink/renderer/core/paint/object_painter_base.cc +++ b/third_party/blink/renderer/core/paint/object_painter_base.cc
@@ -544,9 +544,16 @@ break; } if (part) { - return ui::NativeTheme::GetInstanceForWeb()->GetBorderRadiusForPart( - part.value(), style.Width().GetFloatValue(), - style.Height().GetFloatValue(), style.EffectiveZoom()); + border_radius = + ui::NativeTheme::GetInstanceForWeb()->GetBorderRadiusForPart( + part.value(), style.Width().GetFloatValue(), + style.Height().GetFloatValue()); + + // Form controls send to NativeTheme have zoom applied. But the focus ring + // outline does not. Apply zoom to checkbox focus ring. + return (style.EffectiveAppearance() == kCheckboxPart) + ? border_radius * style.EffectiveZoom() + : border_radius; } }
diff --git a/third_party/blink/renderer/core/paint/theme_painter_default.cc b/third_party/blink/renderer/core/paint/theme_painter_default.cc index dda9decd..5fd8c2b8 100644 --- a/third_party/blink/renderer/core/paint/theme_painter_default.cc +++ b/third_party/blink/renderer/core/paint/theme_painter_default.cc
@@ -190,7 +190,9 @@ extra_params.button.zoom = zoom_level; GraphicsContextStateSaver state_saver(paint_info.context, false); IntRect unzoomed_rect = - ApplyZoomToRect(rect, paint_info, state_saver, zoom_level); + features::IsFormControlsRefreshEnabled() + ? ApplyZoomToRect(rect, paint_info, state_saver, zoom_level) + : rect; Platform::Current()->ThemeEngine()->Paint( canvas, WebThemeEngine::kPartRadio, GetWebThemeState(element),
diff --git a/third_party/blink/renderer/core/script/module_map.cc b/third_party/blink/renderer/core/script/module_map.cc index 85dbdf0..55737d7 100644 --- a/third_party/blink/renderer/core/script/module_map.cc +++ b/third_party/blink/renderer/core/script/module_map.cc
@@ -120,7 +120,8 @@ // <spec step="2">If moduleMap[url] is "fetching", wait in parallel until that // entry's value changes, then queue a task on the networking task source to // proceed with running the following steps.</spec> - MapImpl::AddResult result = map_.insert(request.Url(), nullptr); + MapImpl::AddResult result = map_.insert( + std::make_pair(request.Url(), request.GetExpectedModuleType()), nullptr); Member<Entry>& entry = result.stored_value->value; if (result.is_new_entry) { entry = MakeGarbageCollected<Entry>(this); @@ -144,9 +145,7 @@ ModuleScript* ModuleMap::GetFetchedModuleScript(const KURL& url, ModuleType module_type) const { - // TODO(crbug.com/1132413) Make module type part of cache key and use - // module_type in this lookup. - MapImpl::const_iterator it = map_.find(url); + MapImpl::const_iterator it = map_.find(std::make_pair(url, module_type)); if (it == map_.end()) return nullptr; return it->value->GetModuleScript();
diff --git a/third_party/blink/renderer/core/script/module_map.h b/third_party/blink/renderer/core/script/module_map.h index 8e98235..9274c7d2 100644 --- a/third_party/blink/renderer/core/script/module_map.h +++ b/third_party/blink/renderer/core/script/module_map.h
@@ -54,7 +54,8 @@ Modulator* GetModulator() { return modulator_; } private: - using MapImpl = HeapHashMap<KURL, Member<Entry>>; + using Key = std::pair<KURL, ModuleType>; + using MapImpl = HeapHashMap<Key, Member<Entry>>; // A module map is a map of absolute URLs to map entry. MapImpl map_;
diff --git a/third_party/blink/renderer/core/script/module_map_test.cc b/third_party/blink/renderer/core/script/module_map_test.cc index 5a3023a..73d2313 100644 --- a/third_party/blink/renderer/core/script/module_map_test.cc +++ b/third_party/blink/renderer/core/script/module_map_test.cc
@@ -113,6 +113,7 @@ base::PassKey<ModuleScriptLoader> pass_key) : ModuleScriptFetcher(pass_key), modulator_(modulator) {} void Fetch(FetchParameters& request, + ModuleType module_type, ResourceFetcher*, ModuleGraphLevel, ModuleScriptFetcher::Client* client) override { @@ -224,10 +225,10 @@ // First request TestSingleModuleClient* client = MakeGarbageCollected<TestSingleModuleClient>(); - Map()->FetchSingleModuleScript(ModuleScriptFetchRequest::CreateForTest(url), - GetDocument().Fetcher(), - ModuleGraphLevel::kTopLevelModuleFetch, - ModuleScriptCustomFetchType::kNone, client); + Map()->FetchSingleModuleScript( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + GetDocument().Fetcher(), ModuleGraphLevel::kTopLevelModuleFetch, + ModuleScriptCustomFetchType::kNone, client); Modulator()->ResolveFetches(); EXPECT_FALSE(client->WasNotifyFinished()) << "fetchSingleModuleScript shouldn't complete synchronously"; @@ -243,10 +244,10 @@ // Secondary request TestSingleModuleClient* client2 = MakeGarbageCollected<TestSingleModuleClient>(); - Map()->FetchSingleModuleScript(ModuleScriptFetchRequest::CreateForTest(url), - GetDocument().Fetcher(), - ModuleGraphLevel::kTopLevelModuleFetch, - ModuleScriptCustomFetchType::kNone, client2); + Map()->FetchSingleModuleScript( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + GetDocument().Fetcher(), ModuleGraphLevel::kTopLevelModuleFetch, + ModuleScriptCustomFetchType::kNone, client2); Modulator()->ResolveFetches(); EXPECT_FALSE(client2->WasNotifyFinished()) << "fetchSingleModuleScript shouldn't complete synchronously"; @@ -271,18 +272,18 @@ // First request TestSingleModuleClient* client = MakeGarbageCollected<TestSingleModuleClient>(); - Map()->FetchSingleModuleScript(ModuleScriptFetchRequest::CreateForTest(url), - GetDocument().Fetcher(), - ModuleGraphLevel::kTopLevelModuleFetch, - ModuleScriptCustomFetchType::kNone, client); + Map()->FetchSingleModuleScript( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + GetDocument().Fetcher(), ModuleGraphLevel::kTopLevelModuleFetch, + ModuleScriptCustomFetchType::kNone, client); // Secondary request (which should join the first request) TestSingleModuleClient* client2 = MakeGarbageCollected<TestSingleModuleClient>(); - Map()->FetchSingleModuleScript(ModuleScriptFetchRequest::CreateForTest(url), - GetDocument().Fetcher(), - ModuleGraphLevel::kTopLevelModuleFetch, - ModuleScriptCustomFetchType::kNone, client2); + Map()->FetchSingleModuleScript( + ModuleScriptFetchRequest::CreateForTest(url, ModuleType::kJavaScript), + GetDocument().Fetcher(), ModuleGraphLevel::kTopLevelModuleFetch, + ModuleScriptCustomFetchType::kNone, client2); Modulator()->ResolveFetches(); EXPECT_FALSE(client->WasNotifyFinished())
diff --git a/third_party/blink/renderer/core/workers/worklet_module_responses_map.cc b/third_party/blink/renderer/core/workers/worklet_module_responses_map.cc index 85d81f3e..62af82b 100644 --- a/third_party/blink/renderer/core/workers/worklet_module_responses_map.cc +++ b/third_party/blink/renderer/core/workers/worklet_module_responses_map.cc
@@ -70,9 +70,11 @@ // Step 2: "Let url be request's url." bool WorkletModuleResponsesMap::GetEntry( const KURL& url, + ModuleType module_type, ModuleScriptFetcher::Client* client, scoped_refptr<base::SingleThreadTaskRunner> client_task_runner) { MutexLocker lock(mutex_); + DCHECK_NE(module_type, ModuleType::kInvalid); if (!is_available_ || !IsValidURL(url)) { client_task_runner->PostTask( FROM_HERE, WTF::Bind(&ModuleScriptFetcher::Client::OnFailed, @@ -80,7 +82,7 @@ return true; } - auto it = entries_.find(url); + auto it = entries_.find(std::make_pair(url, module_type)); if (it != entries_.end()) { Entry* entry = it->value.get(); switch (entry->GetState()) { @@ -111,7 +113,7 @@ // Step 5: "Create an entry in cache with key url and value "fetching"." std::unique_ptr<Entry> entry = std::make_unique<Entry>(); entry->AddClient(client, client_task_runner); - entries_.insert(url.Copy(), std::move(entry)); + entries_.insert(std::make_pair(url.Copy(), module_type), std::move(entry)); // Step 6: "Fetch request." // Running the callback with an empty params will make the fetcher to fallback @@ -122,13 +124,14 @@ void WorkletModuleResponsesMap::SetEntryParams( const KURL& url, + ModuleType module_type, const base::Optional<ModuleScriptCreationParams>& params) { MutexLocker lock(mutex_); if (!is_available_) return; - DCHECK(entries_.Contains(url)); - Entry* entry = entries_.find(url)->value.get(); + DCHECK(entries_.Contains(std::make_pair(url, module_type))); + Entry* entry = entries_.find(std::make_pair(url, module_type))->value.get(); entry->SetParams(params); }
diff --git a/third_party/blink/renderer/core/workers/worklet_module_responses_map.h b/third_party/blink/renderer/core/workers/worklet_module_responses_map.h index 92fcebc8..3f5600f3 100644 --- a/third_party/blink/renderer/core/workers/worklet_module_responses_map.h +++ b/third_party/blink/renderer/core/workers/worklet_module_responses_map.h
@@ -42,12 +42,14 @@ // class-level comment. // Called on worklet threads. bool GetEntry(const KURL&, + ModuleType, ModuleScriptFetcher::Client*, scoped_refptr<base::SingleThreadTaskRunner> client_task_runner) LOCKS_EXCLUDED(mutex_); // Called on worklet threads. void SetEntryParams(const KURL&, + ModuleType, const base::Optional<ModuleScriptCreationParams>&) LOCKS_EXCLUDED(mutex_); @@ -92,7 +94,8 @@ // addModule() calls for a newly created global scope. // See https://drafts.css-houdini.org/worklets/#creating-a-workletglobalscope // Can be read/written by any thread. - HashMap<KURL, std::unique_ptr<Entry>> entries_ GUARDED_BY(mutex_); + using Key = std::pair<KURL, ModuleType>; + HashMap<Key, std::unique_ptr<Entry>> entries_ GUARDED_BY(mutex_); Mutex mutex_; };
diff --git a/third_party/blink/renderer/core/workers/worklet_module_responses_map_test.cc b/third_party/blink/renderer/core/workers/worklet_module_responses_map_test.cc index 64d82de4..374e424 100644 --- a/third_party/blink/renderer/core/workers/worklet_module_responses_map_test.cc +++ b/third_party/blink/renderer/core/workers/worklet_module_responses_map_test.cc
@@ -80,7 +80,7 @@ WorkletModuleScriptFetcher* module_fetcher = MakeGarbageCollected<WorkletModuleScriptFetcher>( map_.Get(), ModuleScriptLoader::CreatePassKeyForTests()); - module_fetcher->Fetch(fetch_params, fetcher_.Get(), + module_fetcher->Fetch(fetch_params, ModuleType::kJavaScript, fetcher_.Get(), ModuleGraphLevel::kTopLevelModuleFetch, client); }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc index 575be71..fbc6ad9 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -105,6 +105,7 @@ layout_object_(layout_object) { // TODO(aleventhal) Get correct current state of autofill. #if DCHECK_IS_ON() + DCHECK(layout_object_); layout_object_->SetHasAXObject(true); #endif }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc b/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc index 164cc02..a2f8a3c 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc
@@ -57,6 +57,29 @@ return true; } +void AXMenuList::Detach() { + // Detach() calls ClearChildren(), but AXMenuList::ClearChildren() + // detaches the grandchild options, not the child option. + AXLayoutObject::Detach(); + DCHECK_LE(children_.size(), 1U); + + // Clear the popup. + if (children_.size()) { + children_[0]->DetachFromParent(); + // Unfortunately, the popup will be left hanging around until + // AXObjectCacheImpl() is reset. We cannot remove it here because + // this can be called while AXObjectCacheImpl() is detaching all objects, + // and the hash map of objects does not allow similtaneous iteration and + // removal of objects. + // TODO(accessibility) Consider something like this, or something that + // marks the object for imminent diposal. + // if (!AXObjectCache().IsDisposing() + // children_[0]->AXObjectCache().Remove(children_[0]); + children_[0]->Detach(); + children_.clear(); + } +} + void AXMenuList::ClearChildren() { if (children_.IsEmpty()) return; @@ -67,11 +90,10 @@ // AXMenuListPopup child would cause additional thrashing and events that the // AT would need to process, potentially causing the AT to believe that the // popup had closed and a new popup and reopened. + // The mock AXMenuListPopup child will be cleared when this object is + // detached, as it has no use without this object as an owner. DCHECK_EQ(children_.size(), 1U); children_[0]->ClearChildren(); - - if (IsDetached()) - AXObject::ClearChildren(); } void AXMenuList::AddChildren() {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_menu_list.h b/third_party/blink/renderer/modules/accessibility/ax_menu_list.h index 6a10c0751..2cd9d802 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_menu_list.h +++ b/third_party/blink/renderer/modules/accessibility/ax_menu_list.h
@@ -40,6 +40,7 @@ AccessibilityExpanded IsExpanded() const final; bool OnNativeClickAction() override; void ClearChildren() override; + void Detach() override; void DidUpdateActiveOption(int option_index); void DidShowPopup();
diff --git a/third_party/blink/renderer/modules/accessibility/ax_menu_list_option.cc b/third_party/blink/renderer/modules/accessibility/ax_menu_list_option.cc index 307edad..a16c25b 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_menu_list_option.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_menu_list_option.cc
@@ -44,14 +44,22 @@ AXObject* AXMenuListOption::ComputeParentImpl() const { Node* node = GetNode(); - if (!node) + if (!node) { + NOTREACHED(); return nullptr; + } + auto* select = To<HTMLOptionElement>(node)->OwnerSelectElement(); - if (!select) + if (!select) { + NOTREACHED(); return nullptr; + } + AXObject* select_ax_object = AXObjectCache().GetOrCreate(select); - if (!select_ax_object) + if (!select_ax_object) { + NOTREACHED(); return nullptr; + } // This happens if the <select> is not rendered. Return it and move on. auto* menu_list = DynamicTo<AXMenuList>(select_ax_object);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.cc b/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.cc index 3497a6a69..59d3db83 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.cc
@@ -107,6 +107,7 @@ if (!html_select_element) return; + DCHECK(children_.IsEmpty()); DCHECK(children_dirty_); children_dirty_ = false; @@ -114,6 +115,15 @@ active_index_ = GetSelectedIndex(); for (auto* const option_element : html_select_element->GetOptionList()) { +#if DCHECK_IS_ON() + AXObject* ax_preexisting = AXObjectCache().Get(option_element); + DCHECK(!ax_preexisting || !ax_preexisting->CachedParentObject()) + << "\nChild = " << ax_preexisting->ToString(true, true) + << "\n IsAXMenuListOption? " << IsA<AXMenuListOption>(ax_preexisting) + << "\nNew parent = " << ToString(true, true) + << "\nPreexisting parent = " + << ax_preexisting->CachedParentObject()->ToString(true, true); +#endif AXMenuListOption* option = MenuListOptionAXObject(option_element); if (option) { DCHECK(!option->IsDetached());
diff --git a/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.h b/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.h index 852a05bd..a51b0a61 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.h +++ b/third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.h
@@ -35,6 +35,7 @@ class AXMenuListOption; class HTMLElement; +// AXMenuListPopup is the only kind of AXMockObject used in Blink accessibility. class AXMenuListPopup final : public AXMockObject { public: explicit AXMenuListPopup(AXObjectCacheImpl&);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_mock_object.cc b/third_party/blink/renderer/modules/accessibility/ax_mock_object.cc index e342786..ad4dd62 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_mock_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_mock_object.cc
@@ -43,4 +43,10 @@ return ParentObject() ? ParentObject()->GetDocument() : nullptr; } +AXObject* AXMockObject::ComputeParentImpl() const { + NOTREACHED() + << "Mock objects are explicitly parented until their parent is detached"; + return nullptr; +} + } // namespace blink
diff --git a/third_party/blink/renderer/modules/accessibility/ax_mock_object.h b/third_party/blink/renderer/modules/accessibility/ax_mock_object.h index 59961d6..b4935a1 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_mock_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_mock_object.h
@@ -34,6 +34,13 @@ class AXObjectCacheImpl; +// A mock object is an AXObject defined only by a role, having no backing object +// such as a node, layout object or AccessibleNode. It must be explicitly added +// by its parent. The only current type of AXMockObject is an AXMenuListPopup. +// TODO(accessibility) Decide whether to keep this class or fold into +// AXMenuListPopup. If keeping it, then some of the general methods related to +// the hierarchty should be moved from there to here. + class MODULES_EXPORT AXMockObject : public AXObject { protected: explicit AXMockObject(AXObjectCacheImpl&); @@ -45,6 +52,7 @@ AXRestriction Restriction() const override { return kRestrictionNone; } bool IsMockObject() const final { return true; } Document* GetDocument() const override; + AXObject* ComputeParentImpl() const override; private: bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc index b3e8286..5e2887a 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -62,6 +62,8 @@ #include "third_party/blink/renderer/core/html/forms/html_input_element.h" #include "third_party/blink/renderer/core/html/forms/html_label_element.h" #include "third_party/blink/renderer/core/html/forms/html_legend_element.h" +#include "third_party/blink/renderer/core/html/forms/html_opt_group_element.h" +#include "third_party/blink/renderer/core/html/forms/html_option_element.h" #include "third_party/blink/renderer/core/html/forms/html_select_element.h" #include "third_party/blink/renderer/core/html/forms/html_text_area_element.h" #include "third_party/blink/renderer/core/html/forms/labels_node_list.h" @@ -104,9 +106,12 @@ #include "third_party/blink/renderer/modules/accessibility/ax_image_map_link.h" #include "third_party/blink/renderer/modules/accessibility/ax_inline_text_box.h" #include "third_party/blink/renderer/modules/accessibility/ax_layout_object.h" +#include "third_party/blink/renderer/modules/accessibility/ax_menu_list_option.h" +#include "third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.h" #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h" #include "third_party/blink/renderer/modules/accessibility/ax_position.h" #include "third_party/blink/renderer/modules/accessibility/ax_range.h" +#include "third_party/blink/renderer/modules/accessibility/ax_relation_cache.h" #include "third_party/blink/renderer/modules/media_controls/elements/media_control_elements_helper.h" #include "third_party/blink/renderer/platform/graphics/image_data_buffer.h" #include "third_party/blink/renderer/platform/keyboard_codes.h" @@ -1199,6 +1204,12 @@ initialized_ = true; #endif AXObject::Init(parent_if_known); + + DCHECK(node_ || + (GetLayoutObject() && + AXObjectCacheImpl::IsPseudoElementDescendant(*GetLayoutObject()))) + << "Nodeless AXNodeObject can only exist inside a pseudo element: " + << GetLayoutObject(); } void AXNodeObject::Detach() { @@ -3325,8 +3336,10 @@ void AXNodeObject::AddInlineTextBoxChildren(bool force) { Document* document = GetDocument(); - if (!document) + if (!document) { + NOTREACHED(); return; + } Settings* settings = document->GetSettings(); if (!force && @@ -3481,13 +3494,51 @@ AddChildAndCheckIncluded(html_input_element->PopupRootAXObject()); } +bool AXNodeObject::CanAddLayoutChild(LayoutObject& child) { + if (child.IsAnonymous()) + return true; + + // An non-anonymous layout object (has a DOM node) is only reached when a + // pseudo element is inside another pseudo element. + // This is because layout object traversal only occurs for pseudo element + // subtrees -- see AXObject::ShouldUseLayoutObjectTraversalForChildren(). + // The only way a node will occur inside of that subtree is if it's another + // pseudo element. + DCHECK(child.GetNode()->IsPseudoElement()); + + // Only add this inner pseudo element if it hasn't been added elsewhere. + // An example is ::before with ::first-letter. + AXObject* ax_preexisting = AXObjectCache().Get(&child); + return !ax_preexisting || !ax_preexisting->CachedParentObject() || + ax_preexisting->CachedParentObject() == this; +} + +#if DCHECK_IS_ON() +#define CHECK_NO_OTHER_PARENT_FOR(child) \ + AXObject* ax_preexisting = AXObjectCache().Get(child); \ + DCHECK(!ax_preexisting || !ax_preexisting->CachedParentObject() || \ + ax_preexisting->CachedParentObject() == this) \ + << "Newly added child can't have a different preexisting parent:" \ + << "\nChild = " << ax_preexisting->ToString(true, true) \ + << "\nNew parent = " << ToString(true, true) \ + << "\nPreexisting parent = " \ + << ax_preexisting->CachedParentObject()->ToString(true, true); +#else +#define CHECK_NO_OTHER_PARENT_FOR(child) (void(0)) +#endif + void AXNodeObject::AddLayoutChildren() { - // Children are added this way in very rare cases. - // See ShouldUseLayoutObjectTraversalForChildren(). + // Children are added this way only for pseudo-element subtrees. + // See AXObject::ShouldUseLayoutObjectTraversalForChildren(). DCHECK(GetLayoutObject()); LayoutObject* child = GetLayoutObject()->SlowFirstChild(); while (child) { - AddChildAndCheckIncluded(AXObjectCache().GetOrCreate(child, this)); + DCHECK(AXObjectCacheImpl::IsPseudoElementDescendant(*child)); + if (CanAddLayoutChild(*child)) { + CHECK_NO_OTHER_PARENT_FOR(child); + // All added pseudo element desecendants are included in the tree. + AddChildAndCheckIncluded(AXObjectCache().GetOrCreate(child, this)); + } child = child->NextSibling(); } } @@ -3511,17 +3562,27 @@ if (!accessible_node) return; - for (const auto& child : accessible_node->GetChildren()) + for (const auto& child : accessible_node->GetChildren()) { + CHECK_NO_OTHER_PARENT_FOR(child); AddChildAndCheckIncluded(AXObjectCache().GetOrCreate(child, this)); + } } void AXNodeObject::AddOwnedChildren() { AXObjectVector owned_children; AXObjectCache().GetAriaOwnedChildren(this, owned_children); + DCHECK(owned_children.size() == 0 || AXRelationCache::IsValidOwner(this)) + << "This object is not allowed to use aria-owns, but is: " + << ToString(true, true); + // Always include owned children. - for (const auto& owned_child : owned_children) + for (const auto& owned_child : owned_children) { + DCHECK(AXRelationCache::IsValidOwnedChild(owned_child)) + << "This object is not allowed to be owned, but is: " + << owned_child->ToString(true, true); AddChildAndCheckIncluded(owned_child, true); + } } void AXNodeObject::AddChildrenImpl() { @@ -3605,35 +3666,90 @@ #endif } +// Add non-owned children that are backed with a DOM node. void AXNodeObject::AddNodeChild(Node* node) { if (!node) return; - AXObject* child_obj = AXObjectCache().GetOrCreate(node, this); - if (!child_obj) - return; + AXObject* ax_child = AXObjectCache().Get(node); + // Should not have another parent unless owned. + if (AXObjectCache().IsAriaOwned(ax_child)) + return; // Do not add owned children to their natural parent. + +#if DCHECK_IS_ON() + AXObject* ax_cached_parent = + ax_child ? ax_child->CachedParentObject() : nullptr; + size_t num_children_before_add = children_.size(); +#endif + + if (!ax_child) { + ax_child = AXObjectCache().GetOrCreate(node, this); + if (!ax_child) + return; + } + + AddChild(ax_child); + +#if DCHECK_IS_ON() + bool did_add_child = children_.size() == num_children_before_add + 1 && + children_[0] == ax_child; + if (did_add_child) { + DCHECK(!ax_cached_parent || ax_cached_parent == this) + << "Newly added child shouldn't have a different preexisting parent:" + << "\nChild = " << ax_child->ToString(true, true) + << "\nNew parent = " << ToString(true, true) + << "\nPreexisting parent = " << ax_cached_parent->ToString(true, true); + } +#endif +} + +#if DCHECK_IS_ON() +void AXNodeObject::CheckValidChild(AXObject* child) { + DCHECK(!child->IsDetached()) + << "Cannot add a detached child: " << child->ToString(true, true); + + Node* child_node = child->GetNode(); + + // An HTML image can only have area children. + DCHECK(!IsA<HTMLImageElement>(GetNode()) || IsA<HTMLAreaElement>(child_node)) + << "Image elements can only have area children, had " + << child->ToString(true, true); // <area> children should only be added via AddImageMapChildren(), as the // children of an <image usemap>, and never alone or as children of a <map>. - DCHECK(!IsA<HTMLAreaElement>(node)); + DCHECK(IsA<HTMLImageElement>(GetNode()) || !IsA<HTMLAreaElement>(child_node)) + << "Area elements can only be added by image parents: " + << child->ToString(true, true) << " had a parent of " + << ToString(true, true); - AddChild(child_obj); + // An option or popup for a <select size=1> must only be added via an + // overridden AddChildren() on AXMenuList/AXMenuListPopup. + // These AXObjects must be added in an overridden AddChildren() method, and + // that will only occur if AXObjectCacheImpl::UseAXMenuList() returns true. + DCHECK(!IsA<AXMenuListOption>(child)) + << "Adding menulist option child in wrong place: " + << "\nChild: " << child->ToString(true, true) + << "\nParent: " << child->ParentObject()->ToString(true, true) + << "\nUseAXMenuList()=" << AXObjectCacheImpl::UseAXMenuList(); + + // An popup for a <select size=1> must only be added via an overridden + // AddChildren() on AXMenuList. + DCHECK(!IsA<AXMenuListPopup>(child)) + << "Adding menulist popup in wrong place: " + << "\nChild: " << child->ToString(true, true) + << "\nParent: " << child->ParentObject()->ToString(true, true) + << "\nUseAXMenuList()=" << AXObjectCacheImpl::UseAXMenuList() + << "\nShouldCreateAXMenuListOptionFor()=" + << AXObjectCacheImpl::ShouldCreateAXMenuListOptionFor(child_node); } +#endif void AXNodeObject::AddChild(AXObject* child, bool is_from_aria_owns) { if (!child) return; - // These must only be added via an overridden AddChildren() on the parent. - if (child->IsMenuListOption() || child->IsMenuListPopup()) - return; - #if DCHECK_IS_ON() - if (IsA<HTMLImageElement>(GetNode())) { - DCHECK(IsA<HTMLAreaElement>(child->GetNode())) - << "Image elements can only have area children, had " - << child->ToString(true, true); - } + CheckValidChild(child); #endif unsigned int index = children_.size(); @@ -3657,17 +3773,13 @@ return; DCHECK(CanHaveChildren()); - DCHECK(!child->IsDetached()) << "Cannot add a detached child: " << child->ToString(true, true); - if (is_from_aria_owns) { - DCHECK(AXObjectCache().IsAriaOwned(child)); - } else { - // Don't add an aria-owned child to its natural parent, because it will - // already be the child of the element with aria-owns. - if (AXObjectCache().IsAriaOwned(child)) - return; - } + // Enforce expected aria-owns status: + // - Don't add a non-aria-owned child when called from AddOwnedChildren(). + // - Don't add an aria-owned child to its natural parent, because it will + // already be the child of the element with aria-owns. + DCHECK_EQ(AXObjectCache().IsAriaOwned(child), is_from_aria_owns); // Set the parent: // - For a new object it will have already been set. @@ -3708,20 +3820,6 @@ } } } else { - DCHECK(!child->IsDetached()) - << "Cannot add a detached child: " << child->ToString(true, true); - // These AXObjects must be added in an overridden AddChildren() method: - DCHECK(!child->IsMenuListOption()) - << "Adding menulist option child in wrong place: " - << child->ToString(true, true) - << " of parent: " << child->ParentObject()->ToString(true, true) - << "\n UseAXMenuList()=" << AXObjectCacheImpl::UseAXMenuList() - << " ShouldCreateAXMenuListOptionFor()=" - << AXObjectCacheImpl::ShouldCreateAXMenuListOptionFor(child->GetNode()); - DCHECK(!child->IsMenuListPopup()) - << "Adding menulist popup in wrong place: " - << child->ToString(true, true) - << " of parent: " << child->ParentObject()->ToString(true, true); children_.insert(index, child); } }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.h b/third_party/blink/renderer/modules/accessibility/ax_node_object.h index 44515cd1..aa68e31 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
@@ -301,6 +301,7 @@ void AddChildrenImpl(); void AddNodeChildren(); void AddLayoutChildren(); + bool CanAddLayoutChild(LayoutObject& child); void AddInlineTextBoxChildren(bool force = false); void AddImageMapChildren(); void AddPopupChildren(); @@ -309,6 +310,9 @@ void AddValidationMessageChild(); void AddAccessibleNodeChildren(); void AddOwnedChildren(); +#if DCHECK_IS_ON() + void CheckValidChild(AXObject* child); +#endif ax::mojom::blink::Dropeffect ParseDropeffect(String& dropeffect) const;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc index ffcad28..8929735 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -683,7 +683,13 @@ void AXObject::Detach() { #if DCHECK_IS_ON() - DCHECK(!IsDetached()); + // Only mock objects can end up being detached twice, because their owner + // may have needed to detach them when they were detached, but couldn't + // remove them from the object cache yet. + if (IsDetached()) { + DCHECK(IsMockObject()) << "Object detached twice: " << RoleValue(); + return; + } DCHECK(!is_adding_children_) << ToString(true, true); DCHECK(ax_object_cache_); DCHECK(!ax_object_cache_->IsFrozen()) @@ -742,14 +748,20 @@ "attempt to recompute it, occurred on " << GetNode(); - DCHECK(GetNode() || GetLayoutObject()) - << "Can't compute parent on AXObjects that don't have a backing Node or " - "LayoutObject. Objects without those must set the parent in Init()."; + if (!GetNode() && !GetLayoutObject()) { + NOTREACHED() << "Can't compute parent on AXObjects without a backing Node " + "or LayoutObject. Objects without those must set the " + "parent in Init(), |this| = " + << RoleValue(); + return nullptr; + } return ComputeParentImpl(); } AXObject* AXObject::ComputeParentImpl() const { + DCHECK(!IsDetached()); + if (AXObjectCache().IsAriaOwned(this)) return AXObjectCache().GetAriaOwnedParent(this); @@ -771,7 +783,14 @@ // If no node, or a pseudo element, use the layout parent. if (!current_node) { LayoutObject* current_layout_obj = GetLayoutObject(); - DCHECK(current_layout_obj); + if (!current_layout_obj) { + NOTREACHED() + << "Can't compute parent on AXObjects without a backing Node " + "or LayoutObject. Objects without those must set the " + "parent in Init(), |this| = " + << RoleValue(); + return nullptr; + } // If no DOM node and no parent, this must be an anonymous layout object. DCHECK(current_layout_obj->IsAnonymous()); LayoutObject* parent_layout_obj = current_layout_obj->Parent(); @@ -3781,7 +3800,7 @@ AXObject* AXObject::ParentObjectIncludedInTree() const { AXObject* parent; for (parent = ParentObject(); - parent && !parent->LastKnownIsIncludedInTreeValue(); + parent && !parent->AccessibilityIsIncludedInTree(); parent = parent->ParentObject()) { } @@ -3802,17 +3821,16 @@ return ancestor; } +// Only use layout object traversal for pseudo elements and their descendants. bool AXObject::ShouldUseLayoutObjectTraversalForChildren() const { if (!GetLayoutObject()) return false; - // If no node, this may be an anonymous layout object, e.g. an anonymous block - // that is inserted to enforce the rule that all children are blocks or all - // children are inlines. Anonymous blocks have a layout object but no node. - // Note: anonymous containers are only added within pseudo elements. - // See AXObjectCacheImpl::IsLayoutObjectRelevantForAccessibility(). + // If no node, this is an anonymous layout object. The only way this can be + // reached is inside a pseudo element subtree. if (!GetNode()) { DCHECK(GetLayoutObject()->IsAnonymous()); + DCHECK(AXObjectCacheImpl::IsPseudoElementDescendant(*GetLayoutObject())); return true; } @@ -3914,7 +3932,9 @@ child->DetachFromParent(); } + // Detach anything else that may still point to this parent. if (GetNode()) { + DetachSelectSlotChildFromParent(); // Only direct AXObjects for direct DOM children can be unincluded. // If they were unincluded, then they couldn't detach from parent in the // first loop above, because they aren't in children_. @@ -3936,6 +3956,40 @@ children_.clear(); } +// TODO(accessibility) Refactor AXMenuListObject to be an AXNodeObject +// that exposes its contents via the shadow DOM, and remove this. +void AXObject::DetachSelectSlotChildFromParent() { + // An <select>is assigned a shadow root by the user agent, in order to + // help with layout. The last child is a <slot> container that holds the + // options. It will have an AXObject that points to |this| as a parent. + // Detaching it is important in order to guarantee that |this| detached object + // will not be reached while traversing parents, e.g. of <option> children, + // which still exist even if the <select> is invalidated for a size change. + + DCHECK(GetNode()); + + HTMLSelectElement* select_element = DynamicTo<HTMLSelectElement>(GetNode()); + if (!select_element) + return; + + ShadowRoot* shadow_root = select_element->GetShadowRoot(); + if (!shadow_root) + return; + + DCHECK(shadow_root->IsUserAgent()); + + Node* shadow_contents = shadow_root->lastChild(); + if (!shadow_contents) { + NOTREACHED(); + return; + } + + DCHECK(IsA<HTMLSlotElement>(shadow_contents)); + + if (AXObject* ax_shadow_contents = AXObjectCache().Get(shadow_contents)) + ax_shadow_contents->DetachFromParent(); +} + Element* AXObject::GetElement() const { return DynamicTo<Element>(GetNode()); }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h index af0f421e..39e8d73 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -1338,7 +1338,6 @@ Member<AXObjectCacheImpl> ax_object_cache_; - private: void UpdateDistributionForFlatTreeTraversal() const; bool IsARIAControlledByTextboxWithActiveDescendant() const; bool AncestorExposesActiveDescendant() const; @@ -1372,6 +1371,10 @@ const std::string& value, uint32_t max_len = kMaxStringAttributeLength) const; + // If this is an element that uses a child shadow root <slot>, detach the + // slot's parent. + void DetachSelectSlotChildFromParent(); + static unsigned number_of_live_ax_objects_; DISALLOW_COPY_AND_ASSIGN(AXObject);
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 ff29fc3b..b8aad653 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
@@ -52,6 +52,7 @@ #include "third_party/blink/renderer/core/html/canvas/html_canvas_element.h" #include "third_party/blink/renderer/core/html/forms/html_input_element.h" #include "third_party/blink/renderer/core/html/forms/html_label_element.h" +#include "third_party/blink/renderer/core/html/forms/html_opt_group_element.h" #include "third_party/blink/renderer/core/html/forms/html_option_element.h" #include "third_party/blink/renderer/core/html/forms/html_select_element.h" #include "third_party/blink/renderer/core/html/forms/listed_element.h" @@ -131,19 +132,6 @@ return document.IsActive() && !document.IsDetached(); } -bool IsPseudoElementDescendant(const LayoutObject& layout_object) { - const LayoutObject* ancestor = &layout_object; - while (true) { - ancestor = ancestor->Parent(); - if (!ancestor) - return false; - if (ancestor->IsPseudoElement()) - return true; - if (!ancestor->IsAnonymous()) - return false; - } -} - bool HasAriaCellRole(Element* elem) { DCHECK(elem); const AtomicString& role_str = elem->FastGetAttribute(html_names::kRoleAttr); @@ -239,6 +227,26 @@ return true; } +bool IsShadowRootRelevantForAccessibility(const Node* node) { + if (IsA<HTMLSlotElement>(node) && AXObjectCacheImpl::UseAXMenuList()) { + // For the AXMenuList case: + // Don't use any shadow root descendants, because AXMenuList already + // handles adding descendants and these would be redundant. + // DOM traversal is still necessary for the <canvas> case. + Node* host = node->OwnerShadowHost(); + auto* select_element = DynamicTo<HTMLSelectElement>(host); + if (!select_element) { + if (auto* opt_group_element = DynamicTo<HTMLOptGroupElement>(host)) + select_element = opt_group_element->OwnerSelectElement(); + } + + return !select_element || !select_element->UsesMenuList() || + select_element->IsInCanvasSubtree(); + } + + return true; +} + bool IsLayoutObjectRelevantForAccessibility(const LayoutObject& layout_object) { if (layout_object.IsAnonymous()) { // Anonymous means there is no DOM node, and it's been inserted by the @@ -256,7 +264,7 @@ // Allowing anonymous pseudo elements ensures that all visible descendant // pseudo content will be reached, despite only being able to walk layout // inside of pseudo content. - return IsPseudoElementDescendant(layout_object); + return AXObjectCacheImpl::IsPseudoElementDescendant(layout_object); } if (layout_object.IsText()) @@ -265,16 +273,36 @@ Node* node = layout_object.GetNode(); DCHECK(node) << "Non-anonymous layout objects always have a node"; + if (node->IsInUserAgentShadowRoot() && + !IsShadowRootRelevantForAccessibility(node)) { + return false; + } // Menu list option and HTML area elements are indexed by DOM node, never by // layout object. if (AXObjectCacheImpl::ShouldCreateAXMenuListOptionFor(node)) return false; + if (IsA<HTMLAreaElement>(node)) return false; return true; } +// ----------------------------------------------------------------------------- +// IsNodeRelevantForAccessibility() and IsLayoutObjectRelevantForAccessibility() +// * if the LayoutObject is relevant and not display-locked, +// GetOrCreate() will return an object that will be an AXLayoutObject or +// derivative. Note that the node may or may not be relevant. +// * Else if the Node is relevant, GetOrCreate() will return an object that will +// be an AXNodeObject or derivative. +// * Else neither are relevant, and the tree will be truncated (no descendants) +// at this point. +// ----------------------------------------------------------------------------- +// TODO(accessibility) Merge IsNodeRelevantForAccessibility() and +// IsLayoutObjectRelevantForAccessibility() producing a function like +// GetAXType(node, layout_object) returning kTruncateSubtree, +// kAXNodeObject, or kAXLayoutObject. This will allow some of the checks that +// currently happen twice, to only happen once. bool IsNodeRelevantForAccessibility(const Node* node, bool parent_ax_known, bool is_layout_object_relevant) { @@ -314,6 +342,12 @@ return !To<Text>(node)->ContainsOnlyWhitespaceOrEmpty(); } + // Node also not relevant -- truncate subtree here. + if (node->IsInUserAgentShadowRoot() && + !IsShadowRootRelevantForAccessibility(node)) { + return false; + } + if (!node->IsElementNode()) return false; // Only documents, elements and text nodes get ax objects. @@ -417,7 +451,6 @@ } permission_observer_receiver_.reset(); - } AXObject* AXObjectCacheImpl::Root() { @@ -701,6 +734,21 @@ return select->GetLayoutObject() && AXObjectCacheImpl::UseAXMenuList(); } +// static +bool AXObjectCacheImpl::IsPseudoElementDescendant( + const LayoutObject& layout_object) { + const LayoutObject* ancestor = &layout_object; + while (true) { + ancestor = ancestor->Parent(); + if (!ancestor) + return false; + if (ancestor->IsPseudoElement()) + return true; + if (!ancestor->IsAnonymous()) + return false; + } +} + AXObject* AXObjectCacheImpl::CreateFromNode(Node* node) { if (ShouldCreateAXMenuListOptionFor(node)) { return MakeGarbageCollected<AXMenuListOption>(To<HTMLOptionElement>(node), @@ -909,14 +957,15 @@ if (AXObject* obj = Get(inline_text_box)) { #if DCHECK_IS_ON() - if (obj->CachedParentObject()) { - // AXInlineTextbox objects can't get a new parent, unlike other types of - // accessible objects that can get a new parent because they moved or - // because of aria-owns. - DCHECK_EQ(obj->CachedParentObject()->GetNode(), parent->GetNode()); - DCHECK_EQ(obj->CachedParentObject()->GetLayoutObject(), - parent->GetLayoutObject()); - } + // AXInlineTextbox objects can't get a new parent, unlike other types of + // accessible objects that can get a new parent because they moved or + // because of aria-owns. + // AXInlineTextbox objects are only added via AddChildren() on static text + // or line break parents. The children are cleared, and detached from their + // parent before AddChildren() executes. There should be no previous parent. + DCHECK(parent->RoleValue() == ax::mojom::blink::Role::kStaticText || + parent->RoleValue() == ax::mojom::blink::Role::kLineBreak); + DCHECK(!obj->CachedParentObject() || obj->CachedParentObject() == parent); #endif obj->SetParent(parent); return obj; @@ -1665,7 +1714,6 @@ // Returns the new object. auto refresh = [this](AXObject* current) { Node* node = current->GetNode(); - AXObject* cached_parent = current->CachedParentObject(); DCHECK(node) << "Refresh() is currently only supported for objects " "with a backing node"; AXID retained_axid = current->AXObjectID(); @@ -1682,7 +1730,12 @@ // TODO(accessibility) We don't use the return value, can we use .erase() // and it will still make sure that the object is cleaned up? objects_.Take(retained_axid); - AXObject* new_object = CreateAndInit(node, cached_parent, retained_axid); + // Do not pass in the previous parent. It may not end up being the same, + // e.g. in the case of a <select> option where the select changed size. + // TODO(accessibility) That may be the only example of this, in which case + // it could be handled in RoleChangedWithCleanLayout(), and the cached + // parent could be used. + AXObject* new_object = CreateAndInit(node, nullptr, retained_axid); if (!new_object) RemoveAXID(current); // Failed to create, so remove object completely. return new_object;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h index 725df8f..3f27b01 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
@@ -108,6 +108,7 @@ void Remove(LayoutObject*) override; void Remove(Node*) override; void Remove(AbstractInlineTextBox*) override; + void Remove(AXObject*); // Calls more specific Remove methods as necessary. const Element* RootAXEditableElement(const Node*) override; @@ -300,6 +301,7 @@ static bool UseAXMenuList() { return use_ax_menu_list_; } static bool ShouldCreateAXMenuListOptionFor(const Node*); + static bool IsPseudoElementDescendant(const LayoutObject& layout_object); #if DCHECK_IS_ON() bool HasBeenDisposed() { return has_been_disposed_; } @@ -341,7 +343,6 @@ AXObject* CreateFromNode(Node*); AXObject* CreateFromInlineTextBox(AbstractInlineTextBox*); void Remove(AXID); - void Remove(AXObject*); // Calls more specific Remove methods as necessary. // Given a <map> element, get the image currently associated with it, if any. AXObject* GetAXImageForMap(HTMLMapElement& map);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc index 184cc5d..76be3c4 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc
@@ -56,7 +56,8 @@ } bool AXRelationCache::IsAriaOwned(const AXObject* child) const { - return aria_owned_child_to_owner_mapping_.Contains(child->AXObjectID()); + return child && + aria_owned_child_to_owner_mapping_.Contains(child->AXObjectID()); } AXObject* AXRelationCache::GetAriaOwnedParent(const AXObject* child) const { @@ -94,30 +95,12 @@ bool AXRelationCache::IsValidOwnsRelation(AXObject* owner, AXObject* child) const { - if (!child) + if (!IsValidOwner(owner) || !IsValidOwnedChild(child)) return false; - DCHECK(owner->GetNode()) << "Cannot use aria-owns without a node"; - DCHECK(child->GetNode()) << "Cannot be target of aria-owns without a node"; - - // Some objects aren't allowed to aria-own children: - // - If set on combo boxes but we don't want to rearrange the tree because - // then we'd interpret that as the owned children actually being part of the - // editable content of the text field. - // - Do not allow on <area> to own another object, in order to prevent - // interference with the special cased parenting logic used with <area>. - if (!owner->CanHaveChildren() || owner->IsNativeTextControl() || - owner->HasContentEditableAttributeSet() || owner->IsImageMapLink()) { - return false; - } - - if (child->IsImageMapLink()) - return false; // An area must be parented by an image. - // If this child is already aria-owned by a different owner, continue. // It's an author error if this happens and we don't worry about which of - // the two owners wins ownership of the child, as long as only one of them - // does. + // the two owners wins ownership, as long as only one of them does. if (IsAriaOwned(child) && GetAriaOwnedParent(child) != owner) return false; @@ -128,6 +111,48 @@ return true; } +bool AXRelationCache::IsValidOwner(AXObject* owner) { + if (!owner->GetNode()) { + NOTREACHED() << "Cannot use aria-owns without a node on both ends"; + return false; + } + + // Can't have children. + if (!owner->CanHaveChildren()) + return false; + + // No aria-owns in editable controlsm otherwise wreaks havoc. + if (owner->IsNativeTextControl() || owner->HasContentEditableAttributeSet()) + return false; + + // Image maps can only use <img usemap> to "own" <area> children. + // This requires special parenting logic, and aria-owns is prevented here in + // order to keep things from getting too complex. + if (owner->RoleValue() == ax::mojom::blink::Role::kImageMap) + return false; + + // Similarly, do not allow <area> to own another object. + if (owner->IsImageMapLink()) + return false; + + return true; +} + +bool AXRelationCache::IsValidOwnedChild(AXObject* child) { + if (!child) + return false; + + if (!child->GetNode()) { + NOTREACHED() << "Cannot use aria-owns without a node on both ends"; + return false; + } + + if (child->IsImageMapLink()) + return false; // An area can't be owned, only parented by <img usemap>. + + return true; +} + void AXRelationCache::UnmapOwnedChildren(const AXObject* owner, const Vector<AXID> child_ids) { for (AXID removed_child_id : child_ids) { @@ -182,14 +207,20 @@ Vector<String> owned_id_vector; for (const auto& element : attr_associated_elements) { + // Pass in owner parent assuming that the owns relationship will be valid. + // It will be cleared below if the owns relationship is found to be invalid. AXObject* child = GetOrCreate(element, owner); // TODO(meredithl): Determine how to update reverse relations for elements // without an id. if (element->GetIdAttribute()) owned_id_vector.push_back(element->GetIdAttribute()); - if (IsValidOwnsRelation(const_cast<AXObject*>(owner), child)) - validated_owned_children_result.push_back(GetOrCreate(element, owner)); + if (IsValidOwnsRelation(const_cast<AXObject*>(owner), child)) { + validated_owned_children_result.push_back(child); + } else if (child) { + // Invalid owns relation: repair the parent that was set above. + child->SetParent(child->ComputeParentImpl()); + } } // Track reverse relations for future tree updates. @@ -251,9 +282,16 @@ Vector<AXID> validated_owned_child_axids; for (const String& id_name : owned_id_vector) { Element* child_element = scope.getElementById(AtomicString(id_name)); + // Pass in owner parent assuming that the owns relationship will be valid. + // It will be cleared below if the owns relationship is found to be + // invalid. AXObject* child = GetOrCreate(child_element, owner); - if (IsValidOwnsRelation(const_cast<AXObject*>(owner), child)) + if (IsValidOwnsRelation(const_cast<AXObject*>(owner), child)) { owned_children.push_back(child); + } else if (child) { + // Invalid owns relation: repair the parent that was set above. + child->SetParent(child->ComputeParentImpl()); + } } }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.h b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.h index 6fce88df..0d9bb15 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.h +++ b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.h
@@ -82,6 +82,9 @@ // specific time in the lifecycle. void UpdateAriaOwnsWithCleanLayout(AXObject* owner); + static bool IsValidOwner(AXObject* owner); + static bool IsValidOwnedChild(AXObject* child); + private: // Given an object that has explicitly set elements for aria-owns, update the // internal state to reflect the new set of children owned by this object.
diff --git a/third_party/blink/renderer/modules/canvas/BUILD.gn b/third_party/blink/renderer/modules/canvas/BUILD.gn index b31b07b34..b639137ed 100644 --- a/third_party/blink/renderer/modules/canvas/BUILD.gn +++ b/third_party/blink/renderer/modules/canvas/BUILD.gn
@@ -34,10 +34,13 @@ "htmlcanvas/canvas_context_creation_attributes_helpers.h", "htmlcanvas/html_canvas_element_module.cc", "htmlcanvas/html_canvas_element_module.h", + "imagebitmap/image_bitmap_factories.cc", + "imagebitmap/image_bitmap_factories.h", "imagebitmap/image_bitmap_rendering_context.cc", "imagebitmap/image_bitmap_rendering_context.h", "imagebitmap/image_bitmap_rendering_context_base.cc", "imagebitmap/image_bitmap_rendering_context_base.h", + "imagebitmap/image_bitmap_source_union.h", "offscreencanvas/offscreen_canvas_module.cc", "offscreencanvas/offscreen_canvas_module.h", "offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc",
diff --git a/third_party/blink/renderer/modules/canvas/idls.gni b/third_party/blink/renderer/modules/canvas/idls.gni index 77a1099..cfd3c39 100644 --- a/third_party/blink/renderer/modules/canvas/idls.gni +++ b/third_party/blink/renderer/modules/canvas/idls.gni
@@ -24,6 +24,8 @@ modules_dependency_idl_files = [ "canvas2d/canvas_path.idl", "htmlcanvas/html_canvas_element_module.idl", + "imagebitmap/window_create_image_bitmap.idl", + "imagebitmap/worker_create_image_bitmap.idl", "offscreencanvas/offscreen_canvas_module.idl", ]
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc b/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.cc similarity index 99% rename from third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc rename to third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.cc index 7a711a5..4756131 100644 --- a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc +++ b/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.cc
@@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h" +#include "third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.h" #include <memory> #include <utility>
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h b/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.h similarity index 73% rename from third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h rename to third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.h index 1c056ee1..69f0ded 100644 --- a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h +++ b/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.h
@@ -28,20 +28,23 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_IMAGEBITMAP_IMAGE_BITMAP_FACTORIES_H_ -#define THIRD_PARTY_BLINK_RENDERER_CORE_IMAGEBITMAP_IMAGE_BITMAP_FACTORIES_H_ +#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_IMAGEBITMAP_IMAGE_BITMAP_FACTORIES_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_IMAGEBITMAP_IMAGE_BITMAP_FACTORIES_H_ #include <memory> #include "base/single_thread_task_runner.h" -#include "third_party/blink/renderer/bindings/core/v8/image_bitmap_source.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/core/v8/v8_image_bitmap_options.h" +#include "third_party/blink/renderer/bindings/modules/v8/image_bitmap_source.h" #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" #include "third_party/blink/renderer/core/fileapi/file_reader_loader.h" #include "third_party/blink/renderer/core/fileapi/file_reader_loader_client.h" -#include "third_party/blink/renderer/core/frame/window_or_worker_global_scope.h" +#include "third_party/blink/renderer/core/frame/local_dom_window.h" +#include "third_party/blink/renderer/core/workers/worker_global_scope.h" +#include "third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_source_union.h" +#include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/platform/bindings/name_client.h" #include "third_party/blink/renderer/platform/bindings/script_state.h" #include "third_party/blink/renderer/platform/geometry/int_rect.h" @@ -57,7 +60,7 @@ class ExecutionContext; class ImageBitmapSource; -class CORE_EXPORT ImageBitmapFactories final +class MODULES_EXPORT ImageBitmapFactories final : public GarbageCollected<ImageBitmapFactories>, public Supplement<ExecutionContext>, public NameClient { @@ -82,6 +85,54 @@ const ImageBitmapOptions*, ExceptionState&); + // window.createImageBitmap() + static ScriptPromise createImageBitmap( + ScriptState* script_state, + LocalDOMWindow&, + const ImageBitmapSourceUnion& bitmap_source, + const ImageBitmapOptions* options, + ExceptionState& exception_state) { + return CreateImageBitmap(script_state, bitmap_source, options, + exception_state); + } + static ScriptPromise createImageBitmap( + ScriptState* script_state, + LocalDOMWindow&, + const ImageBitmapSourceUnion& bitmap_source, + int sx, + int sy, + int sw, + int sh, + const ImageBitmapOptions* options, + ExceptionState& exception_state) { + return CreateImageBitmap(script_state, bitmap_source, sx, sy, sw, sh, + options, exception_state); + } + + // worker.createImageBitmap() + static ScriptPromise createImageBitmap( + ScriptState* script_state, + WorkerGlobalScope&, + const ImageBitmapSourceUnion& bitmap_source, + const ImageBitmapOptions* options, + ExceptionState& exception_state) { + return CreateImageBitmap(script_state, bitmap_source, options, + exception_state); + } + static ScriptPromise createImageBitmap( + ScriptState* script_state, + WorkerGlobalScope&, + const ImageBitmapSourceUnion& bitmap_source, + int sx, + int sy, + int sw, + int sh, + const ImageBitmapOptions* options, + ExceptionState& exception_state) { + return CreateImageBitmap(script_state, bitmap_source, sx, sy, sw, sh, + options, exception_state); + } + virtual ~ImageBitmapFactories() = default; void Trace(Visitor*) const override; @@ -159,4 +210,4 @@ } // namespace blink -#endif // THIRD_PARTY_BLINK_RENDERER_CORE_IMAGEBITMAP_IMAGE_BITMAP_FACTORIES_H_ +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_IMAGEBITMAP_IMAGE_BITMAP_FACTORIES_H_
diff --git a/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_source_union.h b/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_source_union.h new file mode 100644 index 0000000..7decae1 --- /dev/null +++ b/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_source_union.h
@@ -0,0 +1,17 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_IMAGEBITMAP_IMAGE_BITMAP_SOURCE_UNION_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_IMAGEBITMAP_IMAGE_BITMAP_SOURCE_UNION_H_ + +#include "third_party/blink/renderer/bindings/modules/v8/image_bitmap_source.h" + +namespace blink { + +using ImageBitmapSourceUnion = + HTMLImageElementOrSVGImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrImageBitmapOrOffscreenCanvas; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_IMAGEBITMAP_IMAGE_BITMAP_SOURCE_UNION_H_
diff --git a/third_party/blink/renderer/modules/canvas/imagebitmap/window_create_image_bitmap.idl b/third_party/blink/renderer/modules/canvas/imagebitmap/window_create_image_bitmap.idl new file mode 100644 index 0000000..7d847116 --- /dev/null +++ b/third_party/blink/renderer/modules/canvas/imagebitmap/window_create_image_bitmap.idl
@@ -0,0 +1,23 @@ +// 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. + +// https://html.spec.whatwg.org/C/#imagebitmapsource +typedef (HTMLImageElement or + SVGImageElement or + HTMLVideoElement or + HTMLCanvasElement or + Blob or + ImageData or + ImageBitmap or + OffscreenCanvas) ImageBitmapSource; + +[ + ImplementedAs=ImageBitmapFactories +] partial interface Window { + // https://html.spec.whatwg.org/#windoworworkerglobalscope + [CallWith=ScriptState, RaisesException] Promise<ImageBitmap> createImageBitmap( + ImageBitmapSource imageBitmap, optional ImageBitmapOptions options = {}); + [CallWith=ScriptState, RaisesException] Promise<ImageBitmap> createImageBitmap( + ImageBitmapSource imageBitmap, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options = {}); +};
diff --git a/third_party/blink/renderer/modules/canvas/imagebitmap/worker_create_image_bitmap.idl b/third_party/blink/renderer/modules/canvas/imagebitmap/worker_create_image_bitmap.idl new file mode 100644 index 0000000..ee0f155 --- /dev/null +++ b/third_party/blink/renderer/modules/canvas/imagebitmap/worker_create_image_bitmap.idl
@@ -0,0 +1,13 @@ +// 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. + +[ + ImplementedAs=ImageBitmapFactories +] partial interface WorkerGlobalScope { + // https://html.spec.whatwg.org/#windoworworkerglobalscope + [CallWith=ScriptState, RaisesException] Promise<ImageBitmap> createImageBitmap( + ImageBitmapSource imageBitmap, optional ImageBitmapOptions options = {}); + [CallWith=ScriptState, RaisesException] Promise<ImageBitmap> createImageBitmap( + ImageBitmapSource imageBitmap, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options = {}); +};
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser.cc b/third_party/blink/renderer/modules/manifest/manifest_parser.cc index bcc6511..89bd043 100644 --- a/third_party/blink/renderer/modules/manifest/manifest_parser.cc +++ b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
@@ -1194,8 +1194,12 @@ mojom::blink::CaptureLinks ManifestParser::ParseCaptureLinks( const JSONObject* object) { - if (!base::FeatureList::IsEnabled(features::kWebAppEnableLinkCapturing)) + // Parse if either the command line flag is passed (for about:flags) or the + // runtime enabled feature is turned on (for origin trial). + if (!base::FeatureList::IsEnabled(features::kWebAppEnableLinkCapturing) && + !RuntimeEnabledFeatures::WebAppLinkCapturingEnabled()) { return mojom::blink::CaptureLinks::kUndefined; + } String capture_links_string; if (object->GetString("capture_links", &capture_links_string)) {
diff --git a/third_party/blink/renderer/modules/shapedetection/DEPS b/third_party/blink/renderer/modules/shapedetection/DEPS index cf22ab4a..11c67f0 100644 --- a/third_party/blink/renderer/modules/shapedetection/DEPS +++ b/third_party/blink/renderer/modules/shapedetection/DEPS
@@ -3,9 +3,10 @@ "+services/service_manager/public/cpp", "+skia/public/mojom/bitmap.mojom-blink.h", "+skia/public/mojom/bitmap.mojom-blink-forward.h", + "+third_party/blink/renderer/bindings/modules/v8/v8_point_2d.h", "-third_party/blink/renderer/modules", "+third_party/blink/renderer/modules/canvas/canvas2d", - "+third_party/blink/renderer/bindings/modules/v8/v8_point_2d.h", + "+third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_source_union.h", "+third_party/blink/renderer/modules/modules_export.h", "+third_party/blink/renderer/modules/shapedetection", "+third_party/skia/include/core/SkImage.h",
diff --git a/third_party/blink/renderer/modules/shapedetection/shape_detector.h b/third_party/blink/renderer/modules/shapedetection/shape_detector.h index f1ed766..181b95b 100644 --- a/third_party/blink/renderer/modules/shapedetection/shape_detector.h +++ b/third_party/blink/renderer/modules/shapedetection/shape_detector.h
@@ -8,8 +8,8 @@ #include "skia/public/mojom/bitmap.mojom-blink-forward.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" -#include "third_party/blink/renderer/core/frame/window_or_worker_global_scope.h" #include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h" +#include "third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_source_union.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" #include "third_party/skia/include/core/SkBitmap.h"
diff --git a/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/third_party/blink/renderer/modules/webcodecs/BUILD.gn index d0dcc6c..14ff11a 100644 --- a/third_party/blink/renderer/modules/webcodecs/BUILD.gn +++ b/third_party/blink/renderer/modules/webcodecs/BUILD.gn
@@ -64,6 +64,7 @@ "//media/mojo:buildflags", "//media/mojo/clients", "//media/mojo/mojom", + "//third_party/blink/renderer/modules/canvas", "//third_party/libyuv:libyuv", "//third_party/opus", ]
diff --git a/third_party/blink/renderer/modules/webcodecs/video_frame.cc b/third_party/blink/renderer/modules/webcodecs/video_frame.cc index 60d4353..30618b66 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_frame.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_frame.cc
@@ -25,9 +25,9 @@ #include "third_party/blink/renderer/bindings/modules/v8/v8_video_pixel_format.h" #include "third_party/blink/renderer/core/html/canvas/image_data.h" #include "third_party/blink/renderer/core/imagebitmap/image_bitmap.h" -#include "third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h" #include "third_party/blink/renderer/core/inspector/console_message.h" #include "third_party/blink/renderer/core/typed_arrays/dom_array_piece.h" +#include "third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.h" #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h" #include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h" #include "third_party/blink/renderer/platform/graphics/image.h"
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn index 03de660e0..bb61b99cd 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -1252,6 +1252,7 @@ "mojo/heap_mojo_associated_receiver.h", "mojo/heap_mojo_associated_receiver_set.h", "mojo/heap_mojo_associated_remote.h", + "mojo/heap_mojo_associated_remote_set.h", "mojo/heap_mojo_receiver.h", "mojo/heap_mojo_receiver_set.h", "mojo/heap_mojo_remote.h", @@ -2082,6 +2083,7 @@ "mojo/big_string_mojom_traits_test.cc", "mojo/heap_mojo_associated_receiver_set_test.cc", "mojo/heap_mojo_associated_receiver_test.cc", + "mojo/heap_mojo_associated_remote_set_test.cc", "mojo/heap_mojo_associated_remote_test.cc", "mojo/heap_mojo_receiver_set_test.cc", "mojo/heap_mojo_receiver_test.cc",
diff --git a/third_party/blink/renderer/platform/loader/child_url_loader_factory_bundle.cc b/third_party/blink/renderer/platform/loader/child_url_loader_factory_bundle.cc index 0f8fa77..063bfb8 100644 --- a/third_party/blink/renderer/platform/loader/child_url_loader_factory_bundle.cc +++ b/third_party/blink/renderer/platform/loader/child_url_loader_factory_bundle.cc
@@ -287,14 +287,6 @@ // special prefetch handling. // TODO(horo): Move this routing logic to network service, when we will have // the special prefetch handling in network service. - if ((request.resource_type == - static_cast<int>(blink::mojom::ResourceType::kPrefetch)) && - prefetch_loader_factory_) { - prefetch_loader_factory_->CreateLoaderAndStart( - std::move(loader), routing_id, request_id, options, request, - std::move(client), traffic_annotation); - return; - } if ((request.load_flags & net::LOAD_PREFETCH) && prefetch_loader_factory_) { // This is no-state prefetch (see // WebURLRequest::GetLoadFlagsForWebUrlRequest).
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc index 358686d..7950a66 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc
@@ -8,6 +8,7 @@ #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/system/data_pipe.h" +#include "net/base/load_flags.h" #include "net/base/request_priority.h" #include "net/http/http_request_headers.h" #include "net/http/http_util.h" @@ -324,18 +325,16 @@ src.GetWebBundleTokenParams()->CloneHandle())); } - mojom::ResourceType resource_type = - RequestContextToResourceType(src.GetRequestContext()); - // TODO(kinuko): Deprecate this. - dest->resource_type = static_cast<int>(resource_type); + dest->resource_type = + static_cast<int>(RequestContextToResourceType(src.GetRequestContext())); - if (resource_type == mojom::ResourceType::kXhr && + if (src.IsFetchLikeAPI() && (dest->url.has_username() || dest->url.has_password())) { dest->do_not_prompt_for_login = true; } - if (resource_type == mojom::ResourceType::kPrefetch || - resource_type == mojom::ResourceType::kFavicon) { + if (src.GetRequestContext() == mojom::blink::RequestContextType::PREFETCH || + src.IsFavicon()) { dest->do_not_prompt_for_login = true; } @@ -378,11 +377,14 @@ DCHECK_NE(dest->method, net::HttpRequestHeaders::kHeadMethod); } - if (resource_type == mojom::ResourceType::kStylesheet) { + network::mojom::RequestDestination request_destination = + src.GetRequestDestination(); + if (request_destination == network::mojom::RequestDestination::kStyle || + request_destination == network::mojom::RequestDestination::kXslt) { dest->headers.SetHeader(net::HttpRequestHeaders::kAccept, kStylesheetAcceptHeader); - } else if (resource_type == mojom::ResourceType::kImage || - resource_type == mojom::ResourceType::kFavicon) { + } else if (request_destination == + network::mojom::RequestDestination::kImage) { dest->headers.SetHeaderIfMissing(net::HttpRequestHeaders::kAccept, kImageAcceptHeader); } else {
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h index 2bf75f1f..80bb913 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h
@@ -7,6 +7,7 @@ #include <utility> +#include "base/callback.h" #include "mojo/public/cpp/bindings/associated_receiver_set.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" @@ -43,6 +44,11 @@ const HeapMojoAssociatedReceiverSet&) = delete; // Methods to redirect to mojo::AssociatedReceiverSet: + void set_disconnect_handler(base::RepeatingClosure handler) { + wrapper_->associated_receiver_set().set_disconnect_handler( + std::move(handler)); + } + mojo::ReceiverId Add( mojo::PendingAssociatedReceiver<Interface> associated_receiver, scoped_refptr<base::SequencedTaskRunner> task_runner) {
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h new file mode 100644 index 0000000..6ab5368 --- /dev/null +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h
@@ -0,0 +1,119 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_HEAP_MOJO_ASSOCIATED_REMOTE_SET_H_ +#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_HEAP_MOJO_ASSOCIATED_REMOTE_SET_H_ + +#include <utility> + +#include "mojo/public/cpp/bindings/remote_set.h" +#include "third_party/blink/renderer/platform/context_lifecycle_observer.h" +#include "third_party/blink/renderer/platform/heap/heap.h" +#include "third_party/blink/renderer/platform/mojo/features.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" +#include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" + +namespace blink { + +// HeapMojoAssociatedRemoteSet is a wrapper for mojo::AssociatedRemoteSet to be +// owned by a garbage-collected object. Blink is expected to use +// HeapMojoAssociatedRemoteSet by default. HeapMojoAssociatedRemoteSet must be +// associated with an ExecutionContext. It resets the mojo connection when the +// ExecutionContext is detached. +template <typename Interface, + HeapMojoWrapperMode Mode = HeapMojoWrapperMode::kWithContextObserver> +class HeapMojoAssociatedRemoteSet { + DISALLOW_NEW(); + + public: + using DisconnectHandler = + typename mojo::AssociatedRemoteSet<Interface>::DisconnectHandler; + using Iterator = typename mojo::AssociatedRemoteSet<Interface>::Iterator; + + explicit HeapMojoAssociatedRemoteSet(ContextLifecycleNotifier* notifier) + : wrapper_(MakeGarbageCollected<Wrapper>(notifier)) {} + + HeapMojoAssociatedRemoteSet(const HeapMojoAssociatedRemoteSet&) = delete; + HeapMojoAssociatedRemoteSet& operator=(const HeapMojoAssociatedRemoteSet&) = + delete; + HeapMojoAssociatedRemoteSet(HeapMojoAssociatedRemoteSet&&) = default; + HeapMojoAssociatedRemoteSet& operator=(HeapMojoAssociatedRemoteSet&&) = + default; + + // Methods to redirect to mojo::AssociatedRemoteSet: + mojo::RemoteSetElementId Add( + mojo::PendingAssociatedRemote<Interface> associated_remote, + scoped_refptr<base::SequencedTaskRunner> task_runner) { + DCHECK(task_runner); + return wrapper_->associated_remote_set().Add(std::move(associated_remote), + task_runner); + } + + void Remove(mojo::RemoteSetElementId id) { + wrapper_->associated_remote_set().Remove(id); + } + + bool Contains(mojo::RemoteSetElementId id) { + return wrapper_->associated_remote_set().Contains(id); + } + + void set_disconnect_handler(DisconnectHandler handler) { + wrapper_->associated_remote_set().set_disconnect_handler( + std::move(handler)); + } + + void Clear() { wrapper_->associated_remote_set().Clear(); } + + bool empty() const { return wrapper_->associated_remote_set().empty(); } + size_t size() const { return wrapper_->associated_remote_set().size(); } + + Iterator begin() { return wrapper_->associated_remote_set().begin(); } + Iterator begin() const { return wrapper_->associated_remote_set().begin(); } + Iterator end() { return wrapper_->associated_remote_set().end(); } + Iterator end() const { return wrapper_->associated_remote_set().end(); } + + void Trace(Visitor* visitor) const { visitor->Trace(wrapper_); } + + private: + FRIEND_TEST_ALL_PREFIXES(HeapMojoAssociatedRemoteSetGCWithContextObserverTest, + NoClearOnConservativeGC); + + // Garbage collected wrapper class to add a prefinalizer. + class Wrapper final : public GarbageCollected<Wrapper>, + public ContextLifecycleObserver { + USING_PRE_FINALIZER(Wrapper, Dispose); + + public: + explicit Wrapper(ContextLifecycleNotifier* notifier) { + SetContextLifecycleNotifier(notifier); + } + + void Trace(Visitor* visitor) const override { + ContextLifecycleObserver::Trace(visitor); + } + + void Dispose() { associated_remote_set_.Clear(); } + + mojo::AssociatedRemoteSet<Interface>& associated_remote_set() { + return associated_remote_set_; + } + + // ContextLifecycleObserver methods + void ContextDestroyed() override { + if (Mode == HeapMojoWrapperMode::kWithContextObserver || + (Mode == HeapMojoWrapperMode::kWithoutContextObserver && + base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + associated_remote_set_.Clear(); + } + + private: + mojo::AssociatedRemoteSet<Interface> associated_remote_set_; + }; + + Member<Wrapper> wrapper_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_HEAP_MOJO_ASSOCIATED_REMOTE_SET_H_
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set_test.cc new file mode 100644 index 0000000..300b7bec --- /dev/null +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set_test.cc
@@ -0,0 +1,214 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h" + +#include <utility> + +#include <string> +#include "base/macros.h" +#include "base/test/null_task_runner.h" +#include "mojo/public/cpp/bindings/pending_associated_remote.h" +#include "mojo/public/cpp/bindings/remote_set.h" +#include "mojo/public/interfaces/bindings/tests/sample_service.mojom-blink.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/renderer/platform/context_lifecycle_notifier.h" +#include "third_party/blink/renderer/platform/heap/heap_test_utilities.h" +#include "third_party/blink/renderer/platform/heap/persistent.h" +#include "third_party/blink/renderer/platform/heap_observer_set.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" +#include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" +#include "third_party/blink/renderer/platform/testing/mock_context_lifecycle_notifier.h" + +namespace blink { + +namespace { + +template <HeapMojoWrapperMode Mode> +class HeapMojoAssociatedRemoteSetGCBaseTest; + +template <HeapMojoWrapperMode Mode> +class GCOwner : public GarbageCollected<GCOwner<Mode>> { + public: + explicit GCOwner(MockContextLifecycleNotifier* context, + HeapMojoAssociatedRemoteSetGCBaseTest<Mode>* test) + : remote_set_(context), test_(test) { + test_->set_is_owner_alive(true); + } + void Dispose() { test_->set_is_owner_alive(false); } + void Trace(Visitor* visitor) const { visitor->Trace(remote_set_); } + + HeapMojoAssociatedRemoteSet<sample::blink::Service, Mode>& + associated_remote_set() { + return remote_set_; + } + + private: + HeapMojoAssociatedRemoteSet<sample::blink::Service, Mode> remote_set_; + HeapMojoAssociatedRemoteSetGCBaseTest<Mode>* test_; +}; + +template <HeapMojoWrapperMode Mode> +class HeapMojoAssociatedRemoteSetGCBaseTest : public TestSupportingGC { + public: + MockContextLifecycleNotifier* context() { return context_; } + scoped_refptr<base::NullTaskRunner> task_runner() { + return null_task_runner_; + } + GCOwner<Mode>* owner() { return owner_; } + void set_is_owner_alive(bool alive) { is_owner_alive_ = alive; } + + void ClearOwner() { owner_ = nullptr; } + + protected: + void SetUp() override { + context_ = MakeGarbageCollected<MockContextLifecycleNotifier>(); + owner_ = MakeGarbageCollected<GCOwner<Mode>>(context(), this); + } + void TearDown() override { + owner_ = nullptr; + PreciselyCollectGarbage(); + } + + Persistent<MockContextLifecycleNotifier> context_; + Persistent<GCOwner<Mode>> owner_; + bool is_owner_alive_ = false; + scoped_refptr<base::NullTaskRunner> null_task_runner_ = + base::MakeRefCounted<base::NullTaskRunner>(); +}; + +} // namespace + +class HeapMojoAssociatedRemoteSetGCWithContextObserverTest + : public HeapMojoAssociatedRemoteSetGCBaseTest< + HeapMojoWrapperMode::kWithContextObserver> {}; +class HeapMojoAssociatedRemoteSetGCWithoutContextObserverTest + : public HeapMojoAssociatedRemoteSetGCBaseTest< + HeapMojoWrapperMode::kForceWithoutContextObserver> {}; + +// GC the HeapMojoAssociatedRemoteSet with context observer and verify that the +// remote is no longer part of the set, and that the service was deleted. +TEST_F(HeapMojoAssociatedRemoteSetGCWithContextObserverTest, RemovesRemote) { + auto& remote_set = owner()->associated_remote_set(); + mojo::PendingAssociatedRemote<sample::blink::Service> remote; + ignore_result(remote.InitWithNewEndpointAndPassReceiver()); + + mojo::RemoteSetElementId rid = + remote_set.Add(std::move(remote), task_runner()); + + EXPECT_TRUE(remote_set.Contains(rid)); + + remote_set.Remove(rid); + + EXPECT_FALSE(remote_set.Contains(rid)); +} + +// Check that the wrapper does not outlive the owner when ConservativeGC finds +// the wrapper. +TEST_F(HeapMojoAssociatedRemoteSetGCWithContextObserverTest, + NoClearOnConservativeGC) { + auto* wrapper = owner_->associated_remote_set().wrapper_.Get(); + + mojo::PendingAssociatedRemote<sample::blink::Service> remote; + ignore_result(remote.InitWithNewEndpointAndPassReceiver()); + + mojo::RemoteSetElementId rid = + owner()->associated_remote_set().Add(std::move(remote), task_runner()); + EXPECT_TRUE(wrapper->associated_remote_set().Contains(rid)); + + ClearOwner(); + EXPECT_TRUE(is_owner_alive_); + + ConservativelyCollectGarbage(); + + EXPECT_TRUE(wrapper->associated_remote_set().Contains(rid)); + EXPECT_TRUE(is_owner_alive_); +} + +// GC the HeapMojoAssociatedRemoteSet without context observer and verify that +// the remote is no longer part of the set, and that the service was deleted. +TEST_F(HeapMojoAssociatedRemoteSetGCWithoutContextObserverTest, RemovesRemote) { + auto& remote_set = owner()->associated_remote_set(); + mojo::PendingAssociatedRemote<sample::blink::Service> remote; + ignore_result(remote.InitWithNewEndpointAndPassReceiver()); + + mojo::RemoteSetElementId rid = + remote_set.Add(std::move(remote), task_runner()); + EXPECT_TRUE(remote_set.Contains(rid)); + + remote_set.Remove(rid); + + EXPECT_FALSE(remote_set.Contains(rid)); +} + +// GC the HeapMojoAssociatedRemoteSet with context observer and verify that the +// remote is no longer part of the set, and that the service was deleted. +TEST_F(HeapMojoAssociatedRemoteSetGCWithContextObserverTest, + ClearLeavesSetEmpty) { + auto& remote_set = owner()->associated_remote_set(); + mojo::PendingAssociatedRemote<sample::blink::Service> remote; + ignore_result(remote.InitWithNewEndpointAndPassReceiver()); + + mojo::RemoteSetElementId rid = + remote_set.Add(std::move(remote), task_runner()); + EXPECT_TRUE(remote_set.Contains(rid)); + + remote_set.Clear(); + + EXPECT_FALSE(remote_set.Contains(rid)); +} + +// GC the HeapMojoAssociatedRemoteSet without context observer and verify that +// the remote is no longer part of the set, and that the service was deleted. +TEST_F(HeapMojoAssociatedRemoteSetGCWithoutContextObserverTest, + ClearLeavesSetEmpty) { + auto& remote_set = owner()->associated_remote_set(); + mojo::PendingAssociatedRemote<sample::blink::Service> remote; + ignore_result(remote.InitWithNewEndpointAndPassReceiver()); + + mojo::RemoteSetElementId rid = + remote_set.Add(std::move(remote), task_runner()); + EXPECT_TRUE(remote_set.Contains(rid)); + + remote_set.Clear(); + + EXPECT_FALSE(remote_set.Contains(rid)); +} + +// Add several remote and confirm that remote_set holds properly. +TEST_F(HeapMojoAssociatedRemoteSetGCWithContextObserverTest, + AddSeveralRemoteSet) { + auto& remote_set = owner()->associated_remote_set(); + + EXPECT_TRUE(remote_set.empty()); + EXPECT_EQ(remote_set.size(), 0u); + + mojo::PendingAssociatedRemote<sample::blink::Service> remote_1; + ignore_result(remote_1.InitWithNewEndpointAndPassReceiver()); + + mojo::RemoteSetElementId rid_1 = + remote_set.Add(std::move(remote_1), task_runner()); + EXPECT_TRUE(remote_set.Contains(rid_1)); + EXPECT_FALSE(remote_set.empty()); + EXPECT_EQ(remote_set.size(), 1u); + + mojo::PendingAssociatedRemote<sample::blink::Service> remote_2; + ignore_result(remote_2.InitWithNewEndpointAndPassReceiver()); + + mojo::RemoteSetElementId rid_2 = + remote_set.Add(std::move(remote_2), task_runner()); + EXPECT_TRUE(remote_set.Contains(rid_1)); + EXPECT_TRUE(remote_set.Contains(rid_2)); + EXPECT_FALSE(remote_set.empty()); + EXPECT_EQ(remote_set.size(), 2u); + + remote_set.Clear(); + + EXPECT_FALSE(remote_set.Contains(rid_1)); + EXPECT_FALSE(remote_set.Contains(rid_2)); + EXPECT_TRUE(remote_set.empty()); + EXPECT_EQ(remote_set.size(), 0u); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index a76f001..9560ef3 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -2123,6 +2123,9 @@ status: "experimental", }, { + name: "WebAppLinkCapturing", + }, + { name: "WebAppManifestDisplayOverride", }, {
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng index ae78aa2..4298cb40 100644 --- a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng +++ b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
@@ -393,6 +393,11 @@ ### external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/ crbug.com/886592 external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-margin-002.html [ Failure ] +### external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/ +crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/descriptor-pad.html [ Failure ] +crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/descriptor-range.html [ Failure ] +crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/system-extends.html [ Failure ] + ### external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/ crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html [ Failure ] crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html [ Failure ] @@ -526,6 +531,28 @@ ### virtual/plz-dedicated-worker/external/wpt/service-workers/service-worker/ crbug.com/591099 virtual/plz-dedicated-worker/external/wpt/service-workers/service-worker/registration-updateviacache.https.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/cjk-decimal/css3-counter-styles-001.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/cjk-decimal/css3-counter-styles-004.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/hebrew/css3-counter-styles-016.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/hiragana/css3-counter-styles-030.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/hiragana/css3-counter-styles-031.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/hiragana-iroha/css3-counter-styles-033.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/hiragana-iroha/css3-counter-styles-034.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/japanese-formal/css3-counter-styles-049.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/japanese-informal/css3-counter-styles-044.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/katakana/css3-counter-styles-036.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/katakana/css3-counter-styles-037.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/katakana/css3-counter-styles-038.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/katakana-iroha/css3-counter-styles-039.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/katakana-iroha/css3-counter-styles-040.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/lower-roman/css3-counter-styles-019.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/lower-roman/css3-counter-styles-020.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/lower-roman/css3-counter-styles-020a.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/lower-roman/css3-counter-styles-020b.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/upper-roman/css3-counter-styles-023.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/upper-roman/css3-counter-styles-024.html [ Failure ] +crbug.com/591099 external/wpt/css/css-counter-styles/upper-roman/css3-counter-styles-024a.html [ Failure ] + crbug.com/591099 external/wpt/css/css-tables/absolute-tables-002.html [ Failure ] crbug.com/591099 external/wpt/css/css-tables/absolute-tables-007.html [ Failure ] crbug.com/591099 external/wpt/css/css-tables/absolute-tables-011.tentative.html [ Failure ] @@ -583,6 +610,7 @@ crbug.com/987000 external/wpt/css/css-flexbox/flex-aspect-ratio-img-column-012.html [ Failure ] crbug.com/987000 external/wpt/css/css-flexbox/flex-aspect-ratio-img-column-015.html [ Failure ] crbug.com/987000 external/wpt/css/css-flexbox/svg-root-as-flex-item-002.html [ Failure ] +crbug.com/591099 external/wpt/css/css-flexbox/table-as-item-percent-width-cell-001.html [ Failure ] # These would need a rebaseline back from LayoutNGBlockFlow to LayoutBlockFlow crbug.com/864567 paint/float/float-under-inline-self-painting-change.html [ Failure ] @@ -760,6 +788,7 @@ ### Pass in Legacy, fail in NG crbug.com/958381 external/wpt/css/css-tables/visibility-collapse-rowspan-005.html [ Pass ] +crbug.com/958381 fast/table/large-col-span-crash.html [ Pass ] crbug.com/958381 fast/table/table-all-rowspans-height-distribution-in-rows-except-overlapped.html [ Pass ] crbug.com/958381 fast/table/table-all-rowspans-height-distribution-in-rows.html [ Pass ] crbug.com/958381 fast/table/table-rowspan-height-distribution-in-rows-1.html [ Pass ] @@ -887,13 +916,6 @@ crbug.com/958381 fast/css/empty-cell-baseline.html [ Failure ] crbug.com/958381 fast/css/inline-table-first-row-empty-cell-non-auto.html [ Failure ] -# New failures after TablesNG landed, most likely rebaselined tests -crbug.com/958381 accessibility/table-column-track-merging.html [ Failure ] -crbug.com/958381 fast/table/colspanMinWidth.html [ Failure ] -crbug.com/958381 fast/table/colspanMinWidth-vertical.html [ Failure ] -crbug.com/958381 fast/table/large-col-span-crash.html [ Failure ] -crbug.com/958381 external/wpt/css/css-tables/column-track-merging.html [ Failure ] - # TablesNG end ### compositing/filters/ @@ -932,6 +954,8 @@ crbug.com/591099 virtual/stable/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html [ Failure ] ### webcodecs/ +crbug.com/591099 wpt_internal/webcodecs/annexb_decoding.any.html [ Failure ] +crbug.com/591099 wpt_internal/webcodecs/annexb_decoding.any.worker.html [ Failure ] crbug.com/591099 wpt_internal/webcodecs/basic_video_encoding.any.html [ Failure ] crbug.com/591099 wpt_internal/webcodecs/basic_video_encoding.any.worker.html [ Failure ] crbug.com/591099 wpt_internal/webcodecs/reconfiguring_encoder.any.html [ Failure ]
diff --git a/third_party/blink/web_tests/FlagExpectations/force-renderer-accessibility b/third_party/blink/web_tests/FlagExpectations/force-renderer-accessibility index 005c496..9ec5d73 100644 --- a/third_party/blink/web_tests/FlagExpectations/force-renderer-accessibility +++ b/third_party/blink/web_tests/FlagExpectations/force-renderer-accessibility
@@ -217,8 +217,8 @@ # Below tests have all been seen as Timeout, starting with Slow to see how many actual timeouts # vs. running slower with accessibility turned on. compositing/overflow/universal-accelerated-overflow-scroll.html [ Slow ] -inspector-protocol/accessibility/accessibility-nameSources-input.js [ Slow ] -inspector-protocol/accessibility/accessibility-nameSources-labelledby.js [ Slow ] +http/tests/inspector-protocol/accessibility/accessibility-nameSources-input.js [ Slow ] +http/tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby.js [ Slow ] inspector-protocol/runtime/runtime-console-basic-functions-paused.js [ Slow ] inspector-protocol/runtime/runtime-console-basic-functions.js [ Timeout ] external/wpt/selection/addRange-* [ Slow Timeout Pass ]
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests index 13da46d..291594e 100644 --- a/third_party/blink/web_tests/SlowTests +++ b/third_party/blink/web_tests/SlowTests
@@ -376,7 +376,7 @@ crbug.com/874695 http/tests/xmlhttprequest/web-apps/013.html [ Slow ] crbug.com/874695 images/image-page-injected-script-crash.html [ Slow ] crbug.com/874695 images/yuv-decode-eligible/color-profile-layer-filter.html [ Slow ] -crbug.com/874695 inspector-protocol/accessibility/accessibility-nameSources-input-buttons.js [ Slow ] +crbug.com/874695 http/tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons.js [ Slow ] crbug.com/874695 inspector-protocol/debugger/debugger-evaluate-in-worker-while-pause-in-page.js [ Slow ] crbug.com/874695 media/audio-controls-do-not-fade-out.html [ Slow ] crbug.com/874695 media/autoplay-muted.html [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 0f91324..fd7d975 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1063,6 +1063,9 @@ ### TablesNG # crbug.com/958381 +# fails because TablesNG does not coalesce columns +crbug.com/958381 accessibility/table-cells-with-colspan.html [ Failure ] +crbug.com/958381 fast/table/large-col-span-crash.html [ Failure ] # TODO fails because cell size with only input element is 18px, not 15. line-height: 0px fixes it. crbug.com/1171616 external/wpt/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children.html [ Failure ] @@ -1099,6 +1102,9 @@ crbug.com/958381 [ Mac ] virtual/layout_ng_block_frag/fragmentation/fragmented-table-cell.html [ Failure ] crbug.com/958381 [ Mac ] fragmentation/single-line-cells-paginated-with-text.html [ Failure ] +# Asan underinvalidation failure. Skip while investigating +crbug.com/958381 paint/tables/huge-table-composited-scroll-collapsed-borders.html [ Skip ] + # TablesNG ends # ====== LayoutNG-only failures until here ====== @@ -1266,9 +1272,15 @@ crbug.com/1158554 external/wpt/css/css-conditional/css-supports-042.xht [ Failure ] # @container -# These tests are only valid when the runtime flag CSSContainerQueries is -# enabled. -crbug.com/1145970 wpt_internal/css/css-conditional/container-queries/* [ Failure ] +# The container-queries/ tests are only valid when the runtime flag +# CSSContainerQueries is enabled. +# +# The css-contain/ tests are only valid when the runtime flag CSSContainSize1D +# is enabled. +# +# Both these flags are enabled in virtual/container-queries/ +crbug.com/1145970 wpt_internal/css/css-conditional/container-queries/* [ Skip ] +crbug.com/1146092 wpt_internal/css/css-contain/* [ Skip ] crbug.com/1145970 virtual/container-queries/* [ Pass ] # CSS Scrollbars @@ -1390,7 +1402,7 @@ crbug.com/731731 inspector-protocol/layers/paint-profiler-load-empty.js [ Failure Pass ] # Script let/const redeclaration errors -crbug.com/1042162 inspector-protocol/console/console-let-const-with-api.js [ Pass Failure ] +crbug.com/1042162 http/tests/inspector-protocol/console/console-let-const-with-api.js [ Pass Failure ] # Will be re-enabled and rebaselined once we remove the '--enable-file-cookies' flag. crbug.com/470482 fast/cookies/local-file-can-set-cookies.html [ Skip ] @@ -4821,7 +4833,7 @@ crbug.com/977033 http/tests/priorities/resource-load-priorities-media-preload.html [ Timeout ] # Sheriff 2019-11-26 -crbug.com/1028684 inspector-protocol/animation/animation-release.js [ Pass Failure ] +crbug.com/1028684 http/tests/inspector-protocol/animation/animation-release.js [ Pass Failure ] # Sheriff 2019-11-29 crbug.com/1019079 fast/canvas/OffscreenCanvas-placeholder-createImageBitmap.html [ Pass Failure ] @@ -5662,3 +5674,11 @@ crbug.com/1176286 [ Linux ] http/tests/devtools/service-workers/service-workers-redundant.js [ Failure Pass ] crbug.com/1175901 [ Linux ] http/tests/devtools/console/console-search-reveals-messages.js [ Failure Pass ] crbug.com/1175901 [ Linux ] http/tests/devtools/console/console-viewport-stick-to-bottom.js [ Failure Pass ] + +# The non-virtual versions of these tests time out due to syntax errors in script without import assertions enabled +crbug.com/1132413 external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test.html [ Pass Timeout ] +crbug.com/1132413 external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative.html [ Pass Timeout ] +crbug.com/1132413 external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html [ Pass Timeout ] +crbug.com/1132413 external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker.html [ Pass Timeout ] +crbug.com/1132413 external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html [ Pass Timeout ] +crbug.com/1132413 external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index 3f1c972..bf3f7bc 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -15,7 +15,7 @@ "fast/loader/invalid-module-specifier.html", "http/tests/devtools/isolated-code-cache/" ], - "args": ["--enable-features=TopLevelAwait,JSONModules"] + "args": ["--enable-features=TopLevelAwait,JSONModules", "--js-flags=--harmony-import-assertions"] }, { "prefix": "disable-accept-language-header", @@ -590,8 +590,9 @@ }, { "prefix": "container-queries", - "bases": ["wpt_internal/css/css-conditional/container-queries"], - "args": ["--enable-blink-features=CSSContainerQueries"] + "bases": ["wpt_internal/css/css-conditional/container-queries", + "wpt_internal/css/css-contain"], + "args": ["--enable-blink-features=CSSContainerQueries,CSSContainSize1D"] }, { "prefix": "appcache-origin-trial", @@ -632,12 +633,12 @@ { "prefix": "json-modules", "bases": ["external/wpt/html/semantics/scripting-1/the-script-element/json-module"], - "args": ["--enable-features=JSONModules"] + "args": ["--enable-features=JSONModules", "--js-flags=--harmony-import-assertions"] }, { "prefix": "css-modules", "bases": ["external/wpt/html/semantics/scripting-1/the-script-element/css-module"], - "args": ["--enable-blink-features=CSSModules"] + "args": ["--enable-blink-features=CSSModules", "--js-flags=--harmony-import-assertions"] }, { "prefix": "import-assertions",
diff --git a/third_party/blink/web_tests/accessibility/table-column-track-merging.html b/third_party/blink/web_tests/accessibility/table-column-track-merging.html deleted file mode 100644 index 08e43f3e..0000000 --- a/third_party/blink/web_tests/accessibility/table-column-track-merging.html +++ /dev/null
@@ -1,124 +0,0 @@ -<!doctype html> -<title>Column track merging accesibilty tests</title> -<script src='../resources/testharness.js'></script> -<script src='../resources/testharnessreport.js'></script> -<link rel="author" title="Aleks Totic" href="atotic@chromium.org" /> -<link rel="help" href="https://www.w3.org/TR/css-tables-3/#dimensioning-the-row-column-grid--step2" /> -<style> - -main table { - border: 10px solid gray; - border-spacing: 20px; -} - -main td { - width: 50px; - height:50px; - padding: 0; - background:linear-gradient(to right, yellow, orange); -} -main caption { - background: #EEE; -} -main .desc { - margin-top: 20px; - color: rgb(50,0,0); -} -main pre { - white-space: pre-wrap; - -} -</style> -<main> -<p>Checks accessibility table properties when tracks are merged. a11y part of wpt/css/css-tables/column-track-merging.html</p> - -<table id="td_auto"> -<caption>auto</caption> -<tr> - <td colspan=10></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<table id="td_auto_width" style="width:400px"> -<caption>auto 400px</caption> -<tr> - <td colspan=10></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<table id="td_fixed" style="table-layout:fixed; width: 400px"> -<caption>fixed 400px</caption> -<tr> - <td colspan=10></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<table id="col_fixed_130" style="table-layout:fixed; width: 130px"> -<col span=10> -<caption>col fixed 130px</caption> -<tr> - <td></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - -</main> -<script> - - test(function() { - assert_true(!!window.accessibilityController, "accessibilityController exists"); - }, "accessibilityController exists"); - - // a11y tests - - test(function() { - let table = accessibilityController.accessibleElementById("td_auto"); - assert_equals(table.columnCount, 2, "has merged td columns"); - let cell = table.cellForColumnAndRow(0,0); - assert_equals(cell.columnIndexRange(), "{0, 1}", "cell.columnIndexRange"); - }, "td_auto table props"); - - test(function() { - let table = accessibilityController.accessibleElementById("td_auto_width"); - assert_equals(table.columnCount, 2, "has merged td columns"); - let cell = table.cellForColumnAndRow(0,0); - assert_equals(cell.columnIndexRange(), "{0, 1}", "cell.columnIndexRange"); - }, "td_auto_width table props"); - - test(function() { - let table = accessibilityController.accessibleElementById("td_fixed"); - assert_equals(table.columnCount, 11, "has not merged td columns"); - let cell = table.cellForColumnAndRow(0,0); - assert_equals(cell.columnIndexRange(), "{0, 10}", "cell.columnIndexRange"); - }, "td_fixed table props"); - - test(function() { - let table = accessibilityController.accessibleElementById("col_fixed_130"); - assert_equals(table.columnCount, 10, "has not merged td columns"); - let cell = table.cellForColumnAndRow(0,0); - assert_equals(cell.columnIndexRange(), "{0, 1}", "cell.columnIndexRange"); - }, "col_fixed table props"); - - </script> - -</body> -</html>
diff --git a/third_party/blink/web_tests/editing/pasteboard/selectall-copy-list-with-block.html b/third_party/blink/web_tests/editing/pasteboard/selectall-copy-list-with-block.html new file mode 100644 index 0000000..12c167f --- /dev/null +++ b/third_party/blink/web_tests/editing/pasteboard/selectall-copy-list-with-block.html
@@ -0,0 +1,17 @@ +<!doctype html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<script src="../assert_selection.js"></script> +<script> +selection_test( + '<div contenteditable><ul><li><h1>abc|</h1></li></ul><div id="div1"><br></div></div>', + selection => { + selection.document.execCommand("selectAll"); + selection.document.execCommand("copy"); + var div1 = selection.document.getElementById('div1'); + selection.collapse(div1, 0); + selection.document.execCommand("paste"); + }, + '<div contenteditable><ul><li><h1>abc</h1></li></ul><div id="div1"><ul><li><h1>abc</h1></li></ul><div id="div1">|<br></div></div></div>', + 'Block element inside a list item should be copied if it is selected'); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/column-track-merging.html b/third_party/blink/web_tests/external/wpt/css/css-tables/column-track-merging.html deleted file mode 100644 index 6dba9e6..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-tables/column-track-merging.html +++ /dev/null
@@ -1,278 +0,0 @@ -<!doctype html> -<title>Column track merging</title> -<script src='/resources/testharness.js'></script> -<script src='/resources/testharnessreport.js'></script> -<script src="/resources/check-layout-th.js"></script> -<link rel="author" title="Aleks Totic" href="atotic@chromium.org" /> -<link rel="help" href="https://www.w3.org/TR/css-tables-3/#dimensioning-the-row-column-grid--step2" /> -<style> - -main table { - border: 10px solid gray; - border-spacing: 20px; -} - -main td { - width: 50px; - height:50px; - padding: 0; - background:linear-gradient(to right, yellow, orange); -} -main caption { - background: #EEE; -} -main .desc { - margin-top: 20px; - color: rgb(50,0,0); -} -main pre { - white-space: pre-wrap; - -} -</style> -<h3>Column merging investigation</h3> -<o>Empty columns is a column that has no originating cells</o> -<p><a href="https://www.w3.org/TR/css-tables-3/#dimensioning-the-row-column-grid--step2">Table standard</a> discusses this under "track merging".</p> -<ul> - <li>Do empty columns get coalesced?</li> - <li>How does this interact with table-layout:fixed, table width</li> - <li>Is there a difference between columns defined by COL, vs TD.colspan? Yes!</li> - <li>Do COLs with specified width get merged?</li> -</ul> -<p>Compatibility</p> -<li>Edge17 has a bug where width of a colspanned cell always includes cell width + width of border spacing. It should be max(cell width, border spacing)</li> -<li>Safari matches Chrome Legacy. TD-originated columns are always merged.</li> -<li>Firefox follows the standard, but has a few bugs.</li> -<main> - -<h3>TD merging</h3> - -<pre class="desc">Auto table, and TD.colspan=10 - FF/Chrome Legacy/Safari: Standard. Tracks merge. - Edge17: Tracks do not merge. Wide cell is 180px (9 * border spacing) -</pre> -<table id="td_auto" data-expected-width=180> -<caption>auto</caption> -<tr> - <td colspan=10 data-expected-width=50></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<pre class="desc">Auto table(400px), and TD.colspan=10 - FF/Chrome Legacy/Safari/Edge17: Standard. Tracks merge. Colspan cell grows because it is unconstrained. -</pre> -<table id="td_auto_width" style="width:400px" data-expected-width=400> -<caption>auto 400px</caption> -<tr> - <td colspan=10 data-expected-width=270></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<pre class="desc">Auto table(130px), and TD.colspan=10 - FF/Chrome Legacy/Safari: Standard. Tracks merge. Colspan cell shrinks to min width becuase it is unconstrained. - Edge17: Non-compliant, buggy. Wide cell too wide, narrow cell disappears. -</pre> -<table id="td_auto_width_130" style="width:130px" data-expected-width=130> -<caption>auto 130px</caption> -<tr> - <td colspan=10 data-expected-width=10><div style="width:10px"></div></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<pre class="td_fixed">Fixed(400px) table, and TD.colspan=10 - Chrome/Safari: Non-compliant. Tracks merge. Cells are the same size, fixed algo distributes extra width evenly. - Firefox: Standard. - Edge17: Standard, buggy. Wide cell too wide. Edge's bug is that it computes max width as (width + border_spacing) instead of max(width, border_spacing). -</pre> -<table id="td_fixed" style="table-layout:fixed; width: 400px" data-expected-width=400> -<caption>fixed 400px</caption> -<tr> - <td colspan=10 data-expected-width=180></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<pre class="td_fixed">Fixed(130px) table, and TD.colspan=10 - Chrome/Safari: Non-compliant.Tracks merge, cells same size. - Firefox: Standard + buggy. Table does not grow. - Edge17: Standard + buggy. Wide cell too wide. -</pre> -<table id="td_fixed" style="table-layout:fixed; width: 130px" data-expected-width=310> -<caption>fixed 130px</caption> -<tr> - <td colspan=10 data-expected-width=180></td> - <td></td> -</tr> -<tr> - <td colspan=10></td> - <td></td> -</tr> -</table> - -<h3>COL merging. Same tests with COL span=10 replacing TD</h3> - -<pre class="desc">Auto table - FF/Chrome Legacy/Safari, Edge17: Standard. wide cell is 50px, tracks do merge. -</pre> -<table id="col_auto" data-expected-width=180> -<caption>auto</caption> -<col span=10> -<tr> - <td data-expected-width=50></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - -<pre class="desc">Auto table(400px) - FF/Chrome Legacy/Safari, Edge17: Standard. Both cells grow the same because unconstrained. -</pre> -<table id="col_auto_width" style="width:400px" data-expected-width=400> -<caption>auto 400px</caption> -<col span=10> -<tr> - <td data-expected-width=160></td> - <td></td> -</tr> -<tr> - <td ></td> - <td></td> -</tr> -</table> - -<pre class="desc">Auto table(130px) - FF/Chrome Legacy/Safari, Edge17: Standard. Both cells shrink. -</pre> -<table id="col_auto_width_130" style="width:130px" data-expected-width=130> -<caption>auto 130px</caption> -<col span=10> -<tr> - <td data-expected-width=28><div style="width:10px"></div></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - -<pre class="desc">Fixed(400px) table - Chrome/Safari,Firefox: Standard. - Edge17: Buggy. Fixed cells grow to fill table. -</pre> -<table id="col_fixed" style="table-layout:fixed; width: 400px" data-expected-width=400> -<caption>fixed 400px</caption> -<col span=10> -<tr> - <td data-expected-width=50></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - -<pre class="td_fixed">Fixed(130px) table - Chrome/Safari: Standard, very buggy. Non-collapsed columns shrink to single border spacing. - Firefox: Standard. - Edge17: Non-compliant, collapses columns. -</pre> -<table id="col_fixed_130" style="table-layout:fixed; width: 130px" data-expected-width=340> -<col span=10> -<caption>fixed 130px</caption> -<tr> - <td data-expected-width=50></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - -<h3>COL merging when COL has specified width.</h3> - -<ul><li>Chrome Legacy/Edge17/Safari: non-compliant, merge COLs with specified widths. - <li>Firefox: Standard, unless COL width is 0px. Buggy, does not include border-spacing around columns.</ul> -<pre class="desc">Auto table, COL width 30px. - Chrome Legacy/Edge17/Safari: non-compliant, merge. - Firefox: Standard, buggy. does not include border-spacing around columns. -</pre> -<table id="col_auto" data-expected-width=580> -<caption>auto col 30px</caption> -<col span=10 style="width:30px"> -<tr> - <td data-expected-width=50></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - -<pre class="desc">Auto table, COL width 5%. - Chrome Legacy/Edge17/Safari: non-compliant, merge. - Firefox: Standard, buggy. does not include border-spacing around columns. -</pre> -<table id="col_auto" data-expected-width=640> -<caption>auto col 10%</caption> -<col span=5 style="width:10%"> -<tr> - <td data-expected-width=100></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - -<pre class="desc">Auto table, COL width 0px. - Everyone: merges COL -</pre> -<table id="col_auto" data-expected-width=180> -<caption>auto col 0px</caption> -<col span=10 style="width:0px"> -<tr> - <td data-expected-width=50></td> - <td></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -</table> - - -</main> -<script> - checkLayout("main table"); -</script> - - -</body> -</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test-expected.txt new file mode 100644 index 0000000..8421503 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS A static import CSS Module within a web worker should not load. +FAIL A dynamic import CSS Module within a web worker should not load. assert_unreached: Worker fired onerror unexpectedly Reached unreachable code +PASS A CSS Module within a web worker should not load. +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic-expected.txt new file mode 100644 index 0000000..13524d3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +FAIL A CSS Module should load assert_equals: CSS module import should succeed expected "rgb(255, 0, 0)" but got "rgba(0, 0, 0, 0)" +FAIL A large CSS Module should load assert_equals: CSS module import should succeed expected "rgb(255, 0, 0)" but got "rgba(0, 0, 0, 0)" +FAIL An @import CSS Module should not load, but should not throw an exception assert_equals: expected (undefined) undefined but got (string) "SyntaxError" +PASS Malformed CSS should not load +PASS CSS module without type assertion should result in a fetch error +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html index 4ca2bb70..207d553 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html
@@ -54,5 +54,18 @@ }); document.body.appendChild(iframe); }, "Malformed CSS should not load"); + + async_test(function (test) { + const iframe = document.createElement("iframe"); + iframe.src = "resources/css-module-without-assertion-iframe.html"; + iframe.onload = test.step_func_done(function () { + assert_equals(iframe.contentDocument.window_onerror, undefined); + assert_equals(iframe.contentDocument.script_onerror.type, "error"); + assert_not_equals(getComputedStyle(iframe.contentDocument.querySelector('#test')) + .backgroundColor, "rgb(255, 0, 0)", + "CSS module without type assertion should result in a fetch error"); + }); + document.body.appendChild(iframe); + }, "CSS module without type assertion should result in a fetch error"); </script> </body>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic-expected.txt new file mode 100644 index 0000000..cf4efe3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +Harness Error. harness_status.status = 1 , harness_status.message = Uncaught SyntaxError: Unexpected token ',' +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic.html new file mode 100644 index 0000000..4fbc111 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic.html
@@ -0,0 +1,22 @@ +<!doctype html> + +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> + +<body> + <script> + promise_test(async function (test) { + const css_module = await import("./resources/basic.css", { assert: { type: "css" }}); + assert_true(css_module.default instanceof CSSStyleSheet); + assert_equals(css_module.default.cssRules[0].cssText, "#test { background-color: red; }"); + }, "Load a CSS module with dynamic import()"); + + promise_test(function (test) { + return promise_rejects_js(test, TypeError, + import("./resources/basic.css"), + "Attempting to import() a CSS module without a type assertion should fail"); + }, "Ensure that loading a CSS module with dymnamic import() fails without a type assertion"); + </script> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-at-import-iframe.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-at-import-iframe.html index 86e7af7..cce9e21 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-at-import-iframe.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-at-import-iframe.html
@@ -8,7 +8,7 @@ }; </script> <script type="module"> - import v from "./bad-import.css"; + import v from "./bad-import.css" assert { type: "css" }; document.adoptedStyleSheets = [v]; </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-iframe.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-iframe.html index 3a555c3..e093d39 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-iframe.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-iframe.html
@@ -8,7 +8,7 @@ }; </script> <script type="module"> - import v from "./basic.css"; + import v from "./basic.css" assert { type: "css" }; document.adoptedStyleSheets = [v]; </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html index cc5b660..0cf11e9 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html
@@ -8,7 +8,7 @@ }; </script> <script type="module"> - import v from "./basic-large.css"; + import v from "./basic-large.css" assert { type: "css" }; document.adoptedStyleSheets = [v]; </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-without-assertion-iframe.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-without-assertion-iframe.html new file mode 100644 index 0000000..3d1be84 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-without-assertion-iframe.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<body> + <script> + window.onerror = function (errorMsg, url, lineNumber, column, errorObj) + { + document.window_onerror = errorObj.name; + return true; + }; + + function scriptErrorHandler(e) { + document.script_onerror = e; + } + </script> + <script type="module" onerror="scriptErrorHandler(event)"> + import v from "./basic.css"; + document.adoptedStyleSheets = [v]; + </script> + + <div id="test"> + I am a test div. + </div> +</body> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/malformed-iframe.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/malformed-iframe.html index 471edd6..f5c64f6 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/malformed-iframe.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/malformed-iframe.html
@@ -1,7 +1,7 @@ <!DOCTYPE html> <body> <script type="module"> - import v from "./malformed.css"; + import v from "./malformed.css" assert { type: "css" }; document.adoptedStyleSheets = [v]; </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker-dynamic-import.js b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker-dynamic-import.js index 9a3b0bb..6f6852c 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker-dynamic-import.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker-dynamic-import.js
@@ -1,3 +1,3 @@ -import("./basic.css") +import("./basic.css", { assert: { type: "css" } }) .then(() => postMessage("LOADED")) .catch(e => postMessage("NOT LOADED")); \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker.js b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker.js index 397a12c3..c97d9652 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/resources/worker.js
@@ -1,2 +1,2 @@ -import "./basic.css"; +import "./basic.css" assert { type: "css" }; postMessage("Unexpectedly loaded"); \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative-expected.txt new file mode 100644 index 0000000..3fa83c0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +Harness Error. harness_status.status = 1 , harness_status.message = Uncaught SyntaxError: Unexpected identifier +FAIL utf-8 assert_unreached: Unexpected error 'Uncaught SyntaxError: Unexpected identifier' during test Reached unreachable code +FAIL shift-jis assert_unreached: Unexpected error 'Uncaught SyntaxError: Unexpected identifier' during test Reached unreachable code +FAIL windows-1252 assert_unreached: Unexpected error 'Uncaught SyntaxError: Unexpected identifier' during test Reached unreachable code +FAIL utf-7 assert_unreached: Unexpected error 'Uncaught SyntaxError: Unexpected identifier' during test Reached unreachable code +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative.html index f71339b..6adcd716 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative.html
@@ -17,18 +17,18 @@ const t4 = async_test("utf-7"); </script> <script type="module" onerror="t1.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=utf-8"; +import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=utf-8" assert { type: "css" }; check(t1, v); </script> <script type="module" onerror="t2.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=shift-jis"; +import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=shift-jis" assert { type: "css" }; check(t2, v); </script> <script type="module" onerror="t3.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=windows-1252"; +import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=windows-1252" assert { type: "css" }; check(t3, v); </script> <script type="module" onerror="t4.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=utf-7"; +import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=utf-7" assert { type: "css" }; check(t4, v); </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt index df94598..0e811cbc 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt
@@ -1,6 +1,6 @@ This is a testharness.js-based test. -FAIL Javascript importing JSON Module should load within the context of a service worker promise_test: Unhandled rejection with value: object "TypeError: Failed to register a ServiceWorker for scope ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/') with script ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/serviceworker.js'): ServiceWorker cannot be started" -FAIL JSON Modules should load within the context of a service worker promise_test: Unhandled rejection with value: object "SecurityError: Failed to register a ServiceWorker for scope ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/') with script ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/module.json'): The script has an unsupported MIME type ('application/json')." -PASS JSON Module dynamic import should not load within the context of a service worker +FAIL Javascript importing JSON Module should load within the context of a service worker promise_test: Unhandled rejection with value: object "TypeError: Failed to register a ServiceWorker for scope ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/') with script ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/serviceworker.js'): ServiceWorker script evaluation failed" +PASS Trying to register a service worker with a top-level JSON Module should fail +FAIL JSON Module dynamic import should not load within the context of a service worker promise_test: Unhandled rejection with value: object "TypeError: Failed to register a ServiceWorker for scope ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/') with script ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/serviceworker-dynamic-import.js'): ServiceWorker script evaluation failed" Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative.html index 2e1f9d8..cc47da1 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative.html
@@ -10,11 +10,11 @@ assert_not_equals(reg.installing, undefined); }, "Javascript importing JSON Module should load within the context of a service worker"); - promise_test(async (test) => { - const reg = await navigator.serviceWorker.register('./module.json', { type: 'module' }); - test.add_cleanup(() => reg.unregister()); - assert_not_equals(reg.installing, undefined); - }, "JSON Modules should load within the context of a service worker"); + promise_test(test => { + return promise_rejects_dom(test, "SecurityError", + navigator.serviceWorker.register('./module.json', { type: 'module' }), + "Attempting to load JSON as a service worker should fail"); + }, "Trying to register a service worker with a top-level JSON Module should fail"); promise_test(async (test) => { const reg = await navigator.serviceWorker.register('./serviceworker-dynamic-import.js', { type: 'module' });
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html index 9324385..a495d4a 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html
@@ -8,7 +8,7 @@ const t = async_test(); </script> <script type="module" onerror="t.step(() => assert_unreached(event))"> -import v from "./module.json"; +import v from "./module.json" assert { type: "json" }; t.step(() => { assert_equals(typeof v, "object"); assert_array_equals(Object.keys(v), ["test"]);
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any-expected.txt index 77c1f18..cf4efe3 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any-expected.txt
@@ -1,8 +1,4 @@ This is a testharness.js-based test. -FAIL Non-object: null promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/null.json" -FAIL Non-object: true promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/true.json" -FAIL Non-object: false promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/false.json" -FAIL Non-object: string promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/string.json" -FAIL Non-object: array promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/array.json" +Harness Error. harness_status.status = 1 , harness_status.message = Uncaught SyntaxError: Unexpected token ',' Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js index dcbe60f..6d507177 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js
@@ -2,13 +2,13 @@ for (const value of [null, true, false, "string"]) { promise_test(async t => { - const result = await import(`./${value}.json`); + const result = await import(`./${value}.json`, { assert: { type: "json" } }); assert_equals(result.default, value); }, `Non-object: ${value}`); } promise_test(async t => { - const result = await import("./array.json"); + const result = await import("./array.json", { assert: { type: "json" } }); assert_array_equals(result.default, ["en", "try"]); }, "Non-object: array");
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt index 25ca5d90..8b4bc158 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt
@@ -1,8 +1,4 @@ This is a testharness.js-based test. -FAIL Non-object: null promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." -FAIL Non-object: true promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." -FAIL Non-object: false promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." -FAIL Non-object: string promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." -FAIL Non-object: array promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +Harness Error. harness_status.status = 1 , harness_status.message = Unhandled rejection: Failed to register a ServiceWorker for scope ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/does/not/exist') with script ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker.js'): ServiceWorker script evaluation failed Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt index 77c1f18..cf4efe3 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt
@@ -1,8 +1,4 @@ This is a testharness.js-based test. -FAIL Non-object: null promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/null.json" -FAIL Non-object: true promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/true.json" -FAIL Non-object: false promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/false.json" -FAIL Non-object: string promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/string.json" -FAIL Non-object: array promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/json-module/array.json" +Harness Error. harness_status.status = 1 , harness_status.message = Uncaught SyntaxError: Unexpected token ',' Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker-dynamic-import.js b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker-dynamic-import.js index 3c7d2948..9466c6fb 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker-dynamic-import.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker-dynamic-import.js
@@ -1,5 +1,5 @@ onmessage = e => { - e.waitUntil(import("./module.json") + e.waitUntil(import("./module.json", { assert: { type: "json" } }) .then(module => e.source.postMessage("LOADED")) .catch(error => e.source.postMessage("FAILED"))); }; \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker.js b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker.js index 6d71f017..3f0a4d16 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/serviceworker.js
@@ -1 +1 @@ -import './module.json'; \ No newline at end of file +import './module.json' assert { type: "json" }; \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html index 1c0360b..24a6f109 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html
@@ -19,18 +19,18 @@ const t4 = async_test("utf-7"); </script> <script type="module" onerror="t1.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=utf-8"; +import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=utf-8" assert { type: "json"}; check(t1, v); </script> <script type="module" onerror="t2.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=shift-jis"; +import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=shift-jis" assert { type: "json"}; check(t2, v); </script> <script type="module" onerror="t3.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=windows-1252"; +import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=windows-1252" assert { type: "json"}; check(t3, v); </script> <script type="module" onerror="t4.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=utf-7"; +import v from "../serve-with-content-type.py?fn=json-module/utf8.json&ct=text/json%3Bcharset=utf-7" assert { type: "json"};; check(t4, v); </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html index 78e8b1d..ff5953c 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html
@@ -19,18 +19,18 @@ const t4 = async_test("image/svg+json"); </script> <script type="module" onerror="t1.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=text/json"; +import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=text/json" assert { type: "json"}; check(t1, v); </script> <script type="module" onerror="t2.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=application/json"; +import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=application/json" assert { type: "json"}; check(t2, v); </script> <script type="module" onerror="t3.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=text/html+json"; +import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=text/html+json" assert { type: "json"}; check(t3, v); </script> <script type="module" onerror="t4.step(() => assert_unreached(event))"> -import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=image/svg+json"; +import v from "../serve-with-content-type.py?fn=json-module/module.json&ct=image/svg+json" assert { type: "json"}; check(t4, v); </script>
diff --git a/third_party/blink/web_tests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html b/third_party/blink/web_tests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html index 012dec4..36ee18f 100644 --- a/third_party/blink/web_tests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html +++ b/third_party/blink/web_tests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html
@@ -23,4 +23,5 @@ makeAsyncTest(undefined); makeAsyncTest(0); makeAsyncTest(30); +makeAsyncTest(65438); // https://crbug.com/1172621 </script>
diff --git a/third_party/blink/web_tests/fast/table/large-col-span-crash.html b/third_party/blink/web_tests/fast/table/large-col-span-crash.html index 6fc7362..b440470 100644 --- a/third_party/blink/web_tests/fast/table/large-col-span-crash.html +++ b/third_party/blink/web_tests/fast/table/large-col-span-crash.html
@@ -10,7 +10,7 @@ <script src="../../resources/testharness.js"></script> <script src="../../resources/testharnessreport.js"></script> <script src="../../resources/check-layout-th.js"></script> -<table data-expected-width=2004 data-expected-height=100> +<table data-expected-width=100 data-expected-height=100> <col span="4294967295"> <col> </table>
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png deleted file mode 100644 index e4d4e771..0000000 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png deleted file mode 100644 index 48215a2..0000000 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-aria-1.1-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-aria-1.1-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-aria-1.1-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-aria-1.1-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-aria-1.1.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-aria-1.1.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-aria-1.1.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-aria-1.1.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getChildAXNodes-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getChildAXNodes-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getChildAXNodes-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getChildAXNodes-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getChildAXNodes.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getChildAXNodes.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getChildAXNodes.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getChildAXNodes.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getFullAXTree.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getFullAXTree.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getNodeWithNoAXNode.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getRelationships-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getRelationships-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getRelationships-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getRelationships-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getRelationships.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getRelationships.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getRelationships.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getRelationships.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-getTreeWithNoAXNode.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodes.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodes.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodesModal.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-modal-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-modal-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-modal-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-modal-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-modal.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-modal.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-modal.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-modal.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-buttons-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-buttons-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-buttons-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-buttons-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-buttons.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-buttons.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-buttons.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-buttons.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-img-figure.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input-buttons.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-input.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-input.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-labelledby.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-summary.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-summary.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-summary.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-summary.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-nameSources-visiblity.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree-errors-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree-errors-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree-errors-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree-errors-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree-errors.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree-errors.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree-errors.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree-errors.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/accessibility-query-axtree.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-query-axtree.js
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/getFullAXTree-maxdepth-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-maxdepth-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/getFullAXTree-maxdepth-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-maxdepth-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/accessibility/getFullAXTree-maxdepth.js b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-maxdepth.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/accessibility/getFullAXTree-maxdepth.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/getFullAXTree-maxdepth.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-agent-resume-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-agent-resume-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-agent-resume-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-agent-resume-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-agent-resume.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-agent-resume.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-agent-resume.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-agent-resume.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-create-start-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-create-start-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-create-start-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-create-start-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-create-start.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-create-start.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-create-start.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-create-start.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-css-replay-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-css-replay-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-css-replay-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-css-replay-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-css-replay.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-css-replay.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-css-replay.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-css-replay.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-empty-transition-cancel-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-empty-transition-cancel-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-empty-transition-cancel-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-empty-transition-cancel-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-empty-transition-cancel.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-empty-transition-cancel.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-empty-transition-cancel.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-empty-transition-cancel.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-keyframe-null-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-keyframe-null-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-keyframe-null-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-keyframe-null-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-keyframe-null.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-keyframe-null.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-keyframe-null.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-keyframe-null.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-multiple-frames-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-multiple-frames-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-multiple-frames-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-multiple-frames-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-multiple-frames.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-multiple-frames.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-multiple-frames.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-multiple-frames.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-pause-close-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-close-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-pause-close-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-close-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-pause-close.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-close.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-pause-close.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-close.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-pause-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-pause-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-pause-infinite-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-infinite-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-pause-infinite-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-infinite-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-pause-infinite.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-infinite.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-pause-infinite.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause-infinite.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-pause.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-pause.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-pause.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-paused-css-animation-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-paused-css-animation-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-paused-css-animation-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-paused-css-animation-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-paused-css-animation.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-paused-css-animation.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-paused-css-animation.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-paused-css-animation.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-release-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-release-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-release-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-release-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-release.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-release.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-release.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-release.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-resolve-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-resolve-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-resolve-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-resolve-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-resolve.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-resolve.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-resolve.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-resolve.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-seek-past-end-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-seek-past-end-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-seek-past-end-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-seek-past-end-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-seek-past-end.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-seek-past-end.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-seek-past-end.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-seek-past-end.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-start-cancel-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-start-cancel-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-start-cancel-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-start-cancel-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-start-cancel.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-start-cancel.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-start-cancel.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-start-cancel.js
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-zero-duration-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-zero-duration-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-zero-duration-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-zero-duration-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/animation/animation-zero-duration.js b/third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-zero-duration.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/animation/animation-zero-duration.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/animation/animation-zero-duration.js
diff --git a/third_party/blink/web_tests/inspector-protocol/browser/browser-version-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/browser/browser-version-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/browser/browser-version-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/browser/browser-version-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/browser/browser-version.js b/third_party/blink/web_tests/http/tests/inspector-protocol/browser/browser-version.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/browser/browser-version.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/browser/browser-version.js
diff --git a/third_party/blink/web_tests/inspector-protocol/console/console-dom-mutation-violations-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/console/console-dom-mutation-violations-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/console/console-dom-mutation-violations-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/console/console-dom-mutation-violations-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/console/console-dom-mutation-violations.js b/third_party/blink/web_tests/http/tests/inspector-protocol/console/console-dom-mutation-violations.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/console/console-dom-mutation-violations.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/console/console-dom-mutation-violations.js
diff --git a/third_party/blink/web_tests/inspector-protocol/console/console-let-const-with-api-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/console/console-let-const-with-api-expected.txt similarity index 98% rename from third_party/blink/web_tests/inspector-protocol/console/console-let-const-with-api-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/console/console-let-const-with-api-expected.txt index db5ebb5..06f4097 100644 --- a/third_party/blink/web_tests/inspector-protocol/console/console-let-const-with-api-expected.txt +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/console/console-let-const-with-api-expected.txt
@@ -2,7 +2,6 @@ first 'let a = 1;' result: wasThrown = false second 'let a = 1;' result: wasThrown = true exception message: Uncaught SyntaxError: Identifier 'a' has already been declared - at <anonymous>:1:1 {"result":{"type":"number","value":42,"description":"42"}} function $(selector, [startNode]) { [Command Line API] } function $$(selector, [startNode]) { [Command Line API] }
diff --git a/third_party/blink/web_tests/inspector-protocol/console/console-let-const-with-api.js b/third_party/blink/web_tests/http/tests/inspector-protocol/console/console-let-const-with-api.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/console/console-let-const-with-api.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/console/console-let-const-with-api.js
diff --git a/third_party/blink/web_tests/inspector-protocol/console/console-memory-setter-in-strict-mode-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/console/console-memory-setter-in-strict-mode-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/console/console-memory-setter-in-strict-mode-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/console/console-memory-setter-in-strict-mode-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/console/console-memory-setter-in-strict-mode.js b/third_party/blink/web_tests/http/tests/inspector-protocol/console/console-memory-setter-in-strict-mode.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/console/console-memory-setter-in-strict-mode.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/console/console-memory-setter-in-strict-mode.js
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profile-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profile-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profile-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profile-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profile.js b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profile.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profile.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profile.js
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash.js b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/console-profileEnd-parameterless-crash.js
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/enable-disable-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/enable-disable-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/enable-disable-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/enable-disable-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/enable-disable.js b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/enable-disable.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/enable-disable.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/enable-disable.js
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling.js b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling.js
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile.js b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/record-cpu-profile.js
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start-expected.txt similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start-expected.txt rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start-expected.txt
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start.js b/third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/cpu-profiler/stop-without-preceeding-start.js
diff --git a/third_party/blink/web_tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodes.js b/third_party/blink/web_tests/http/tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodes.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodes.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodes.js
diff --git a/third_party/blink/web_tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodesFromList.js b/third_party/blink/web_tests/http/tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodesFromList.js similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodesFromList.js rename to third_party/blink/web_tests/http/tests/inspector-protocol/resources/accessibility-dumpAccessibilityNodesFromList.js
diff --git a/third_party/blink/web_tests/inspector-protocol/resources/test-page-trigger-animation.html b/third_party/blink/web_tests/http/tests/inspector-protocol/resources/test-page-trigger-animation.html similarity index 100% rename from third_party/blink/web_tests/inspector-protocol/resources/test-page-trigger-animation.html rename to third_party/blink/web_tests/http/tests/inspector-protocol/resources/test-page-trigger-animation.html
diff --git a/third_party/blink/web_tests/http/tests/loading/module-script-wrong-mime-expected.txt b/third_party/blink/web_tests/http/tests/loading/module-script-wrong-mime-expected.txt index f69eaa4f..760a7df 100644 --- a/third_party/blink/web_tests/http/tests/loading/module-script-wrong-mime-expected.txt +++ b/third_party/blink/web_tests/http/tests/loading/module-script-wrong-mime-expected.txt
@@ -1,7 +1,7 @@ main frame - DidStartNavigation main frame - ReadyToCommitNavigation main frame - didCommitLoadForFrame -CONSOLE ERROR: Failed to load module script: The server responded with a non-JavaScript, CSS MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec. +CONSOLE ERROR: Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec. main frame - didFinishDocumentLoadForFrame main frame - didHandleOnloadEventsForFrame main frame - didFinishLoadForFrame
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png index 91f25c2..a4a09724 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png index 05f2896..b5eb3d5 100644 --- a/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png +++ b/third_party/blink/web_tests/platform/linux/fast/table/colspanMinWidth-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug17826-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug17826-expected.png index a47cc3cd..26238bd 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug17826-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug17826-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug47163-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug47163-expected.png index 90fc151..54aa47f 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug47163-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug47163-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png index 2bd0151d..b8e6363d 100644 --- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png +++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png deleted file mode 100644 index 91f25c2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png deleted file mode 100644 index 05f2896..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-expected.png deleted file mode 100644 index b5353a78..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 3d73313..2cf6cd1 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 67e0314..cd2bcef 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/css-tables/html5-table-formatting-1-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/css-tables/html5-table-formatting-1-expected.txt deleted file mode 100644 index 8910d66..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/css-tables/html5-table-formatting-1-expected.txt +++ /dev/null
@@ -1,9 +0,0 @@ -This is a testharness.js-based test. -PASS Empty tables can still get a lsyout -FAIL Empty tables do not take table-columns into account assert_equals: expected 50 but got 200 -FAIL Empty tables do not take table-rows into account assert_equals: expected 50 but got 100 -PASS Table-columns are taken into account after missing cells are generated (empty line) -PASS Table-columns are taken into account after missing cells are generated (partially empty line) -PASS Table-columns are taken into account after missing cells are generated (non-empty line) -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/table/colspanMinWidth-expected.png deleted file mode 100644 index 2c4cd186..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/table/colspanMinWidth-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/table/colspanMinWidth-vertical-expected.png deleted file mode 100644 index 0518096..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/table/colspanMinWidth-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla_expected_failures/bugs/bug47163-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla_expected_failures/bugs/bug47163-expected.png deleted file mode 100644 index b23aafb..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla_expected_failures/bugs/bug47163-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/select/select-inpage-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/select/select-inpage-appearance-basic-expected.png deleted file mode 100644 index 15aace7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/fast/forms/color-scheme/select/select-inpage-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png index 75953796..ec92af5 100644 --- a/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png index e520e8f..c1861e81 100644 --- a/third_party/blink/web_tests/platform/mac/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-expected.png index 0aacb4b..2c4cd186 100644 --- a/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-expected.png +++ b/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-vertical-expected.png index aabc7f20a..0518096 100644 --- a/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-vertical-expected.png +++ b/third_party/blink/web_tests/platform/mac/fast/table/colspanMinWidth-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1302-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1302-expected.png index 44cde41..efa6ca8 100644 --- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1302-expected.png +++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1302-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug17826-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug17826-expected.png index bdbf39c..ed37f5f 100644 --- a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug17826-expected.png +++ b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug17826-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug47163-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug47163-expected.png index 15d23402..b23aafb 100644 --- a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug47163-expected.png +++ b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug47163-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png index bd778a6..0d51927 100644 --- a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png +++ b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png similarity index 100% rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png rename to third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png similarity index 100% rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png rename to third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png index d85f82bb..9ecaf24 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png index caaaef412..0d29decb 100644 --- a/third_party/blink/web_tests/platform/win/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/forms/focus-rect/checkbox-zoom-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png index d7b36f9..6b8125f 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png index e1fe026..80e7e7e1 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/colspanMinWidth-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/rowspan-paint-order-expected.png b/third_party/blink/web_tests/platform/win/fast/table/rowspan-paint-order-expected.png index 2d6d7ae..c581137 100644 --- a/third_party/blink/web_tests/platform/win/fast/table/rowspan-paint-order-expected.png +++ b/third_party/blink/web_tests/platform/win/fast/table/rowspan-paint-order-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug17826-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug17826-expected.png index 7e7b317..374c7a5 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug17826-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug17826-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug47163-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug47163-expected.png index 3b7028f..5e3dca2 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug47163-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug47163-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png index 7341ad8..8018881 100644 --- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png +++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 5650af4..5520154 100644 --- a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 4e4b3188..001de55e 100644 --- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/css-modules/README.md b/third_party/blink/web_tests/virtual/css-modules/README.md index 9252bac3..9b11cf0 100644 --- a/third_party/blink/web_tests/virtual/css-modules/README.md +++ b/third_party/blink/web_tests/virtual/css-modules/README.md
@@ -1,5 +1,5 @@ This suite runs the tests with ---enable-blink-features=CSSModules +--enable-blink-features=CSSModules --js-flags=--harmony-import-assertions See design doc for more details: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/SyntheticModules/designDoc.md \ No newline at end of file
diff --git a/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test-expected.txt b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test-expected.txt new file mode 100644 index 0000000..cd27bca --- /dev/null +++ b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS A static import CSS Module within a web worker should not load. +PASS A dynamic import CSS Module within a web worker should not load. +PASS A CSS Module within a web worker should not load. +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic-expected.txt b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic-expected.txt new file mode 100644 index 0000000..efa4c92 --- /dev/null +++ b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS A CSS Module should load +PASS A large CSS Module should load +PASS An @import CSS Module should not load, but should not throw an exception +PASS Malformed CSS should not load +PASS CSS module without type assertion should result in a fetch error +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic-expected.txt b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic-expected.txt new file mode 100644 index 0000000..83e0eaf --- /dev/null +++ b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-dynamic-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +PASS Load a CSS module with dynamic import() +PASS Ensure that loading a CSS module with dymnamic import() fails without a type assertion +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative-expected.txt b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative-expected.txt new file mode 100644 index 0000000..4ff8dd8 --- /dev/null +++ b/third_party/blink/web_tests/virtual/css-modules/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +PASS utf-8 +PASS shift-jis +PASS windows-1252 +PASS utf-7 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/json-modules/README.md b/third_party/blink/web_tests/virtual/json-modules/README.md index 0935af2..6376b73 100644 --- a/third_party/blink/web_tests/virtual/json-modules/README.md +++ b/third_party/blink/web_tests/virtual/json-modules/README.md
@@ -1,5 +1,5 @@ This suite runs the tests with ---enable-blink-features=JSONModules +--enable-features=JSONModules --js-flags=--harmony-import-assertions See design doc for more details: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/SyntheticModules/designDoc.md \ No newline at end of file
diff --git a/third_party/blink/web_tests/virtual/json-modules/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt b/third_party/blink/web_tests/virtual/json-modules/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt index 9bce732..50eca29 100644 --- a/third_party/blink/web_tests/virtual/json-modules/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt +++ b/third_party/blink/web_tests/virtual/json-modules/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt
@@ -1,6 +1,6 @@ This is a testharness.js-based test. PASS Javascript importing JSON Module should load within the context of a service worker -PASS JSON Modules should load within the context of a service worker +FAIL Trying to register a service worker with a top-level JSON Module should fail promise_rejects_dom: Attempting to load JSON as a service worker should fail function "function() { throw e }" threw object "TypeError: Failed to register a ServiceWorker for scope ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/') with script ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/module.json'): ServiceWorker cannot be started" that is not a DOMException SecurityError: property "code" is equal to undefined, expected 18 PASS JSON Module dynamic import should not load within the context of a service worker Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/json-modules/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt b/third_party/blink/web_tests/virtual/json-modules/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt new file mode 100644 index 0000000..25ca5d90 --- /dev/null +++ b/third_party/blink/web_tests/virtual/json-modules/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +FAIL Non-object: null promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: true promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: false promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: string promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: array promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt index 9bce732..50eca29 100644 --- a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt
@@ -1,6 +1,6 @@ This is a testharness.js-based test. PASS Javascript importing JSON Module should load within the context of a service worker -PASS JSON Modules should load within the context of a service worker +FAIL Trying to register a service worker with a top-level JSON Module should fail promise_rejects_dom: Attempting to load JSON as a service worker should fail function "function() { throw e }" threw object "TypeError: Failed to register a ServiceWorker for scope ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/') with script ('https://web-platform.test:8444/html/semantics/scripting-1/the-script-element/json-module/module.json'): ServiceWorker cannot be started" that is not a DOMException SecurityError: property "code" is equal to undefined, expected 18 PASS JSON Module dynamic import should not load within the context of a service worker Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt new file mode 100644 index 0000000..25ca5d90 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +FAIL Non-object: null promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: true promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: false promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: string promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +FAIL Non-object: array promise_test: Unhandled rejection with value: object "TypeError: Module scripts are not supported on ServiceWorkerGlobalScope yet (see https://crbug.com/824647)." +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-contain/parsing/contain-computed-expected.txt b/third_party/blink/web_tests/wpt_internal/css/css-contain/parsing/contain-computed-expected.txt deleted file mode 100644 index 7366edf..0000000 --- a/third_party/blink/web_tests/wpt_internal/css/css-contain/parsing/contain-computed-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL Property contain value 'block-size' assert_true: 'block-size' is a supported value for contain. expected true got false -FAIL Property contain value 'inline-size' assert_true: 'inline-size' is a supported value for contain. expected true got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-contain/parsing/contain-valid-expected.txt b/third_party/blink/web_tests/wpt_internal/css/css-contain/parsing/contain-valid-expected.txt deleted file mode 100644 index 5d01979..0000000 --- a/third_party/blink/web_tests/wpt_internal/css/css-contain/parsing/contain-valid-expected.txt +++ /dev/null
@@ -1,6 +0,0 @@ -This is a testharness.js-based test. -FAIL e.style['contain'] = "inline-size" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['contain'] = "block-size" should set the property value assert_not_equals: property should be set got disallowed value "" -FAIL e.style['contain'] = "layout inline-size" 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/freetype/README.chromium b/third_party/freetype/README.chromium index 9604bb2..075462da 100644 --- a/third_party/freetype/README.chromium +++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@ Name: FreeType URL: http://www.freetype.org/ -Version: VER-2-10-4-151-g2c4055960 -Revision: 2c40559609c102a934c1f0c5ee7ccb790fc887dc +Version: VER-2-10-4-155-gc8dede7b1 +Revision: c8dede7b1c632ee7f3032546856f2f92dc3bdc6c CPEPrefix: cpe:/a:freetype:freetype:2.10.4 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses"
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index 2a22107..7fe0bf1 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -16349,6 +16349,64 @@ <description>Please enter the description of this user action.</description> </action> +<action name="NewTabPage.Carts.HideModule"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <description> + The 'Hide these carts' option is clicked in the cart module menu to + temporarily hide the module. + </description> +</action> + +<action name="NewTabPage.Carts.LeftScrollClick"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <description> + The scroll button on the left side of the module is clicked in order to see + carts on the left. + </description> +</action> + +<action name="NewTabPage.Carts.RemoveModule"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <description> + The 'Never show carts' option is clicked in the cart module menu to + permanently remove the module. + </description> +</action> + +<action name="NewTabPage.Carts.RightScrollClick"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <description> + The scroll button on the right side of the module is clicked in order to see + carts on the right. + </description> +</action> + +<action name="NewTabPage.Carts.UndoHideModule"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <description> + An attempt to temporarily hide the cart module is undone. + </description> +</action> + +<action name="NewTabPage.Carts.UndoRemoveModule"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <description> + An attempt to permanently remove the cart module is undone. + </description> +</action> + <action name="NewTabPage.LinkOpenedFromContextMenu.WebUI"> <owner>tiborg@chromium.org</owner> <owner>yyushkina@chromium.org</owner>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 4bae998..caff711 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -5373,126 +5373,186 @@ <int value="2055" label="Country: False Positive (Empty)"/> <int value="2056" label="Country: False Negative (Mismatch)"/> <int value="2057" label="Country: False Negative (Unknown)"/> - <int value="2304" label="Phone: True Positive"/> - <int value="2305" label="Phone: True Negative (Ambiguous)"/> - <int value="2306" label="Phone: True Negative (Unknown)"/> - <int value="2307" label="Phone: True Negative (Empty)"/> - <int value="2308" label="Phone: False Positive (Mismatch)"/> - <int value="2309" label="Phone: False Positive (Ambiguous)"/> - <int value="2310" label="Phone: False Positive (Unknown)"/> - <int value="2311" label="Phone: False Positive (Empty)"/> - <int value="2312" label="Phone: False Negative (Mismatch)"/> - <int value="2313" label="Phone: False Negative (Unknown)"/> - <int value="2560" label="Fax: True Positive"/> - <int value="2561" label="Fax: True Negative (Ambiguous)"/> - <int value="2562" label="Fax: True Negative (Unknown)"/> - <int value="2563" label="Fax: True Negative (Empty)"/> - <int value="2564" label="Fax: False Positive (Mismatch)"/> - <int value="2565" label="Fax: False Positive (Ambiguous)"/> - <int value="2566" label="Fax: False Positive (Unknown)"/> - <int value="2567" label="Fax: False Positive (Empty)"/> - <int value="2568" label="Fax: False Negative (Mismatch)"/> - <int value="2569" label="Fax: False Negative (Unknown)"/> - <int value="2816" label="Email: True Positive"/> - <int value="2817" label="Email: True Negative (Ambiguous)"/> - <int value="2818" label="Email: True Negative (Unknown)"/> - <int value="2819" label="Email: True Negative (Empty)"/> - <int value="2820" label="Email: False Positive (Mismatch)"/> - <int value="2821" label="Email: False Positive (Ambiguous)"/> - <int value="2822" label="Email: False Positive (Unknown)"/> - <int value="2823" label="Email: False Positive (Empty)"/> - <int value="2824" label="Email: False Negative (Mismatch)"/> - <int value="2825" label="Email: False Negative (Unknown)"/> - <int value="3072" label="CC Name: True Positive"/> - <int value="3073" label="CC Name: True Negative (Ambiguous)"/> - <int value="3074" label="CC Name: True Negative (Unknown)"/> - <int value="3075" label="CC Name: True Negative (Empty)"/> - <int value="3076" label="CC Name: False Positive (Mismatch)"/> - <int value="3077" label="CC Name: False Positive (Ambiguous)"/> - <int value="3078" label="CC Name: False Positive (Unknown)"/> - <int value="3079" label="CC Name: False Positive (Empty)"/> - <int value="3080" label="CC Name: False Negative (Mismatch)"/> - <int value="3081" label="CC Name: False Negative (Unknown)"/> - <int value="3328" label="CC Number: True Positive"/> - <int value="3329" label="CC Number: True Negative (Ambiguous)"/> - <int value="3330" label="CC Number: True Negative (Unknown)"/> - <int value="3331" label="CC Number: True Negative (Empty)"/> - <int value="3332" label="CC Number: False Positive (Mismatch)"/> - <int value="3333" label="CC Number: False Positive (Ambiguous)"/> - <int value="3334" label="CC Number: False Positive (Unknown)"/> - <int value="3335" label="CC Number: False Positive (Empty)"/> - <int value="3336" label="CC Number: False Negative (Mismatch)"/> - <int value="3337" label="CC Number: False Negative (Unknown)"/> - <int value="3584" label="CC Expiry: True Positive"/> - <int value="3585" label="CC Expiry: True Negative (Ambiguous)"/> - <int value="3586" label="CC Expiry: True Negative (Unknown)"/> - <int value="3587" label="CC Expiry: True Negative (Empty)"/> - <int value="3588" label="CC Expiry: False Positive (Mismatch)"/> - <int value="3589" label="CC Expiry: False Positive (Ambiguous)"/> - <int value="3590" label="CC Expiry: False Positive (Unknown)"/> - <int value="3591" label="CC Expiry: False Positive (Empty)"/> - <int value="3592" label="CC Expiry: False Negative (Mismatch)"/> - <int value="3593" label="CC Expiry: False Negative (Unknown)"/> - <int value="3840" label="CC Type: True Positive"/> - <int value="3841" label="CC Type: True Negative (Ambiguous)"/> - <int value="3842" label="CC Type: True Negative (Unknown)"/> - <int value="3843" label="CC Type: True Negative (Empty)"/> - <int value="3844" label="CC Type: False Positive (Mismatch)"/> - <int value="3845" label="CC Type: False Positive (Ambiguous)"/> - <int value="3846" label="CC Type: False Positive (Unknown)"/> - <int value="3847" label="CC Type: False Positive (Empty)"/> - <int value="3848" label="CC Type: False Negative (Mismatch)"/> - <int value="3849" label="CC Type: False Negative (Unknown)"/> - <int value="4096" label="Password: True Positive"/> - <int value="4097" label="Password: True Negative (Ambiguous)"/> - <int value="4098" label="Password: True Negative (Unknown)"/> - <int value="4099" label="Password: True Negative (Empty)"/> - <int value="4100" label="Password: False Positive (Mismatch)"/> - <int value="4101" label="Password: False Positive (Ambiguous)"/> - <int value="4102" label="Password: False Positive (Unknown)"/> - <int value="4103" label="Password: False Positive (Empty)"/> - <int value="4104" label="Password: False Negative (Mismatch)"/> - <int value="4105" label="Password: False Negative (Unknown)"/> - <int value="4352" label="Address Line 3: True Positive"/> - <int value="4353" label="Address Line 3: True Negative (Ambiguous)"/> - <int value="4354" label="Address Line 3: True Negative (Unknown)"/> - <int value="4355" label="Address Line 3: True Negative (Empty)"/> - <int value="4356" label="Address Line 3: False Positive (Mismatch)"/> - <int value="4357" label="Address Line 3: False Positive (Ambiguous)"/> - <int value="4358" label="Address Line 3: False Positive (Unknown)"/> - <int value="4359" label="Address Line 3: False Positive (Empty)"/> - <int value="4360" label="Address Line 3: False Negative (Mismatch)"/> - <int value="4361" label="Address Line 3: False Negative (Unknown)"/> - <int value="4608" label="Username: True Positive"/> - <int value="4609" label="Username: True Negative (Ambiguous)"/> - <int value="4610" label="Username: True Negative (Unknown)"/> - <int value="4611" label="Username: True Negative (Empty)"/> - <int value="4612" label="Username: False Positive (Mismatch)"/> - <int value="4613" label="Username: False Positive (Ambiguous)"/> - <int value="4614" label="Username: False Positive (Unknown)"/> - <int value="4615" label="Username: False Positive (Empty)"/> - <int value="4616" label="Username: False Negative (Mismatch)"/> - <int value="4617" label="Username: False Negative (Unknown)"/> - <int value="4864" label="Street Address: True Positive"/> - <int value="4865" label="Street Address: True Negative (Ambiguous)"/> - <int value="4866" label="Street Address: True Negative (Unknown)"/> - <int value="4867" label="Street Address: True Negative (Empty)"/> - <int value="4868" label="Street Address: False Positive (Mismatch)"/> - <int value="4869" label="Street Address: False Positive (Ambiguous)"/> - <int value="4870" label="Street Address: False Positive (Unknown)"/> - <int value="4871" label="Street Address: False Positive (Empty)"/> - <int value="4872" label="Street Address: False Negative (Mismatch)"/> - <int value="4873" label="Street Address: False Negative (Unknown)"/> - <int value="5120" label="CVC: True Positive"/> - <int value="5121" label="CVC: True Negative (Ambiguous)"/> - <int value="5122" label="CVC: True Negative (Unknown)"/> - <int value="5123" label="CVC: True Negative (Empty)"/> - <int value="5124" label="CVC: False Positive (Mismatch)"/> - <int value="5125" label="CVC: False Positive (Ambiguous)"/> - <int value="5126" label="CVC: False Positive (Unknown)"/> - <int value="5127" label="CVC: False Positive (Empty)"/> - <int value="5128" label="CVC: False Negative (Mismatch)"/> - <int value="5129" label="CVC: False Negative (Unknown)"/> + <int value="2304" label="Street Name: True Positive"/> + <int value="2305" label="Street Name: True Negative (Ambiguous)"/> + <int value="2306" label="Street Name: True Negative (Unknown)"/> + <int value="2307" label="Street Name: True Negative (Empty)"/> + <int value="2308" label="Street Name: False Positive (Mismatch)"/> + <int value="2309" label="Street Name: False Positive (Ambiguous)"/> + <int value="2310" label="Street Name: False Positive (Unknown)"/> + <int value="2311" label="Street Name: False Positive (Empty)"/> + <int value="2312" label="Street Name: False Negative (Mismatch)"/> + <int value="2313" label="Street Name: False Negative (Unknown)"/> + <int value="2560" label="Dependent Street Name: True Positive"/> + <int value="2561" label="Dependent Street Name: True Negative (Ambiguous)"/> + <int value="2562" label="Dependent Street Name: True Negative (Unknown)"/> + <int value="2563" label="Dependent Street Name: True Negative (Empty)"/> + <int value="2564" label="Dependent Street Name: False Positive (Mismatch)"/> + <int value="2565" label="Dependent Street Name: False Positive (Ambiguous)"/> + <int value="2566" label="Dependent Street Name: False Positive (Unknown)"/> + <int value="2567" label="Dependent Street Name: False Positive (Empty)"/> + <int value="2568" label="Dependent Street Name: False Negative (Mismatch)"/> + <int value="2569" label="Dependent Street Name: False Negative (Unknown)"/> + <int value="2816" label="House Number: True Positive"/> + <int value="2817" label="House Number: True Negative (Ambiguous)"/> + <int value="2818" label="House Number: True Negative (Unknown)"/> + <int value="2819" label="House Number: True Negative (Empty)"/> + <int value="2820" label="House Number: False Positive (Mismatch)"/> + <int value="2821" label="House Number: False Positive (Ambiguous)"/> + <int value="2822" label="House Number: False Positive (Unknown)"/> + <int value="2823" label="House Number: False Positive (Empty)"/> + <int value="2824" label="House Number: False Negative (Mismatch)"/> + <int value="2825" label="House Number: False Negative (Unknown)"/> + <int value="3072" label="Premise Name: True Positive"/> + <int value="3073" label="Premise Name: True Negative (Ambiguous)"/> + <int value="3074" label="Premise Name: True Negative (Unknown)"/> + <int value="3075" label="Premise Name: True Negative (Empty)"/> + <int value="3076" label="Premise Name: False Positive (Mismatch)"/> + <int value="3077" label="Premise Name: False Positive (Ambiguous)"/> + <int value="3078" label="Premise Name: False Positive (Unknown)"/> + <int value="3079" label="Premise Name: False Positive (Empty)"/> + <int value="3080" label="Premise Name: False Negative (Mismatch)"/> + <int value="3081" label="Premise Name: False Negative (Unknown)"/> + <int value="3328" label="Sub Premise: True Positive"/> + <int value="3329" label="Sub Premise: True Negative (Ambiguous)"/> + <int value="3330" label="Sub Premise: True Negative (Unknown)"/> + <int value="3331" label="Sub Premise: True Negative (Empty)"/> + <int value="3332" label="Sub Premise: False Positive (Mismatch)"/> + <int value="3333" label="Sub Premise: False Positive (Ambiguous)"/> + <int value="3334" label="Sub Premise: False Positive (Unknown)"/> + <int value="3335" label="Sub Premise: False Positive (Empty)"/> + <int value="3336" label="Sub Premise: False Negative (Mismatch)"/> + <int value="3337" label="Sub Premise: False Negative (Unknown)"/> + <int value="3584" label="Phone: True Positive"/> + <int value="3585" label="Phone: True Negative (Ambiguous)"/> + <int value="3586" label="Phone: True Negative (Unknown)"/> + <int value="3587" label="Phone: True Negative (Empty)"/> + <int value="3588" label="Phone: False Positive (Mismatch)"/> + <int value="3589" label="Phone: False Positive (Ambiguous)"/> + <int value="3590" label="Phone: False Positive (Unknown)"/> + <int value="3591" label="Phone: False Positive (Empty)"/> + <int value="3592" label="Phone: False Negative (Mismatch)"/> + <int value="3593" label="Phone: False Negative (Unknown)"/> + <int value="3840" label="Fax: True Positive"/> + <int value="3841" label="Fax: True Negative (Ambiguous)"/> + <int value="3842" label="Fax: True Negative (Unknown)"/> + <int value="3843" label="Fax: True Negative (Empty)"/> + <int value="3844" label="Fax: False Positive (Mismatch)"/> + <int value="3845" label="Fax: False Positive (Ambiguous)"/> + <int value="3846" label="Fax: False Positive (Unknown)"/> + <int value="3847" label="Fax: False Positive (Empty)"/> + <int value="3848" label="Fax: False Negative (Mismatch)"/> + <int value="3849" label="Fax: False Negative (Unknown)"/> + <int value="4096" label="Email: True Positive"/> + <int value="4097" label="Email: True Negative (Ambiguous)"/> + <int value="4098" label="Email: True Negative (Unknown)"/> + <int value="4099" label="Email: True Negative (Empty)"/> + <int value="4100" label="Email: False Positive (Mismatch)"/> + <int value="4101" label="Email: False Positive (Ambiguous)"/> + <int value="4102" label="Email: False Positive (Unknown)"/> + <int value="4103" label="Email: False Positive (Empty)"/> + <int value="4104" label="Email: False Negative (Mismatch)"/> + <int value="4105" label="Email: False Negative (Unknown)"/> + <int value="4352" label="CC Name: True Positive"/> + <int value="4353" label="CC Name: True Negative (Ambiguous)"/> + <int value="4354" label="CC Name: True Negative (Unknown)"/> + <int value="4355" label="CC Name: True Negative (Empty)"/> + <int value="4356" label="CC Name: False Positive (Mismatch)"/> + <int value="4357" label="CC Name: False Positive (Ambiguous)"/> + <int value="4358" label="CC Name: False Positive (Unknown)"/> + <int value="4359" label="CC Name: False Positive (Empty)"/> + <int value="4360" label="CC Name: False Negative (Mismatch)"/> + <int value="4361" label="CC Name: False Negative (Unknown)"/> + <int value="4608" label="CC Number: True Positive"/> + <int value="4609" label="CC Number: True Negative (Ambiguous)"/> + <int value="4610" label="CC Number: True Negative (Unknown)"/> + <int value="4611" label="CC Number: True Negative (Empty)"/> + <int value="4612" label="CC Number: False Positive (Mismatch)"/> + <int value="4613" label="CC Number: False Positive (Ambiguous)"/> + <int value="4614" label="CC Number: False Positive (Unknown)"/> + <int value="4615" label="CC Number: False Positive (Empty)"/> + <int value="4616" label="CC Number: False Negative (Mismatch)"/> + <int value="4617" label="CC Number: False Negative (Unknown)"/> + <int value="4864" label="CC Expiry: True Positive"/> + <int value="4865" label="CC Expiry: True Negative (Ambiguous)"/> + <int value="4866" label="CC Expiry: True Negative (Unknown)"/> + <int value="4867" label="CC Expiry: True Negative (Empty)"/> + <int value="4868" label="CC Expiry: False Positive (Mismatch)"/> + <int value="4869" label="CC Expiry: False Positive (Ambiguous)"/> + <int value="4870" label="CC Expiry: False Positive (Unknown)"/> + <int value="4871" label="CC Expiry: False Positive (Empty)"/> + <int value="4872" label="CC Expiry: False Negative (Mismatch)"/> + <int value="4873" label="CC Expiry: False Negative (Unknown)"/> + <int value="5120" label="CC Type: True Positive"/> + <int value="5121" label="CC Type: True Negative (Ambiguous)"/> + <int value="5122" label="CC Type: True Negative (Unknown)"/> + <int value="5123" label="CC Type: True Negative (Empty)"/> + <int value="5124" label="CC Type: False Positive (Mismatch)"/> + <int value="5125" label="CC Type: False Positive (Ambiguous)"/> + <int value="5126" label="CC Type: False Positive (Unknown)"/> + <int value="5127" label="CC Type: False Positive (Empty)"/> + <int value="5128" label="CC Type: False Negative (Mismatch)"/> + <int value="5129" label="CC Type: False Negative (Unknown)"/> + <int value="5376" label="Password: True Positive"/> + <int value="5377" label="Password: True Negative (Ambiguous)"/> + <int value="5378" label="Password: True Negative (Unknown)"/> + <int value="5379" label="Password: True Negative (Empty)"/> + <int value="5380" label="Password: False Positive (Mismatch)"/> + <int value="5381" label="Password: False Positive (Ambiguous)"/> + <int value="5382" label="Password: False Positive (Unknown)"/> + <int value="5383" label="Password: False Positive (Empty)"/> + <int value="5384" label="Password: False Negative (Mismatch)"/> + <int value="5385" label="Password: False Negative (Unknown)"/> + <int value="5632" label="Address Line 3: True Positive"/> + <int value="5633" label="Address Line 3: True Negative (Ambiguous)"/> + <int value="5634" label="Address Line 3: True Negative (Unknown)"/> + <int value="5635" label="Address Line 3: True Negative (Empty)"/> + <int value="5636" label="Address Line 3: False Positive (Mismatch)"/> + <int value="5637" label="Address Line 3: False Positive (Ambiguous)"/> + <int value="5638" label="Address Line 3: False Positive (Unknown)"/> + <int value="5639" label="Address Line 3: False Positive (Empty)"/> + <int value="5640" label="Address Line 3: False Negative (Mismatch)"/> + <int value="5641" label="Address Line 3: False Negative (Unknown)"/> + <int value="5888" label="Username: True Positive"/> + <int value="5889" label="Username: True Negative (Ambiguous)"/> + <int value="5890" label="Username: True Negative (Unknown)"/> + <int value="5891" label="Username: True Negative (Empty)"/> + <int value="5892" label="Username: False Positive (Mismatch)"/> + <int value="5893" label="Username: False Positive (Ambiguous)"/> + <int value="5894" label="Username: False Positive (Unknown)"/> + <int value="5895" label="Username: False Positive (Empty)"/> + <int value="5896" label="Username: False Negative (Mismatch)"/> + <int value="5897" label="Username: False Negative (Unknown)"/> + <int value="6144" label="Street Address: True Positive"/> + <int value="6145" label="Street Address: True Negative (Ambiguous)"/> + <int value="6146" label="Street Address: True Negative (Unknown)"/> + <int value="6147" label="Street Address: True Negative (Empty)"/> + <int value="6148" label="Street Address: False Positive (Mismatch)"/> + <int value="6149" label="Street Address: False Positive (Ambiguous)"/> + <int value="6150" label="Street Address: False Positive (Unknown)"/> + <int value="6151" label="Street Address: False Positive (Empty)"/> + <int value="6152" label="Street Address: False Negative (Mismatch)"/> + <int value="6153" label="Street Address: False Negative (Unknown)"/> + <int value="6400" label="CVC: True Positive"/> + <int value="6401" label="CVC: True Negative (Ambiguous)"/> + <int value="6402" label="CVC: True Negative (Unknown)"/> + <int value="6403" label="CVC: True Negative (Empty)"/> + <int value="6404" label="CVC: False Positive (Mismatch)"/> + <int value="6405" label="CVC: False Positive (Ambiguous)"/> + <int value="6406" label="CVC: False Positive (Unknown)"/> + <int value="6407" label="CVC: False Positive (Empty)"/> + <int value="6408" label="CVC: False Negative (Mismatch)"/> + <int value="6409" label="CVC: False Negative (Unknown)"/> + <int value="6656" label="Unfillable: True Positive"/> + <int value="6657" label="Unfillable: True Negative (Ambiguous)"/> + <int value="6658" label="Unfillable: True Negative (Unknown)"/> + <int value="6659" label="Unfillable: True Negative (Empty)"/> + <int value="6660" label="Unfillable: False Positive (Mismatch)"/> + <int value="6661" label="Unfillable: False Positive (Ambiguous)"/> + <int value="6662" label="Unfillable: False Positive (Unknown)"/> + <int value="6663" label="Unfillable: False Positive (Empty)"/> + <int value="6664" label="Unfillable: False Negative (Mismatch)"/> + <int value="6665" label="Unfillable: False Negative (Unknown)"/> </enum> <enum name="AutofillFormDynamicity">
diff --git a/tools/metrics/histograms/histograms_xml/event/histograms.xml b/tools/metrics/histograms/histograms_xml/event/histograms.xml index 3f43da0..d50f4b2 100644 --- a/tools/metrics/histograms/histograms_xml/event/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/event/histograms.xml
@@ -215,7 +215,7 @@ </histogram> <histogram name="Event.InputEventPrediction.Scroll.OverPrediction" - units="pixels" expires_after="M85"> + units="pixels" expires_after="M97"> <owner>eirage@chromium.org</owner> <owner>axantoine@google.com</owner> <summary> @@ -228,7 +228,7 @@ </histogram> <histogram name="Event.InputEventPrediction.Scroll.PredictionJitter" - units="pixels" expires_after="M85"> + units="pixels" expires_after="M97"> <owner>eirage@chromium.org</owner> <owner>axantoine@google.com</owner> <summary> @@ -242,7 +242,7 @@ </histogram> <histogram name="Event.InputEventPrediction.Scroll.UnderPrediction" - units="pixels" expires_after="M85"> + units="pixels" expires_after="M97"> <owner>eirage@chromium.org</owner> <owner>axantoine@google.com</owner> <summary> @@ -255,7 +255,7 @@ </histogram> <histogram name="Event.InputEventPrediction.Scroll.VisualJitter" units="pixels" - expires_after="M85"> + expires_after="M97"> <owner>eirage@chromium.org</owner> <owner>axantoine@google.com</owner> <summary> @@ -268,7 +268,7 @@ </histogram> <histogram name="Event.InputEventPrediction.Scroll.WrongDirection" - enum="Boolean" expires_after="M85"> + enum="Boolean" expires_after="M97"> <owner>eirage@chromium.org</owner> <owner>axantoine@google.com</owner> <summary> @@ -602,7 +602,7 @@ </histogram> <histogram name="Event.Latency.ScrollBegin.Touch.AverageLag" units="pixels" - expires_after="2021-06-20"> + expires_after="M97"> <owner>flackr@chromium.org</owner> <owner>joalmei@microsoft.com</owner> <owner>input-dev@chromium.org</owner> @@ -620,7 +620,7 @@ </histogram> <histogram name="Event.Latency.ScrollBegin.Touch.AverageLagPresentation" - units="pixels" expires_after="2021-06-20"> + units="pixels" expires_after="M97"> <owner>flackr@chromium.org</owner> <owner>joalmei@microsoft.org</owner> <owner>input-dev@chromium.org</owner> @@ -1077,7 +1077,7 @@ </histogram> <histogram name="Event.Latency.ScrollUpdate.Touch.AverageLag" units="pixels" - expires_after="2021-06-20"> + expires_after="M97"> <owner>flackr@chromium.org</owner> <owner>joalmei@microsoft.com</owner> <owner>input-dev@chromium.org</owner> @@ -1138,7 +1138,7 @@ </histogram> <histogram name="Event.Latency.ScrollUpdate.Touch.AverageLagPresentation" - units="pixels" expires_after="2021-06-20"> + units="pixels" expires_after="M97"> <owner>flackr@chromium.org</owner> <owner>joalmei@microsoft.com</owner> <owner>input-dev@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/gpu/histograms.xml b/tools/metrics/histograms/histograms_xml/gpu/histograms.xml index 44a238b7..400386e 100644 --- a/tools/metrics/histograms/histograms_xml/gpu/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/gpu/histograms.xml
@@ -22,7 +22,7 @@ <histograms> <histogram name="GPU.AcceleratedSurfaceRefreshRate" units="hz" - expires_after="M90"> + expires_after="M97"> <owner>vmiura@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml index 0050e9e4..e7d5826 100644 --- a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
@@ -90,6 +90,28 @@ </summary> </histogram> +<histogram name="NewTabPage.Carts.CartCount" units="count" + expires_after="2021-08-01"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <summary> + Logged when the cart module is created. The value is equal to the initial + number of carts within the module (could be zero). + </summary> +</histogram> + +<histogram name="NewTabPage.Carts.ClickCart" units="index" + expires_after="2021-08-01"> + <owner>wychen@chromium.org</owner> + <owner>yuezhanggg@chromium.org</owner> + <owner>chrome-shopping@google.com</owner> + <summary> + Logged when a user clicks on a cart in the cart module. The value is equal + to the index of the cart. + </summary> +</histogram> + <histogram name="NewTabPage.ContentSuggestions.ArticlesListVisible" enum="BooleanVisible" expires_after="2021-07-01"> <owner>freedjm@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml index d778aa0..49fda90 100644 --- a/tools/metrics/histograms/histograms_xml/others/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -6152,23 +6152,6 @@ </summary> </histogram> -<histogram name="Graphics.Smoothness.Diagnostics.DiscardedDependentCount" - units="dependent reporters" expires_after="2022-02-01"> - <owner>sadrul@chromium.org</owner> - <owner>behdadb@chromium.org</owner> - <summary> - Diagnostic metric to measure how many dependent reporters have been - discarded. - - The reporters might be dependant on another reporter (when having partial - updates) but if the number of dependents go over a limit we would discard - them earlier. This metric count how many of such reporters been discarded - earlier than expected as a result of outstanding number of dependent - reporters. The metric will be reported at the end of each frame if there has - been any discarded dependent reporters. - </summary> -</histogram> - <histogram name="Graphics.Smoothness.Diagnostics.DroppedFrameAfterScrollStart.Frames" units="vsyncs" expires_after="2021-09-01">
diff --git a/tools/perf/benchmarks/startup_mobile.py b/tools/perf/benchmarks/startup_mobile.py index 5f80c30..4ba5f6c5 100644 --- a/tools/perf/benchmarks/startup_mobile.py +++ b/tools/perf/benchmarks/startup_mobile.py
@@ -67,8 +67,10 @@ # --output-dir=/tmp/maps_pwa_output --upload # Note: "startup_mobile_benchmark" instead of "startup.mobile". -_NUMBER_OF_ITERATIONS = 10 -_NUMBER_OF_ITERATIONS_FOR_WEBLAYER = 20 +# Updated the number of iterations to reduce repeats on a single device, and +# increase repeats across devices, with changes on cross_device_test_config.py. +_NUMBER_OF_ITERATIONS = 1 +_NUMBER_OF_ITERATIONS_FOR_WEBLAYER = 5 _MAX_BATTERY_TEMP = 32 class _MobileStartupSharedState(story_module.SharedState):
diff --git a/tools/perf/chrome_telemetry_build/BUILD.gn b/tools/perf/chrome_telemetry_build/BUILD.gn index 8a7da08..82f7451 100644 --- a/tools/perf/chrome_telemetry_build/BUILD.gn +++ b/tools/perf/chrome_telemetry_build/BUILD.gn
@@ -68,7 +68,7 @@ # CrOS currently has issues with the locally compiled version of # crashpad_database_util, so only include it on traditional Linux # platforms. - if (is_linux || is_chromeos_lacros) { + if (is_linux) { data_deps += [ "//third_party/crashpad/crashpad/tools:crashpad_database_util" ] }
diff --git a/tools/perf/core/bot_platforms.py b/tools/perf/core/bot_platforms.py index a89ee0f..3daee56 100644 --- a/tools/perf/core/bot_platforms.py +++ b/tools/perf/core/bot_platforms.py
@@ -392,8 +392,8 @@ 'system_health.weblayer_startup', 'v8.browsing_mobile-future', ]) -_ANDROID_PIXEL2_BENCHMARK_CONFIGS = PerfSuite(_OFFICIAL_EXCEPT_DISPLAY_LOCKING).Remove( - ['system_health.weblayer_startup']) +_ANDROID_PIXEL2_BENCHMARK_CONFIGS = PerfSuite( + _OFFICIAL_EXCEPT_DISPLAY_LOCKING).Remove(['system_health.weblayer_startup']) _ANDROID_PIXEL2_EXECUTABLE_CONFIGS = frozenset([ _components_perftests(60), ]) @@ -410,8 +410,8 @@ _GetBenchmarkConfig('startup.mobile'), _GetBenchmarkConfig('system_health.weblayer_startup') ]) -_ANDROID_PIXEL4_BENCHMARK_CONFIGS = PerfSuite(_OFFICIAL_EXCEPT_DISPLAY_LOCKING).Remove( - ['system_health.weblayer_startup']) +_ANDROID_PIXEL4_BENCHMARK_CONFIGS = PerfSuite( + _OFFICIAL_EXCEPT_DISPLAY_LOCKING).Remove(['system_health.weblayer_startup']) _ANDROID_PIXEL4_EXECUTABLE_CONFIGS = frozenset([ _components_perftests(60), ]) @@ -528,9 +528,12 @@ 'Android OPM1.171019.021 (gobo)', _ANDROID_GO_WEBVIEW_BENCHMARK_CONFIGS, 13, 'android') -ANDROID_NEXUS_5 = PerfPlatform( - 'Android Nexus5 Perf', 'Android KOT49H', _ANDROID_NEXUS_5_BENCHMARK_CONFIGS, - 8, 'android', executables=_ANDROID_NEXUS_5_EXECUTABLE_CONFIGS) +ANDROID_NEXUS_5 = PerfPlatform('Android Nexus5 Perf', + 'Android KOT49H', + _ANDROID_NEXUS_5_BENCHMARK_CONFIGS, + 10, + 'android', + executables=_ANDROID_NEXUS_5_EXECUTABLE_CONFIGS) ANDROID_NEXUS_5X_WEBVIEW = PerfPlatform( 'Android Nexus5X WebView Perf', 'Android AOSP MOB30K', _ANDROID_NEXUS_5X_WEBVIEW_BENCHMARK_CONFIGS, 16, 'android')
diff --git a/tools/perf/core/shard_maps/android-go-perf_map.json b/tools/perf/core/shard_maps/android-go-perf_map.json index 20bf6e0..1d3965f4 100644 --- a/tools/perf/core/shard_maps/android-go-perf_map.json +++ b/tools/perf/core/shard_maps/android-go-perf_map.json
@@ -11,7 +11,7 @@ "abridged": false }, "system_health.common_mobile": { - "end": 3, + "end": 6, "abridged": false } } @@ -19,9 +19,13 @@ "1": { "benchmarks": { "system_health.common_mobile": { - "begin": 3, + "begin": 6, "end": 14, "abridged": false + }, + "startup.mobile": { + "end": 3, + "abridged": false } } }, @@ -29,7 +33,11 @@ "benchmarks": { "system_health.common_mobile": { "begin": 14, - "end": 38, + "end": 31, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -37,8 +45,12 @@ "3": { "benchmarks": { "system_health.common_mobile": { - "begin": 38, - "end": 64, + "begin": 31, + "end": 57, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -46,20 +58,28 @@ "4": { "benchmarks": { "system_health.common_mobile": { - "begin": 64, + "begin": 57, + "end": 70, "abridged": false }, - "system_health.memory_mobile": { - "end": 2, + "startup.mobile": { + "end": 3, "abridged": false } } }, "5": { "benchmarks": { + "system_health.common_mobile": { + "begin": 70, + "abridged": false + }, "system_health.memory_mobile": { - "begin": 2, - "end": 7, + "end": 4, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -67,8 +87,12 @@ "6": { "benchmarks": { "system_health.memory_mobile": { - "begin": 7, - "end": 12, + "begin": 4, + "end": 8, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -76,8 +100,12 @@ "7": { "benchmarks": { "system_health.memory_mobile": { - "begin": 12, - "end": 18, + "begin": 8, + "end": 12, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -85,8 +113,12 @@ "8": { "benchmarks": { "system_health.memory_mobile": { - "begin": 18, - "end": 24, + "begin": 12, + "end": 17, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -94,8 +126,12 @@ "9": { "benchmarks": { "system_health.memory_mobile": { - "begin": 24, - "end": 31, + "begin": 17, + "end": 22, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -103,8 +139,8 @@ "10": { "benchmarks": { "system_health.memory_mobile": { - "begin": 31, - "end": 42, + "begin": 22, + "end": 29, "abridged": false } } @@ -112,8 +148,8 @@ "11": { "benchmarks": { "system_health.memory_mobile": { - "begin": 42, - "end": 51, + "begin": 29, + "end": 41, "abridged": false } } @@ -121,26 +157,26 @@ "12": { "benchmarks": { "system_health.memory_mobile": { + "begin": 41, + "end": 51, + "abridged": false + } + } + }, + "13": { + "benchmarks": { + "system_health.memory_mobile": { "begin": 51, "end": 63, "abridged": false } } }, - "13": { - "benchmarks": { - "system_health.memory_mobile": { - "begin": 63, - "end": 65, - "abridged": false - } - } - }, "14": { "benchmarks": { "system_health.memory_mobile": { - "begin": 65, - "end": 71, + "begin": 63, + "end": 66, "abridged": false } } @@ -148,23 +184,23 @@ "15": { "benchmarks": { "system_health.memory_mobile": { - "begin": 71, - "abridged": false - }, - "system_health.webview_startup": { - "abridged": false - }, - "v8.browsing_mobile": { - "end": 4, + "begin": 66, + "end": 72, "abridged": false } } }, "16": { "benchmarks": { + "system_health.memory_mobile": { + "begin": 72, + "abridged": false + }, + "system_health.webview_startup": { + "abridged": false + }, "v8.browsing_mobile": { - "begin": 4, - "end": 13, + "end": 9, "abridged": false } } @@ -172,7 +208,7 @@ "17": { "benchmarks": { "v8.browsing_mobile": { - "begin": 13, + "begin": 9, "end": 20, "abridged": false } @@ -188,28 +224,28 @@ }, "extra_infos": { "num_stories": 182, - "predicted_min_shard_time": 846.0, - "predicted_min_shard_index": 17, - "predicted_max_shard_time": 1212.0, - "predicted_max_shard_index": 13, - "shard #0": 1029.0, - "shard #1": 1026.0, - "shard #2": 1051.0, - "shard #3": 973.0, - "shard #4": 1034.0, - "shard #5": 939.0, - "shard #6": 1092.0, - "shard #7": 1050.0, - "shard #8": 1083.0, - "shard #9": 1029.0, - "shard #10": 1089.0, - "shard #11": 1068.0, - "shard #12": 1050.0, - "shard #13": 1212.0, - "shard #14": 1104.0, - "shard #15": 971.0, - "shard #16": 1019.0, - "shard #17": 846.0, - "shard #18": 1154.0 + "predicted_min_shard_time": 1035.0, + "predicted_min_shard_index": 13, + "predicted_max_shard_time": 1359.0, + "predicted_max_shard_index": 15, + "shard #0": 1180.0, + "shard #1": 1149.0, + "shard #2": 1193.0, + "shard #3": 1182.0, + "shard #4": 1169.0, + "shard #5": 1149.0, + "shard #6": 1265.0, + "shard #7": 1190.0, + "shard #8": 1064.0, + "shard #9": 1253.0, + "shard #10": 1182.0, + "shard #11": 1203.0, + "shard #12": 1119.0, + "shard #13": 1035.0, + "shard #14": 1176.0, + "shard #15": 1359.0, + "shard #16": 1229.0, + "shard #17": 1161.0, + "shard #18": 1135.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel2-perf_map.json b/tools/perf/core/shard_maps/android-pixel2-perf_map.json index 2b6e1a7..b3b4d1c 100644 --- a/tools/perf/core/shard_maps/android-pixel2-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel2-perf_map.json
@@ -11,7 +11,11 @@ "abridged": false }, "blink_perf.dom": { - "end": 1, + "end": 3, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -19,7 +23,7 @@ "1": { "benchmarks": { "blink_perf.dom": { - "begin": 1, + "begin": 3, "abridged": false }, "blink_perf.events": { @@ -29,7 +33,11 @@ "abridged": false }, "blink_perf.layout": { - "end": 67, + "end": 68, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -37,7 +45,7 @@ "2": { "benchmarks": { "blink_perf.layout": { - "begin": 67, + "begin": 68, "abridged": false }, "blink_perf.owp_storage": { @@ -47,7 +55,11 @@ "abridged": false }, "blink_perf.parser": { - "end": 22, + "end": 10, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -55,7 +67,7 @@ "3": { "benchmarks": { "blink_perf.parser": { - "begin": 22, + "begin": 10, "abridged": false }, "blink_perf.shadow_dom": { @@ -73,16 +85,8 @@ "blink_perf.webgl_fast_call": { "abridged": false }, - "dromaeo": { - "abridged": false - }, - "dummy_benchmark.noisy_benchmark_1": { - "abridged": false - }, - "dummy_benchmark.stable_benchmark_1": { - "abridged": false - }, - "jetstream": { + "startup.mobile": { + "end": 3, "abridged": false } }, @@ -97,6 +101,18 @@ }, "4": { "benchmarks": { + "dromaeo": { + "abridged": false + }, + "dummy_benchmark.noisy_benchmark_1": { + "abridged": false + }, + "dummy_benchmark.stable_benchmark_1": { + "abridged": false + }, + "jetstream": { + "abridged": false + }, "jetstream2": { "abridged": false }, @@ -104,7 +120,11 @@ "abridged": false }, "loading.mobile": { - "end": 27, + "end": 21, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -112,8 +132,12 @@ "5": { "benchmarks": { "loading.mobile": { - "begin": 27, - "end": 66, + "begin": 21, + "end": 52, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -121,39 +145,50 @@ "6": { "benchmarks": { "loading.mobile": { - "begin": 66, + "begin": 52, + "end": 87, "abridged": false }, - "media.mobile": { - "end": 9, + "startup.mobile": { + "end": 3, "abridged": false } } }, "7": { "benchmarks": { + "loading.mobile": { + "begin": 87, + "abridged": false + }, "media.mobile": { - "begin": 9, "abridged": false }, "octane": { "abridged": false }, "rasterize_and_record_micro.top_25": { + "end": 8, "abridged": false }, - "rendering.mobile": { - "end": 25, + "startup.mobile": { + "end": 3, "abridged": false } - }, - "executables": {} + } }, "8": { "benchmarks": { + "rasterize_and_record_micro.top_25": { + "begin": 8, + "abridged": false + }, "rendering.mobile": { - "begin": 25, - "end": 77, + "end": 40, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -161,8 +196,12 @@ "9": { "benchmarks": { "rendering.mobile": { - "begin": 77, - "end": 125, + "begin": 40, + "end": 88, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -170,8 +209,8 @@ "10": { "benchmarks": { "rendering.mobile": { - "begin": 125, - "end": 173, + "begin": 88, + "end": 128, "abridged": false } } @@ -179,8 +218,8 @@ "11": { "benchmarks": { "rendering.mobile": { - "begin": 173, - "end": 220, + "begin": 128, + "end": 180, "abridged": false } } @@ -188,8 +227,8 @@ "12": { "benchmarks": { "rendering.mobile": { - "begin": 220, - "end": 278, + "begin": 180, + "end": 239, "abridged": false } } @@ -197,8 +236,8 @@ "13": { "benchmarks": { "rendering.mobile": { - "begin": 278, - "end": 323, + "begin": 239, + "end": 307, "abridged": false } } @@ -206,8 +245,8 @@ "14": { "benchmarks": { "rendering.mobile": { - "begin": 323, - "end": 362, + "begin": 307, + "end": 342, "abridged": false } } @@ -215,8 +254,8 @@ "15": { "benchmarks": { "rendering.mobile": { - "begin": 362, - "end": 410, + "begin": 342, + "end": 380, "abridged": false } } @@ -224,7 +263,7 @@ "16": { "benchmarks": { "rendering.mobile": { - "begin": 410, + "begin": 380, "abridged": false }, "speedometer": { @@ -243,19 +282,19 @@ "abridged": false }, "startup.mobile": { - "abridged": false - }, - "system_health.common_mobile": { - "end": 17, + "end": 2, "abridged": false } } }, "17": { "benchmarks": { + "startup.mobile": { + "begin": 2, + "abridged": false + }, "system_health.common_mobile": { - "begin": 17, - "end": 58, + "end": 28, "abridged": false } } @@ -263,20 +302,20 @@ "18": { "benchmarks": { "system_health.common_mobile": { - "begin": 58, - "abridged": false - }, - "system_health.memory_mobile": { - "end": 7, + "begin": 28, + "end": 69, "abridged": false } } }, "19": { "benchmarks": { + "system_health.common_mobile": { + "begin": 69, + "abridged": false + }, "system_health.memory_mobile": { - "begin": 7, - "end": 17, + "end": 11, "abridged": false } } @@ -284,8 +323,8 @@ "20": { "benchmarks": { "system_health.memory_mobile": { - "begin": 17, - "end": 25, + "begin": 11, + "end": 21, "abridged": false } } @@ -293,8 +332,8 @@ "21": { "benchmarks": { "system_health.memory_mobile": { - "begin": 25, - "end": 39, + "begin": 21, + "end": 32, "abridged": false } } @@ -302,8 +341,8 @@ "22": { "benchmarks": { "system_health.memory_mobile": { - "begin": 39, - "end": 53, + "begin": 32, + "end": 49, "abridged": false } } @@ -311,8 +350,8 @@ "23": { "benchmarks": { "system_health.memory_mobile": { - "begin": 53, - "end": 68, + "begin": 49, + "end": 67, "abridged": false } } @@ -320,7 +359,7 @@ "24": { "benchmarks": { "system_health.memory_mobile": { - "begin": 68, + "begin": 67, "abridged": false }, "system_health.webview_startup": { @@ -330,7 +369,7 @@ "abridged": false }, "v8.browsing_mobile": { - "end": 5, + "end": 6, "abridged": false } } @@ -338,8 +377,8 @@ "25": { "benchmarks": { "v8.browsing_mobile": { - "begin": 5, - "end": 23, + "begin": 6, + "end": 20, "abridged": false } } @@ -347,11 +386,11 @@ "26": { "benchmarks": { "v8.browsing_mobile": { - "begin": 23, + "begin": 20, "abridged": false }, "v8.browsing_mobile-future": { - "end": 14, + "end": 11, "abridged": false } } @@ -359,7 +398,7 @@ "27": { "benchmarks": { "v8.browsing_mobile-future": { - "begin": 14, + "begin": 11, "abridged": false }, "webrtc": { @@ -368,38 +407,38 @@ } }, "extra_infos": { - "num_stories": 1139, - "predicted_min_shard_time": 1001.0, - "predicted_min_shard_index": 3, - "predicted_max_shard_time": 1242.0, - "predicted_max_shard_index": 20, - "shard #0": 1176.0, - "shard #1": 1178.0, - "shard #2": 1173.0, - "shard #3": 1001.0, - "shard #4": 1159.0, - "shard #5": 1176.0, - "shard #6": 1211.0, - "shard #7": 1175.0, - "shard #8": 1189.0, - "shard #9": 1173.0, - "shard #10": 1184.0, - "shard #11": 1188.0, - "shard #12": 1182.0, - "shard #13": 1178.0, - "shard #14": 1198.0, - "shard #15": 1180.0, - "shard #16": 1200.0, - "shard #17": 1174.0, - "shard #18": 1140.0, - "shard #19": 1236.0, - "shard #20": 1242.0, - "shard #21": 1131.0, - "shard #22": 1182.0, - "shard #23": 1218.0, - "shard #24": 1128.0, - "shard #25": 1134.0, - "shard #26": 1175.0, - "shard #27": 1185.0 + "num_stories": 1140, + "predicted_min_shard_time": 1227.0, + "predicted_min_shard_index": 20, + "predicted_max_shard_time": 1473.0, + "predicted_max_shard_index": 27, + "shard #0": 1268.0, + "shard #1": 1260.0, + "shard #2": 1256.0, + "shard #3": 1242.0, + "shard #4": 1240.0, + "shard #5": 1284.0, + "shard #6": 1272.0, + "shard #7": 1273.0, + "shard #8": 1257.0, + "shard #9": 1275.0, + "shard #10": 1264.0, + "shard #11": 1269.0, + "shard #12": 1260.0, + "shard #13": 1257.0, + "shard #14": 1251.0, + "shard #15": 1251.0, + "shard #16": 1255.0, + "shard #17": 1248.0, + "shard #18": 1246.0, + "shard #19": 1248.0, + "shard #20": 1227.0, + "shard #21": 1239.0, + "shard #22": 1272.0, + "shard #23": 1281.0, + "shard #24": 1289.0, + "shard #25": 1237.0, + "shard #26": 1270.0, + "shard #27": 1473.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel2_weblayer-perf_map.json b/tools/perf/core/shard_maps/android-pixel2_weblayer-perf_map.json index d79c402..0262d96 100644 --- a/tools/perf/core/shard_maps/android-pixel2_weblayer-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel2_weblayer-perf_map.json
@@ -5,52 +5,59 @@ "abridged": false }, "system_health.common_mobile": { - "end": 11, + "abridged": true + }, + "system_health.memory_mobile": { + "end": 2, "abridged": true } } }, "1": { "benchmarks": { - "system_health.common_mobile": { - "begin": 11, + "system_health.memory_mobile": { + "begin": 2, + "end": 7, "abridged": true }, - "system_health.memory_mobile": { - "end": 6, - "abridged": true + "startup.mobile": { + "end": 3, + "abridged": false } } }, "2": { "benchmarks": { "system_health.memory_mobile": { - "begin": 6, - "end": 11, + "begin": 7, "abridged": true + }, + "startup.mobile": { + "end": 3, + "abridged": false } } }, "3": { "benchmarks": { - "system_health.memory_mobile": { - "begin": 11, - "abridged": true - }, "system_health.weblayer_startup": { "abridged": false + }, + "startup.mobile": { + "end": 3, + "abridged": false } } }, "extra_infos": { "num_stories": 29, - "predicted_min_shard_time": 498.0, - "predicted_min_shard_index": 2, - "predicted_max_shard_time": 699.0, - "predicted_max_shard_index": 3, - "shard #0": 658.0, - "shard #1": 636.0, - "shard #2": 498.0, - "shard #3": 699.0 + "predicted_min_shard_time": 759.0, + "predicted_min_shard_index": 3, + "predicted_max_shard_time": 926.0, + "predicted_max_shard_index": 2, + "shard #0": 817.0, + "shard #1": 824.0, + "shard #2": 926.0, + "shard #3": 759.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel4-perf_map.json b/tools/perf/core/shard_maps/android-pixel4-perf_map.json index 2b6e1a7..4c951add 100644 --- a/tools/perf/core/shard_maps/android-pixel4-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel4-perf_map.json
@@ -11,51 +11,50 @@ "abridged": false }, "blink_perf.dom": { - "end": 1, + "abridged": false + }, + "blink_perf.events": { + "end": 3, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } }, "1": { "benchmarks": { - "blink_perf.dom": { - "begin": 1, - "abridged": false - }, "blink_perf.events": { + "begin": 3, "abridged": false }, "blink_perf.image_decoder": { "abridged": false }, "blink_perf.layout": { - "end": 67, - "abridged": false - } - } - }, - "2": { - "benchmarks": { - "blink_perf.layout": { - "begin": 67, "abridged": false }, "blink_perf.owp_storage": { "abridged": false }, "blink_perf.paint": { + "end": 1, "abridged": false }, - "blink_perf.parser": { - "end": 22, + "startup.mobile": { + "end": 3, "abridged": false } } }, - "3": { + "2": { "benchmarks": { + "blink_perf.paint": { + "begin": 1, + "abridged": false + }, "blink_perf.parser": { - "begin": 22, "abridged": false }, "blink_perf.shadow_dom": { @@ -65,6 +64,19 @@ "abridged": false }, "blink_perf.webaudio": { + "end": 3, + "abridged": false + }, + "startup.mobile": { + "end": 3, + "abridged": false + } + } + }, + "3": { + "benchmarks": { + "blink_perf.webaudio": { + "begin": 3, "abridged": false }, "blink_perf.webgl": { @@ -84,6 +96,20 @@ }, "jetstream": { "abridged": false + }, + "jetstream2": { + "abridged": false + }, + "kraken": { + "abridged": false + }, + "loading.mobile": { + "end": 11, + "abridged": false + }, + "startup.mobile": { + "end": 3, + "abridged": false } }, "executables": { @@ -97,14 +123,13 @@ }, "4": { "benchmarks": { - "jetstream2": { - "abridged": false - }, - "kraken": { - "abridged": false - }, "loading.mobile": { - "end": 27, + "begin": 11, + "end": 44, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -112,8 +137,12 @@ "5": { "benchmarks": { "loading.mobile": { - "begin": 27, - "end": 66, + "begin": 44, + "end": 78, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -121,11 +150,15 @@ "6": { "benchmarks": { "loading.mobile": { - "begin": 66, + "begin": 78, "abridged": false }, "media.mobile": { - "end": 9, + "end": 12, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -133,7 +166,7 @@ "7": { "benchmarks": { "media.mobile": { - "begin": 9, + "begin": 12, "abridged": false }, "octane": { @@ -143,17 +176,24 @@ "abridged": false }, "rendering.mobile": { - "end": 25, + "end": 20, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } - }, - "executables": {} + } }, "8": { "benchmarks": { "rendering.mobile": { - "begin": 25, - "end": 77, + "begin": 20, + "end": 66, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -161,8 +201,12 @@ "9": { "benchmarks": { "rendering.mobile": { - "begin": 77, - "end": 125, + "begin": 66, + "end": 116, + "abridged": false + }, + "startup.mobile": { + "end": 3, "abridged": false } } @@ -170,8 +214,8 @@ "10": { "benchmarks": { "rendering.mobile": { - "begin": 125, - "end": 173, + "begin": 116, + "end": 166, "abridged": false } } @@ -179,8 +223,8 @@ "11": { "benchmarks": { "rendering.mobile": { - "begin": 173, - "end": 220, + "begin": 166, + "end": 210, "abridged": false } } @@ -188,8 +232,8 @@ "12": { "benchmarks": { "rendering.mobile": { - "begin": 220, - "end": 278, + "begin": 210, + "end": 262, "abridged": false } } @@ -197,8 +241,8 @@ "13": { "benchmarks": { "rendering.mobile": { - "begin": 278, - "end": 323, + "begin": 262, + "end": 313, "abridged": false } } @@ -206,8 +250,8 @@ "14": { "benchmarks": { "rendering.mobile": { - "begin": 323, - "end": 362, + "begin": 313, + "end": 357, "abridged": false } } @@ -215,8 +259,8 @@ "15": { "benchmarks": { "rendering.mobile": { - "begin": 362, - "end": 410, + "begin": 357, + "end": 404, "abridged": false } } @@ -224,7 +268,7 @@ "16": { "benchmarks": { "rendering.mobile": { - "begin": 410, + "begin": 404, "abridged": false }, "speedometer": { @@ -246,7 +290,7 @@ "abridged": false }, "system_health.common_mobile": { - "end": 17, + "end": 14, "abridged": false } } @@ -254,8 +298,8 @@ "17": { "benchmarks": { "system_health.common_mobile": { - "begin": 17, - "end": 58, + "begin": 14, + "end": 51, "abridged": false } } @@ -263,11 +307,11 @@ "18": { "benchmarks": { "system_health.common_mobile": { - "begin": 58, + "begin": 51, "abridged": false }, "system_health.memory_mobile": { - "end": 7, + "end": 6, "abridged": false } } @@ -275,7 +319,7 @@ "19": { "benchmarks": { "system_health.memory_mobile": { - "begin": 7, + "begin": 6, "end": 17, "abridged": false } @@ -294,7 +338,7 @@ "benchmarks": { "system_health.memory_mobile": { "begin": 25, - "end": 39, + "end": 40, "abridged": false } } @@ -302,8 +346,8 @@ "22": { "benchmarks": { "system_health.memory_mobile": { - "begin": 39, - "end": 53, + "begin": 40, + "end": 55, "abridged": false } } @@ -311,8 +355,8 @@ "23": { "benchmarks": { "system_health.memory_mobile": { - "begin": 53, - "end": 68, + "begin": 55, + "end": 69, "abridged": false } } @@ -320,7 +364,7 @@ "24": { "benchmarks": { "system_health.memory_mobile": { - "begin": 68, + "begin": 69, "abridged": false }, "system_health.webview_startup": { @@ -330,7 +374,7 @@ "abridged": false }, "v8.browsing_mobile": { - "end": 5, + "end": 7, "abridged": false } } @@ -338,8 +382,8 @@ "25": { "benchmarks": { "v8.browsing_mobile": { - "begin": 5, - "end": 23, + "begin": 7, + "end": 24, "abridged": false } } @@ -347,11 +391,11 @@ "26": { "benchmarks": { "v8.browsing_mobile": { - "begin": 23, + "begin": 24, "abridged": false }, "v8.browsing_mobile-future": { - "end": 14, + "end": 13, "abridged": false } } @@ -359,7 +403,7 @@ "27": { "benchmarks": { "v8.browsing_mobile-future": { - "begin": 14, + "begin": 13, "abridged": false }, "webrtc": { @@ -368,38 +412,38 @@ } }, "extra_infos": { - "num_stories": 1139, - "predicted_min_shard_time": 1001.0, - "predicted_min_shard_index": 3, - "predicted_max_shard_time": 1242.0, - "predicted_max_shard_index": 20, - "shard #0": 1176.0, - "shard #1": 1178.0, - "shard #2": 1173.0, - "shard #3": 1001.0, - "shard #4": 1159.0, - "shard #5": 1176.0, - "shard #6": 1211.0, - "shard #7": 1175.0, - "shard #8": 1189.0, - "shard #9": 1173.0, - "shard #10": 1184.0, - "shard #11": 1188.0, - "shard #12": 1182.0, - "shard #13": 1178.0, - "shard #14": 1198.0, - "shard #15": 1180.0, - "shard #16": 1200.0, - "shard #17": 1174.0, - "shard #18": 1140.0, - "shard #19": 1236.0, - "shard #20": 1242.0, - "shard #21": 1131.0, - "shard #22": 1182.0, - "shard #23": 1218.0, - "shard #24": 1128.0, - "shard #25": 1134.0, - "shard #26": 1175.0, - "shard #27": 1185.0 + "num_stories": 1140, + "predicted_min_shard_time": 1240.0, + "predicted_min_shard_index": 23, + "predicted_max_shard_time": 1522.0, + "predicted_max_shard_index": 27, + "shard #0": 1317.0, + "shard #1": 1317.0, + "shard #2": 1327.0, + "shard #3": 1335.0, + "shard #4": 1308.0, + "shard #5": 1314.0, + "shard #6": 1326.0, + "shard #7": 1326.0, + "shard #8": 1330.0, + "shard #9": 1326.0, + "shard #10": 1330.0, + "shard #11": 1321.0, + "shard #12": 1321.0, + "shard #13": 1337.0, + "shard #14": 1329.0, + "shard #15": 1322.0, + "shard #16": 1335.0, + "shard #17": 1324.0, + "shard #18": 1341.0, + "shard #19": 1263.0, + "shard #20": 1350.0, + "shard #21": 1344.0, + "shard #22": 1302.0, + "shard #23": 1240.0, + "shard #24": 1362.0, + "shard #25": 1291.0, + "shard #26": 1342.0, + "shard #27": 1522.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel4_weblayer-perf_map.json b/tools/perf/core/shard_maps/android-pixel4_weblayer-perf_map.json index d79c402..b2122ad 100644 --- a/tools/perf/core/shard_maps/android-pixel4_weblayer-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel4_weblayer-perf_map.json
@@ -5,7 +5,7 @@ "abridged": false }, "system_health.common_mobile": { - "end": 11, + "end": 6, "abridged": true } } @@ -13,44 +13,56 @@ "1": { "benchmarks": { "system_health.common_mobile": { - "begin": 11, + "begin": 6, "abridged": true }, "system_health.memory_mobile": { - "end": 6, + "end": 1, "abridged": true + }, + "startup.mobile": { + "end": 3, + "abridged": false } } }, "2": { "benchmarks": { "system_health.memory_mobile": { - "begin": 6, - "end": 11, + "begin": 1, + "end": 7, "abridged": true + }, + "startup.mobile": { + "end": 3, + "abridged": false } } }, "3": { "benchmarks": { "system_health.memory_mobile": { - "begin": 11, + "begin": 7, "abridged": true }, "system_health.weblayer_startup": { "abridged": false + }, + "startup.mobile": { + "end": 3, + "abridged": false } } }, "extra_infos": { "num_stories": 29, - "predicted_min_shard_time": 498.0, + "predicted_min_shard_time": 90, "predicted_min_shard_index": 2, - "predicted_max_shard_time": 699.0, - "predicted_max_shard_index": 3, - "shard #0": 658.0, - "shard #1": 636.0, - "shard #2": 498.0, - "shard #3": 699.0 + "predicted_max_shard_time": 95.0, + "predicted_max_shard_index": 1, + "shard #0": 94.0, + "shard #1": 95.0, + "shard #2": 90, + "shard #3": 92.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus5_perf_map.json b/tools/perf/core/shard_maps/android_nexus5_perf_map.json index 4c5bd30..852cb09 100644 --- a/tools/perf/core/shard_maps/android_nexus5_perf_map.json +++ b/tools/perf/core/shard_maps/android_nexus5_perf_map.json
@@ -1,11 +1,5 @@ { "0": { - "benchmarks": { - "loading.mobile": { - "end": 1, - "abridged": true - } - }, "executables": { "components_perftests": { "path": "components_perftests", @@ -16,13 +10,22 @@ "gpu_perftests": { "path": "gpu_perftests" } + }, + "benchmarks": { + "startup.mobile": { + "end": 3, + "abridged": true + } } }, "1": { "benchmarks": { "loading.mobile": { - "begin": 1, - "end": 5, + "end": 2, + "abridged": true + }, + "startup.mobile": { + "end": 3, "abridged": true } } @@ -30,27 +33,35 @@ "2": { "benchmarks": { "loading.mobile": { - "begin": 5, + "begin": 2, + "end": 5, "abridged": true }, "startup.mobile": { - "end": 1, + "end": 3, "abridged": true } } }, "3": { "benchmarks": { + "loading.mobile": { + "begin": 5, + "abridged": true + }, "startup.mobile": { - "begin": 1, + "end": 3, "abridged": true } } }, "4": { "benchmarks": { + "startup.mobile": { + "abridged": true + }, "system_health.common_mobile": { - "end": 3, + "end": 2, "abridged": true } } @@ -58,8 +69,12 @@ "5": { "benchmarks": { "system_health.common_mobile": { - "begin": 3, - "end": 7, + "begin": 2, + "end": 3, + "abridged": true + }, + "startup.mobile": { + "end": 3, "abridged": true } } @@ -67,8 +82,12 @@ "6": { "benchmarks": { "system_health.common_mobile": { - "begin": 7, - "end": 11, + "begin": 3, + "end": 6, + "abridged": true + }, + "startup.mobile": { + "end": 3, "abridged": true } } @@ -76,11 +95,41 @@ "7": { "benchmarks": { "system_health.common_mobile": { + "begin": 6, + "end": 10, + "abridged": true + }, + "startup.mobile": { + "end": 3, + "abridged": true + } + } + }, + "8": { + "benchmarks": { + "system_health.common_mobile": { + "begin": 10, + "end": 11, + "abridged": true + }, + "startup.mobile": { + "end": 3, + "abridged": true + } + } + }, + "9": { + "benchmarks": { + "system_health.common_mobile": { "begin": 11, "abridged": true }, "system_health.webview_startup": { "abridged": false + }, + "startup.mobile": { + "end": 3, + "abridged": true } }, "executables": { @@ -91,17 +140,19 @@ }, "extra_infos": { "num_stories": 26, - "predicted_min_shard_time": 158.0, - "predicted_min_shard_index": 7, - "predicted_max_shard_time": 306.0, - "predicted_max_shard_index": 3, - "shard #0": 201.0, - "shard #1": 214.0, - "shard #2": 235.0, - "shard #3": 306.0, - "shard #4": 231.0, - "shard #5": 192.0, - "shard #6": 260.0, - "shard #7": 158.0 + "predicted_min_shard_time": 511.0, + "predicted_min_shard_index": 3, + "predicted_max_shard_time": 652.0, + "predicted_max_shard_index": 7, + "shard #0": 608.0, + "shard #1": 573.0, + "shard #2": 615.0, + "shard #3": 511.0, + "shard #4": 569.0, + "shard #5": 601.0, + "shard #6": 615.0, + "shard #7": 652.0, + "shard #8": 566.0, + "shard #9": 624.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json index 9700344..bbac682 100644 --- a/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json
@@ -1,34 +1,34 @@ [ { - "duration": "139.0", + "duration": "136.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "266.0", + "duration": "257.0", "name": "speedometer2/Speedometer2" }, { - "duration": "146.0", + "duration": "135.0", "name": "startup.mobile/cct:coldish:bbc" }, { - "duration": "147.0", + "duration": "136.0", "name": "startup.mobile/intent:coldish:bbc" }, { - "duration": "114.0", + "duration": "106.0", "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "107.0", + "duration": "100.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { - "duration": "43.0", + "duration": "44.0", "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "127.0", + "duration": "119.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { @@ -36,11 +36,11 @@ "name": "system_health.common_mobile/background:search:google:2019" }, { - "duration": "28.0", + "duration": "33.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "48.0", + "duration": "47.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { @@ -52,111 +52,111 @@ "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { - "duration": "97.0", + "duration": "94.0", "name": "system_health.common_mobile/browse:media:facebook_photos:2019" }, { - "duration": "64.0", + "duration": "61.0", "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "56.0", + "duration": "53.0", "name": "system_health.common_mobile/browse:media:googleplaystore:2019" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:media:imgur:2019" }, { - "duration": "81.0", + "duration": "77.0", "name": "system_health.common_mobile/browse:media:youtube:2019" }, { - "duration": "174.0", + "duration": "164.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { - "duration": "9.0", + "duration": "10.0", "name": "system_health.common_mobile/browse:news:cricbuzz:2019" }, { - "duration": "92.0", + "duration": "86.0", "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "201.0", + "duration": "184.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { - "duration": "55.0", + "duration": "54.0", "name": "system_health.common_mobile/browse:news:qq:2019" }, { - "duration": "112.0", + "duration": "107.0", "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "160.0", + "duration": "143.0", "name": "system_health.common_mobile/browse:news:toi:2019" }, { - "duration": "115.0", + "duration": "104.0", "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "33.0", + "duration": "31.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { - "duration": "33.0", + "duration": "31.0", "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { - "duration": "90.0", + "duration": "87.0", "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "83.0", + "duration": "80.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { - "duration": "89.0", + "duration": "87.0", "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { - "duration": "126.0", + "duration": "115.0", "name": "system_health.common_mobile/browse:shopping:lazada:2019" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:social:facebook:2019" }, { - "duration": "98.0", + "duration": "94.0", "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "106.0", + "duration": "101.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { - "duration": "4.0", + "duration": "6.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "101.0", + "duration": "96.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "101.0", + "duration": "99.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "94.0", + "duration": "84.0", "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "59.0", + "duration": "56.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { @@ -164,39 +164,39 @@ "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_mobile/load:games:lazors" }, { - "duration": "37.0", + "duration": "36.0", "name": "system_health.common_mobile/load:games:spychase:2018" }, { - "duration": "38.0", + "duration": "35.0", "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "31.0", + "duration": "29.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "27.0", + "duration": "26.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { - "duration": "32.0", + "duration": "30.0", "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "37.0", + "duration": "36.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { - "duration": "31.0", + "duration": "30.0", "name": "system_health.common_mobile/load:media:google_images:2018" }, { @@ -204,27 +204,27 @@ "name": "system_health.common_mobile/load:media:imgur:2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.common_mobile/load:media:soundcloud:2018" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "32.0", + "duration": "29.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "48.0", + "duration": "44.0", "name": "system_health.common_mobile/load:news:cnn:2020" }, { - "duration": "38.0", + "duration": "37.0", "name": "system_health.common_mobile/load:news:irctc:2019" }, { - "duration": "58.0", + "duration": "56.0", "name": "system_health.common_mobile/load:news:nytimes:2019" }, { @@ -244,19 +244,19 @@ "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { - "duration": "35.0", + "duration": "33.0", "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "38.0", + "duration": "36.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "29.0", + "duration": "27.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_mobile/load:search:google:2018" }, { @@ -264,7 +264,7 @@ "name": "system_health.common_mobile/load:search:taobao:2019" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.common_mobile/load:search:yahoo:2018" }, { @@ -284,23 +284,23 @@ "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "32.0", + "duration": "30.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "49.0", + "duration": "47.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { @@ -308,27 +308,27 @@ "name": "system_health.common_mobile/load:tools:weather:2019" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.common_mobile/long_running:tools:gmail-background" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.common_mobile/long_running:tools:gmail-foreground" }, { - "duration": "42.0", + "duration": "40.0", "name": "system_health.memory_mobile/background:media:imgur:2019" }, { - "duration": "118.0", + "duration": "112.0", "name": "system_health.memory_mobile/background:news:nytimes:2019" }, { - "duration": "39.0", + "duration": "37.0", "name": "system_health.memory_mobile/background:search:google:2019" }, { - "duration": "35.0", + "duration": "36.0", "name": "system_health.memory_mobile/background:social:facebook:2019" }, { @@ -336,63 +336,63 @@ "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "216.0", + "duration": "218.0", "name": "system_health.memory_mobile/browse:chrome:newtab:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" }, { - "duration": "98.0", + "duration": "95.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { - "duration": "67.0", + "duration": "66.0", "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "61.0", + "duration": "57.0", "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { - "duration": "100.0", + "duration": "96.0", "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { - "duration": "78.0", + "duration": "74.0", "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "4.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" }, { - "duration": "86.0", + "duration": "83.0", "name": "system_health.memory_mobile/browse:news:globo:2019" }, { - "duration": "188.0", + "duration": "172.0", "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { - "duration": "56.0", + "duration": "54.0", "name": "system_health.memory_mobile/browse:news:qq:2019" }, { - "duration": "107.0", + "duration": "103.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { - "duration": "146.0", + "duration": "128.0", "name": "system_health.memory_mobile/browse:news:toi:2019" }, { - "duration": "111.0", + "duration": "102.0", "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { @@ -400,35 +400,35 @@ "name": "system_health.memory_mobile/browse:search:amp:2018" }, { - "duration": "37.0", + "duration": "36.0", "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" }, { - "duration": "83.0", + "duration": "80.0", "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "78.0", + "duration": "75.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "86.0", + "duration": "83.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { - "duration": "110.0", + "duration": "102.0", "name": "system_health.memory_mobile/browse:shopping:lazada:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { - "duration": "97.0", + "duration": "96.0", "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "106.0", + "duration": "103.0", "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { @@ -436,119 +436,119 @@ "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "95.0", + "duration": "92.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "105.0", + "duration": "100.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "61.0", + "duration": "59.0", "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "31.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:chrome:blank" }, { - "duration": "31.0", + "duration": "30.0", "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:games:lazors" }, { - "duration": "40.0", + "duration": "39.0", "name": "system_health.memory_mobile/load:games:spychase:2018" }, { - "duration": "41.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:media:dailymotion:2019" }, { - "duration": "34.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "31.0", + "duration": "30.0", "name": "system_health.memory_mobile/load:media:facebook_photos:2019" }, { - "duration": "36.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "41.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "36.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "41.0", + "duration": "39.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "35.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "35.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:news:bbc:2019" }, { - "duration": "51.0", + "duration": "49.0", "name": "system_health.memory_mobile/load:news:cnn:2020" }, { - "duration": "44.0", + "duration": "40.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { - "duration": "60.0", + "duration": "58.0", "name": "system_health.memory_mobile/load:news:nytimes:2019" }, { - "duration": "36.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:news:qq:2019" }, { - "duration": "37.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:news:reddit:2019" }, { - "duration": "35.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:news:washingtonpost:2019" }, { - "duration": "35.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { - "duration": "39.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:search:amazon:2019" }, { - "duration": "40.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:search:baidu:2018" }, { - "duration": "33.0", + "duration": "32.0", "name": "system_health.memory_mobile/load:search:ebay:2018" }, { - "duration": "34.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:search:google:2018" }, { @@ -560,35 +560,35 @@ "name": "system_health.memory_mobile/load:search:yahoo:2018" }, { - "duration": "34.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:search:yandex:2018" }, { - "duration": "34.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:social:instagram:2019" }, { - "duration": "40.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:social:pinterest:2019" }, { - "duration": "34.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:social:twitter:2019" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:tools:docs:2019" }, { - "duration": "35.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:tools:drive:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/load:tools:dropbox:2019" }, { - "duration": "51.0", + "duration": "48.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { @@ -600,59 +600,59 @@ "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/long_running:tools:gmail-background" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/long_running:tools:gmail-foreground" }, { - "duration": "284.0", + "duration": "273.0", "name": "v8.browsing_mobile/browse:chrome:newtab:2019" }, { - "duration": "12.0", + "duration": "16.0", "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" }, { - "duration": "122.0", + "duration": "128.0", "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" }, { - "duration": "97.0", + "duration": "96.0", "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "77.0", + "duration": "69.0", "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" }, { - "duration": "159.0", + "duration": "145.0", "name": "v8.browsing_mobile/browse:media:imgur:2019" }, { - "duration": "112.0", + "duration": "108.0", "name": "v8.browsing_mobile/browse:media:youtube:2019" }, { - "duration": "14.0", + "duration": "21.0", "name": "v8.browsing_mobile/browse:news:cnn:2020" }, { - "duration": "14.0", + "duration": "12.0", "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" }, { - "duration": "117.0", + "duration": "118.0", "name": "v8.browsing_mobile/browse:news:globo:2019" }, { - "duration": "328.0", + "duration": "308.0", "name": "v8.browsing_mobile/browse:news:nytimes:2019" }, { - "duration": "71.0", + "duration": "73.0", "name": "v8.browsing_mobile/browse:news:qq:2019" }, { @@ -660,27 +660,27 @@ "name": "v8.browsing_mobile/browse:news:reddit:2019" }, { - "duration": "226.0", + "duration": "210.0", "name": "v8.browsing_mobile/browse:news:toi:2019" }, { - "duration": "157.0", + "duration": "151.0", "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" }, { - "duration": "52.0", + "duration": "50.0", "name": "v8.browsing_mobile/browse:search:amp:2018" }, { - "duration": "52.0", + "duration": "44.0", "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" }, { - "duration": "136.0", + "duration": "119.0", "name": "v8.browsing_mobile/browse:shopping:amazon:2019" }, { - "duration": "117.0", + "duration": "101.0", "name": "v8.browsing_mobile/browse:shopping:avito:2019" }, { @@ -688,39 +688,39 @@ "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" }, { - "duration": "175.0", + "duration": "172.0", "name": "v8.browsing_mobile/browse:shopping:lazada:2019" }, { - "duration": "14.0", + "duration": "21.0", "name": "v8.browsing_mobile/browse:social:facebook:2019" }, { - "duration": "138.0", + "duration": "133.0", "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "138.0", + "duration": "127.0", "name": "v8.browsing_mobile/browse:social:instagram:2019" }, { - "duration": "12.0", + "duration": "16.0", "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "133.0", + "duration": "131.0", "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "176.0", + "duration": "179.0", "name": "v8.browsing_mobile/browse:social:twitter:2019" }, { - "duration": "116.0", + "duration": "117.0", "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "84.0", + "duration": "75.0", "name": "v8.browsing_mobile/browse:tools:maps:2019" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json index 9fa7d5d..712c4be7 100644 --- a/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json
@@ -1,14 +1,14 @@ [ { - "duration": "23.0", + "duration": "22.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "27.0", + "duration": "25.0", "name": "blink_perf.accessibility/line-breaks.html" }, { @@ -16,23 +16,23 @@ "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { - "duration": "28.0", + "duration": "30.0", "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { - "duration": "29.0", + "duration": "27.0", "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" }, { - "duration": "29.0", + "duration": "28.0", "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "blink_perf.accessibility/textarea-append.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.bindings/append-child.html" }, { @@ -44,11 +44,11 @@ "name": "blink_perf.bindings/document-implementation.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.bindings/first-child.html" }, { @@ -68,11 +68,11 @@ "name": "blink_perf.bindings/get-attribute-rare.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/get-attribute.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/get-element-by-id.html" }, { @@ -96,7 +96,7 @@ "name": "blink_perf.bindings/insert-before.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.bindings/named-property-enumerator.html" }, { @@ -108,7 +108,7 @@ "name": "blink_perf.bindings/node-type.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.bindings/post-message.html" }, { @@ -116,7 +116,7 @@ "name": "blink_perf.bindings/sequence-conversion-array.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" }, { @@ -124,7 +124,7 @@ "name": "blink_perf.bindings/serialize-array.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.bindings/serialize-long-string.html" }, { @@ -132,139 +132,139 @@ "name": "blink_perf.bindings/serialize-map.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.bindings/serialize-nested-array.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.bindings/set-attribute-rare.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.bindings/set-attribute.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.bindings/structured-clone-json-deserialize.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.bindings/structured-clone-json-serialize.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.bindings/structured-clone-long-string-serialize.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.bindings/typed-array-construct-from-array.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.bindings/typed-array-construct-from-same-type.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.bindings/typed-array-construct-from-typed.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.bindings/typed-array-set-from-typed.html" }, { - "duration": "13.0", + "duration": "10.0", "name": "blink_perf.bindings/undefined-first-child.html" }, { - "duration": "13.0", + "duration": "9.0", "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { - "duration": "13.0", + "duration": "10.0", "name": "blink_perf.bindings/undefined-id-getter.html" }, { - "duration": "7.0", + "duration": "4.0", "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "26.0", + "duration": "23.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "26.0", + "duration": "23.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "26.0", + "duration": "23.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { - "duration": "10.0", + "duration": "6.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" }, { - "duration": "7.0", + "duration": "4.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" }, { - "duration": "14.0", + "duration": "10.0", "name": "blink_perf.bindings/worker-transferable-from-worker.html" }, { - "duration": "13.0", + "duration": "10.0", "name": "blink_perf.bindings/worker-transferable-roundtrip.html" }, { - "duration": "13.0", + "duration": "10.0", "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { - "duration": "22.0", + "duration": "18.0", "name": "blink_perf.css/AttributeDescendantSelector.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/CSSLogicalDirection.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.css/CSSPropertySetterGetter.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.css/CSSPropertySetterGetterMethods.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.css/CSSPropertyUpdateValue.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleChildClassSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleChildElementSelectors.html" }, { @@ -272,99 +272,99 @@ "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleShallowTree.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "blink_perf.css/ClassDescendantSelector.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.css/ClassInvalidation.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/CustomPropertiesCascade.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/CustomPropertiesDependency.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html" }, { - "duration": "8.0", + "duration": "5.0", "name": "blink_perf.css/CustomPropertiesPendingSubstitution.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/CustomPropertiesRootInheritance.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/CustomPropertiesVarAlias.html" }, { @@ -372,23 +372,23 @@ "name": "blink_perf.css/ExplicitInheritance.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.css/FocusUpdate.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/LoadBootstrapBlog.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/LoadMaterializeStarterPage.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/LoadSemanticPageExample.html" }, { - "duration": "15.0", + "duration": "11.0", "name": "blink_perf.css/PseudoClassSelectors.html" }, { @@ -396,11 +396,11 @@ "name": "blink_perf.css/SelectorCountScaling.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { - "duration": "10.0", + "duration": "15.0", "name": "blink_perf.dom/custom-element-default-style.html" }, { @@ -408,7 +408,7 @@ "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "10.0", + "duration": "7.0", "name": "blink_perf.dom/modify-element-classname.html" }, { @@ -416,11 +416,11 @@ "name": "blink_perf.dom/modify-element-id.html" }, { - "duration": "8.0", + "duration": "6.0", "name": "blink_perf.dom/modify-element-title.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.dom/select-multiple-add.html" }, { @@ -428,71 +428,71 @@ "name": "blink_perf.dom/select-single-add.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.dom/select-single-remove.html" }, { - "duration": "18.0", + "duration": "14.0", "name": "blink_perf.events/EventsDispatching.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { - "duration": "27.0", + "duration": "26.0", "name": "blink_perf.events/hit-test-lots-of-layers.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.events/is-input-pending-default-events.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.image_decoder/decode-gif.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v2.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.image_decoder/decode-jpeg-h2v1.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.image_decoder/decode-lossy-webp.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.image_decoder/decode-png-palette.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.image_decoder/decode-png.html" }, { @@ -508,23 +508,23 @@ "name": "blink_perf.layout/SimpleTextPathLineLayout.html" }, { - "duration": "31.0", + "duration": "30.0", "name": "blink_perf.layout/abspos.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/add-remove-inline-floats.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/animate-abspos-deep.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/attach-inlines-2.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/attach-inlines.html" }, { @@ -532,11 +532,11 @@ "name": "blink_perf.layout/auto-grid-lots-of-data.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" }, { - "duration": "69.0", + "duration": "68.0", "name": "blink_perf.layout/change-text-css-contain.html" }, { @@ -544,7 +544,7 @@ "name": "blink_perf.layout/chapter-reflow-once-random.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/chapter-reflow-once.html" }, { @@ -556,7 +556,7 @@ "name": "blink_perf.layout/chapter-reflow-twice.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/chapter-reflow.html" }, { @@ -568,7 +568,7 @@ "name": "blink_perf.layout/contain-content-style-change.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/culled-inline-bounding-rects.html" }, { @@ -576,7 +576,7 @@ "name": "blink_perf.layout/culled-inline-hittest.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/deeply-nested-grid.html" }, { @@ -584,7 +584,7 @@ "name": "blink_perf.layout/editing_append.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/editing_append_single_line.html" }, { @@ -600,7 +600,7 @@ "name": "blink_perf.layout/editing_prepend.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" }, { @@ -608,7 +608,7 @@ "name": "blink_perf.layout/fit-content-change-available-size-text.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/fixed-grid-lots-of-data.html" }, { @@ -616,19 +616,19 @@ "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-column-nowrap.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-column-wrap.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-hittest.html" }, { @@ -640,7 +640,7 @@ "name": "blink_perf.layout/flexbox-lots-of-data.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-row-nowrap.html" }, { @@ -652,75 +652,75 @@ "name": "blink_perf.layout/flexbox-row-stretch-height-indefinite.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/flexbox-row-wrap.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/flexbox-with-stretch-layout.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.layout/flexbox_with_list_item.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.layout/floats_100_100.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/floats_100_100_nested.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.layout/floats_10_1000.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/floats_20_100.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/floats_20_100_nested.html" }, { - "duration": "10.0", + "duration": "8.0", "name": "blink_perf.layout/floats_2_100.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/floats_2_100_nested.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/floats_50_100.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { - "duration": "10.0", + "duration": "8.0", "name": "blink_perf.layout/hittest-block-children.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.layout/japanese-kokoro-insert.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.layout/large-grid.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.layout/large-spanning-grid-item.html" }, { @@ -736,19 +736,19 @@ "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" }, { - "duration": "27.0", + "duration": "25.0", "name": "blink_perf.layout/latin-ebook-resize.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.layout/latin-ebook.html" }, { - "duration": "9.0", + "duration": "6.0", "name": "blink_perf.layout/layers_overlap_2d.html" }, { - "duration": "11.0", + "duration": "7.0", "name": "blink_perf.layout/layers_overlap_3d.html" }, { @@ -764,7 +764,7 @@ "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { @@ -828,11 +828,11 @@ "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { - "duration": "58.0", + "duration": "57.0", "name": "blink_perf.layout/multicol/nested-forced-breaks.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html" }, { @@ -860,7 +860,7 @@ "name": "blink_perf.layout/ruby.html" }, { - "duration": "106.0", + "duration": "105.0", "name": "blink_perf.layout/subtree-detaching.html" }, { @@ -880,75 +880,75 @@ "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "8.0", + "duration": "10.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "18.0", + "duration": "24.0", "name": "blink_perf.paint/appending-text.html" }, { - "duration": "3.0", + "duration": "7.0", "name": "blink_perf.paint/color-changes.html" }, { - "duration": "21.0", + "duration": "26.0", "name": "blink_perf.paint/complex-content-slow-scroll.html" }, { - "duration": "22.0", + "duration": "26.0", "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "71.0", + "duration": "74.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { - "duration": "27.0", + "duration": "31.0", "name": "blink_perf.paint/containment-resize.html" }, { - "duration": "20.0", + "duration": "25.0", "name": "blink_perf.paint/fixed-and-many-layers-scroll.html" }, { - "duration": "25.0", + "duration": "32.0", "name": "blink_perf.paint/large-table-background-change.html" }, { - "duration": "20.0", + "duration": "26.0", "name": "blink_perf.paint/large-table-collapsed-border-change.html" }, { - "duration": "14.0", + "duration": "18.0", "name": "blink_perf.paint/modify-selection.html" }, { - "duration": "17.0", + "duration": "21.0", "name": "blink_perf.paint/move-text-with-mask.html" }, { - "duration": "19.0", + "duration": "23.0", "name": "blink_perf.paint/paint-offset-changes.html" }, { - "duration": "19.0", + "duration": "24.0", "name": "blink_perf.paint/transform-changes.html" }, { @@ -960,23 +960,23 @@ "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/html-parser-threaded.html" }, { - "duration": "27.0", + "duration": "28.0", "name": "blink_perf.parser/html-parser.html" }, { - "duration": "112.0", + "duration": "113.0", "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "24.0", + "duration": "23.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { @@ -984,67 +984,67 @@ "name": "blink_perf.parser/innerHTML-setter-siblings.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.parser/innerHTML-setter.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-all-attribute-complex.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-all-attribute.html" }, { - "duration": "0.0", + "duration": "1.0", "name": "blink_perf.parser/query-selector-all-class-deep.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-class-first.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-class-last.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-class.html" }, { - "duration": "0.0", + "duration": "1.0", "name": "blink_perf.parser/query-selector-all-deep.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-first.html" }, { - "duration": "0.0", + "duration": "1.0", "name": "blink_perf.parser/query-selector-all-id-deep.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-id-first.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-id-last.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-last.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-deep.html" }, { - "duration": "10.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-first.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.parser/query-selector-id-deep.html" }, { @@ -1056,7 +1056,7 @@ "name": "blink_perf.parser/query-selector-last.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/simple-url.html" }, { @@ -1064,15 +1064,15 @@ "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.parser/url-parser.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.parser/xml-parser.html" }, { @@ -1104,7 +1104,7 @@ "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html" }, { @@ -1120,6 +1120,10 @@ "name": "blink_perf.shadow_dom/imperative-api.html" }, { + "duration": "23.0", + "name": "blink_perf.shadow_dom/shadow-dom-overhead.html" + }, + { "duration": "6.0", "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html" }, @@ -1156,7 +1160,7 @@ "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { @@ -1184,11 +1188,11 @@ "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html" }, { @@ -1196,7 +1200,7 @@ "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html" }, { @@ -1204,7 +1208,7 @@ "name": "blink_perf.shadow_dom/v1-slot-append.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html" }, { @@ -1248,11 +1252,11 @@ "name": "blink_perf.svg/Debian.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/DropsOnABlade.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/FlowerFromMyGarden.html" }, { @@ -1264,7 +1268,7 @@ "name": "blink_perf.svg/France.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html" }, { @@ -1276,7 +1280,7 @@ "name": "blink_perf.svg/HarveyRayner.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/HereGear.html" }, { @@ -1284,7 +1288,7 @@ "name": "blink_perf.svg/MtSaintHelens.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/Samurai.html" }, { @@ -1296,11 +1300,11 @@ "name": "blink_perf.svg/SvgCubics.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.svg/SvgHitTesting.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.svg/SvgNestedUse.html" }, { @@ -1316,26 +1320,34 @@ "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "104.0", + "duration": "105.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "107.0", + "duration": "126.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "114.0", + "duration": "134.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "52.0", + "duration": "59.0", "name": "blink_perf.webaudio/panner-node.html" }, { + "duration": "9.0", + "name": "blink_perf.webgl/binding-draw-arrays.html" + }, + { + "duration": "9.0", + "name": "blink_perf.webgl_fast_call/binding-draw-arrays.html" + }, + { "duration": "38.0", "name": "dromaeo/http://dromaeo.com?dom-attr" }, @@ -1344,7 +1356,7 @@ "name": "dromaeo/http://dromaeo.com?dom-modify" }, { - "duration": "52.0", + "duration": "50.0", "name": "dromaeo/http://dromaeo.com?dom-query" }, { @@ -1356,7 +1368,7 @@ "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" }, { @@ -1364,443 +1376,443 @@ "name": "jetstream/JetStream" }, { - "duration": "472.0", + "duration": "478.0", "name": "jetstream2/JetStream2" }, { - "duration": "57.0", + "duration": "56.0", "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "loading.mobile/58Pic" }, { - "duration": "20.0", + "duration": "22.0", "name": "loading.mobile/58Pic_3g" }, { - "duration": "14.0", + "duration": "13.0", "name": "loading.mobile/Amazon" }, { - "duration": "29.0", + "duration": "27.0", "name": "loading.mobile/Amazon_3g" }, { - "duration": "14.0", + "duration": "13.0", "name": "loading.mobile/BOLNoticias" }, { - "duration": "23.0", + "duration": "22.0", "name": "loading.mobile/BOLNoticias_3g" }, { - "duration": "12.0", + "duration": "11.0", "name": "loading.mobile/Baidu" }, { - "duration": "20.0", + "duration": "19.0", "name": "loading.mobile/Baidu_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/Bradesco" }, { - "duration": "2.0", + "duration": "4.0", "name": "loading.mobile/Bradesco_3g" }, { - "duration": "16.0", + "duration": "19.0", "name": "loading.mobile/Dailymotion" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/Dailymotion_3g" }, { - "duration": "13.0", + "duration": "16.0", "name": "loading.mobile/Dawn" }, { - "duration": "2.0", + "duration": "4.0", "name": "loading.mobile/Dawn_3g" }, { - "duration": "14.0", + "duration": "18.0", "name": "loading.mobile/DevOpera_cold" }, { - "duration": "19.0", + "duration": "23.0", "name": "loading.mobile/DevOpera_cold_3g" }, { - "duration": "19.0", + "duration": "23.0", "name": "loading.mobile/DevOpera_hot" }, { - "duration": "20.0", + "duration": "23.0", "name": "loading.mobile/DevOpera_hot_3g" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/DevOpera_warm" }, { - "duration": "17.0", + "duration": "21.0", "name": "loading.mobile/DevOpera_warm_3g" }, { - "duration": "14.0", + "duration": "17.0", "name": "loading.mobile/Dramaq" }, { - "duration": "48.0", + "duration": "50.0", "name": "loading.mobile/Dramaq_3g" }, { - "duration": "14.0", + "duration": "17.0", "name": "loading.mobile/EnquiryIndianRail" }, { - "duration": "16.0", + "duration": "20.0", "name": "loading.mobile/EnquiryIndianRail_3g" }, { - "duration": "13.0", + "duration": "11.0", "name": "loading.mobile/Facebook" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/Facebook_3g" }, { - "duration": "15.0", + "duration": "19.0", "name": "loading.mobile/FlipBoard_cold" }, { - "duration": "39.0", + "duration": "42.0", "name": "loading.mobile/FlipBoard_cold_3g" }, { - "duration": "21.0", + "duration": "20.0", "name": "loading.mobile/FlipBoard_hot" }, { - "duration": "22.0", + "duration": "20.0", "name": "loading.mobile/FlipBoard_hot_3g" }, { - "duration": "18.0", + "duration": "20.0", "name": "loading.mobile/FlipBoard_warm" }, { - "duration": "19.0", + "duration": "18.0", "name": "loading.mobile/FlipBoard_warm_3g" }, { - "duration": "16.0", + "duration": "20.0", "name": "loading.mobile/FlipKart_cold" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/FlipKart_cold_3g" }, { - "duration": "19.0", + "duration": "23.0", "name": "loading.mobile/FlipKart_hot" }, { - "duration": "21.0", + "duration": "24.0", "name": "loading.mobile/FlipKart_hot_3g" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/FlipKart_warm" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/FlipKart_warm_3g" }, { - "duration": "11.0", + "duration": "14.0", "name": "loading.mobile/FranceTVInfo" }, { - "duration": "19.0", + "duration": "21.0", "name": "loading.mobile/FranceTVInfo_3g" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/G1" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/G1_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/GSShop" }, { - "duration": "2.0", + "duration": "4.0", "name": "loading.mobile/GSShop_3g" }, { - "duration": "10.0", + "duration": "9.0", "name": "loading.mobile/GoogleBrazil" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.mobile/GoogleBrazil_3g" }, { - "duration": "11.0", + "duration": "9.0", "name": "loading.mobile/GoogleIndia" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/GoogleIndia_3g" }, { - "duration": "12.0", + "duration": "11.0", "name": "loading.mobile/GoogleIndonesia" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.mobile/GoogleIndonesia_3g" }, { - "duration": "14.0", + "duration": "12.0", "name": "loading.mobile/GoogleRedirectToGoogleJapan" }, { - "duration": "16.0", + "duration": "15.0", "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g" }, { - "duration": "12.0", + "duration": "16.0", "name": "loading.mobile/Hongkiat" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.mobile/Hongkiat_3g" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/KapanLagi" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/KapanLagi_3g" }, { - "duration": "18.0", + "duration": "22.0", "name": "loading.mobile/Kaskus" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/Kaskus_3g" }, { - "duration": "12.0", + "duration": "17.0", "name": "loading.mobile/LocalMoxie" }, { - "duration": "2.0", + "duration": "4.0", "name": "loading.mobile/LocalMoxie_3g" }, { - "duration": "11.0", + "duration": "14.0", "name": "loading.mobile/Locanto" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/Locanto_3g" }, { - "duration": "14.0", + "duration": "17.0", "name": "loading.mobile/OLX" }, { - "duration": "25.0", + "duration": "28.0", "name": "loading.mobile/OLX_3g" }, { - "duration": "11.0", + "duration": "9.0", "name": "loading.mobile/QQNews" }, { - "duration": "28.0", + "duration": "32.0", "name": "loading.mobile/QQNews_3g" }, { - "duration": "10.0", + "duration": "13.0", "name": "loading.mobile/SlideShare" }, { - "duration": "19.0", + "duration": "21.0", "name": "loading.mobile/SlideShare_3g" }, { - "duration": "14.0", + "duration": "18.0", "name": "loading.mobile/Suumo_cold" }, { - "duration": "15.0", + "duration": "18.0", "name": "loading.mobile/Suumo_cold_3g" }, { - "duration": "19.0", + "duration": "23.0", "name": "loading.mobile/Suumo_hot" }, { - "duration": "19.0", + "duration": "23.0", "name": "loading.mobile/Suumo_hot_3g" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/Suumo_warm" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/Suumo_warm_3g" }, { - "duration": "10.0", + "duration": "14.0", "name": "loading.mobile/Thairath" }, { - "duration": "2.0", + "duration": "4.0", "name": "loading.mobile/Thairath_3g" }, { - "duration": "13.0", + "duration": "18.0", "name": "loading.mobile/TheStar" }, { - "duration": "2.0", + "duration": "4.0", "name": "loading.mobile/TheStar_3g" }, { - "duration": "15.0", + "duration": "13.0", "name": "loading.mobile/TribunNews" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/TribunNews_3g" }, { - "duration": "13.0", + "duration": "16.0", "name": "loading.mobile/Twitter" }, { - "duration": "16.0", + "duration": "20.0", "name": "loading.mobile/Twitter_3g" }, { - "duration": "15.0", + "duration": "18.0", "name": "loading.mobile/VoiceMemos_cold" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/VoiceMemos_cold_3g" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/VoiceMemos_hot" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/VoiceMemos_hot_3g" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/VoiceMemos_warm" }, { - "duration": "5.0", + "duration": "9.0", "name": "loading.mobile/VoiceMemos_warm_3g" }, { - "duration": "10.0", + "duration": "9.0", "name": "loading.mobile/Wikipedia" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.mobile/Wikipedia_3g" }, { - "duration": "13.0", + "duration": "12.0", "name": "loading.mobile/YahooNews" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/YahooNews_3g" }, { - "duration": "12.0", + "duration": "11.0", "name": "loading.mobile/Youtube" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/Youtube_3g" }, { - "duration": "14.0", + "duration": "13.0", "name": "media.mobile/mse.html?media=aac_audio.mp4" }, { - "duration": "14.0", + "duration": "13.0", "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4" }, { - "duration": "14.0", + "duration": "13.0", "name": "media.mobile/mse.html?media=h264_video.mp4" }, { - "duration": "14.0", + "duration": "13.0", "name": "media.mobile/mse.html?media=tulip2.vp9.webm" }, { - "duration": "133.0", + "duration": "136.0", "name": "media.mobile/video.html?src=boat_1080p60fps_vp9.webm" }, { - "duration": "133.0", + "duration": "136.0", "name": "media.mobile/video.html?src=foodmarket_720p30fps.mp4" }, { - "duration": "26.0", + "duration": "29.0", "name": "media.mobile/video.html?src=tulip2.m4a&type=audio" }, { - "duration": "26.0", + "duration": "29.0", "name": "media.mobile/video.html?src=tulip2.mp3&type=audio" }, { - "duration": "10.0", + "duration": "9.0", "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek" }, { - "duration": "27.0", + "duration": "30.0", "name": "media.mobile/video.html?src=tulip2.mp4" }, { - "duration": "27.0", + "duration": "30.0", "name": "media.mobile/video.html?src=tulip2.mp4&busyjs" }, { - "duration": "30.0", + "duration": "32.0", "name": "media.mobile/video.html?src=tulip2.ogg&type=audio" }, { - "duration": "10.0", + "duration": "12.0", "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek" }, { - "duration": "27.0", + "duration": "30.0", "name": "media.mobile/video.html?src=tulip2.vp9.webm" }, { @@ -1808,19 +1820,19 @@ "name": "media.mobile/video.html?src=tulip2.vp9.webm&background" }, { - "duration": "28.0", + "duration": "31.0", "name": "media.mobile/video.html?src=tulip2.vp9.webm_WiFi" }, { - "duration": "55.0", + "duration": "54.0", "name": "octane/Octane" }, { - "duration": "24.0", + "duration": "26.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html" }, { @@ -1840,19 +1852,19 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" }, { - "duration": "33.0", + "duration": "26.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html" }, { - "duration": "26.0", + "duration": "25.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html" }, { - "duration": "21.0", + "duration": "22.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html" }, { @@ -1860,7 +1872,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html" }, { - "duration": "23.0", + "duration": "22.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html" }, { @@ -1896,7 +1908,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html" }, { - "duration": "19.0", + "duration": "24.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html" }, { @@ -1908,7 +1920,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" }, { @@ -1916,19 +1928,19 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/accu_weather_2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/accu_weather_mobile_pinch_2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.mobile/amazon_2018" }, { - "duration": "26.0", + "duration": "22.0", "name": "rendering.mobile/amazon_mobile_2018" }, { @@ -1936,7 +1948,7 @@ "name": "rendering.mobile/analog_clock_svg" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/androidpolice_mobile_2018" }, { @@ -1944,11 +1956,11 @@ "name": "rendering.mobile/animometer_webgl" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/animometer_webgl_attrib_arrays" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/animometer_webgl_multi_draw" }, { @@ -1956,11 +1968,11 @@ "name": "rendering.mobile/aquarium" }, { - "duration": "5.0", + "duration": "4.0", "name": "rendering.mobile/aquarium_20k" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/background_color_animation" }, { @@ -1968,27 +1980,27 @@ "name": "rendering.mobile/background_color_animation_with_gradient" }, { - "duration": "16.0", + "duration": "15.0", "name": "rendering.mobile/baidu_mobile_2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/balls_css_key_frame_animations" }, { - "duration": "5.0", + "duration": "4.0", "name": "rendering.mobile/balls_css_key_frame_animations_composited_transform" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/balls_css_transition_2_properties" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/balls_css_transition_40_properties" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/balls_css_transition_all_properties" }, { @@ -1996,19 +2008,19 @@ "name": "rendering.mobile/balls_javascript_canvas" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/balls_javascript_css" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/balls_svg_animations" }, { - "duration": "26.0", + "duration": "22.0", "name": "rendering.mobile/basic_stream" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.mobile/bing_mobile_2018" }, { @@ -2016,463 +2028,463 @@ "name": "rendering.mobile/blob" }, { - "duration": "16.0", + "duration": "19.0", "name": "rendering.mobile/blogspot_2018" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/blogspot_mobile_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.mobile/blur_rotating_background" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.mobile/boingboing_mobile_2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.mobile/booking.com_2018" }, { - "duration": "13.0", + "duration": "12.0", "name": "rendering.mobile/booking.com_mobile_2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.mobile/bouncing_balls_15" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/bouncing_balls_shadow" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/bouncing_clipped_rectangles" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/bouncing_gradient_circles" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.mobile/bouncing_png_images" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/bouncing_svg_images" }, { - "duration": "32.0", + "duration": "25.0", "name": "rendering.mobile/camera_to_webgl" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/canvas2d_to_texture.html" }, { - "duration": "39.0", + "duration": "36.0", "name": "rendering.mobile/canvas_05000_pixels_per_second" }, { - "duration": "35.0", + "duration": "36.0", "name": "rendering.mobile/canvas_10000_pixels_per_second" }, { - "duration": "42.0", + "duration": "36.0", "name": "rendering.mobile/canvas_20000_pixels_per_second" }, { - "duration": "36.0", + "duration": "32.0", "name": "rendering.mobile/canvas_40000_pixels_per_second" }, { - "duration": "34.0", + "duration": "31.0", "name": "rendering.mobile/canvas_60000_pixels_per_second" }, { - "duration": "34.0", + "duration": "31.0", "name": "rendering.mobile/canvas_75000_pixels_per_second" }, { - "duration": "35.0", + "duration": "31.0", "name": "rendering.mobile/canvas_90000_pixels_per_second" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/canvas_animation_no_clear" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/canvas_arcs" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/canvas_font_cycler" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/canvas_lines" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/canvas_to_blob" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/canvas_to_canvas_draw" }, { - "duration": "33.0", + "duration": "20.0", "name": "rendering.mobile/capitolvolkswagen_mobile_2018" }, { - "duration": "18.0", + "duration": "15.0", "name": "rendering.mobile/card_expansion" }, { - "duration": "19.0", + "duration": "16.0", "name": "rendering.mobile/card_expansion_animated" }, { - "duration": "20.0", + "duration": "16.0", "name": "rendering.mobile/card_expansion_images_text" }, { - "duration": "18.0", + "duration": "15.0", "name": "rendering.mobile/card_flying" }, { - "duration": "18.0", + "duration": "16.0", "name": "rendering.mobile/cats_unscaled" }, { - "duration": "17.0", + "duration": "15.0", "name": "rendering.mobile/cats_viewport_width" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/cc_poster_circle" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/cc_scroll_text_only" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/chip_tune" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.mobile/cnn_2018" }, { - "duration": "23.0", + "duration": "17.0", "name": "rendering.mobile/cnn_article_mobile_2018" }, { - "duration": "21.0", + "duration": "15.0", "name": "rendering.mobile/cnn_mobile_2018" }, { - "duration": "29.0", + "duration": "21.0", "name": "rendering.mobile/cnn_mobile_pinch_2018" }, { - "duration": "23.0", + "duration": "17.0", "name": "rendering.mobile/cnn_pathological_2018" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/compositor_heavy_animation" }, { - "duration": "20.0", + "duration": "17.0", "name": "rendering.mobile/coordinated_animation" }, { - "duration": "7.0", + "duration": "4.0", "name": "rendering.mobile/core_scroll_header_panel" }, { - "duration": "25.0", + "duration": "21.0", "name": "rendering.mobile/crafty_mind" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/css_animations_many_keyframes" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/css_animations_simultaneous_inline_style" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/css_animations_simultaneous_new_element" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/css_animations_simultaneous_style_element" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/css_animations_simultaneous_updating_class" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/css_animations_staggered_infinite_iterations" }, { - "duration": "25.0", + "duration": "21.0", "name": "rendering.mobile/css_animations_staggered_inline_style" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/css_animations_staggered_new_element" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/css_animations_staggered_style_element" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/css_animations_staggered_updating_class" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/css_animations_triggered_inline_style" }, { - "duration": "25.0", + "duration": "21.0", "name": "rendering.mobile/css_animations_triggered_new_element" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/css_animations_triggered_style_element" }, { - "duration": "25.0", + "duration": "21.0", "name": "rendering.mobile/css_animations_triggered_updating_class" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/css_opacity_plus_n_layers_0" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/css_opacity_plus_n_layers_75" }, { - "duration": "29.0", + "duration": "23.0", "name": "rendering.mobile/css_opacity_plus_n_layers_99" }, { - "duration": "24.0", + "duration": "35.0", "name": "rendering.mobile/css_transitions_inline_style" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_new_element" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_staggered_inline_style" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_staggered_new_element" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_staggered_style_element" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_staggered_updating_class" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_style_element" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_triggered_inline_style" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_triggered_new_element" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_triggered_style_element" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_triggered_updating_class" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_transitions_updating_class" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_value_type_color" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_value_type_filter" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_value_type_length" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_value_type_length_complex" }, { - "duration": "24.0", + "duration": "33.0", "name": "rendering.mobile/css_value_type_length_simple" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/css_value_type_path" }, { - "duration": "28.0", + "duration": "32.0", "name": "rendering.mobile/css_value_type_shadow" }, { - "duration": "26.0", + "duration": "33.0", "name": "rendering.mobile/css_value_type_transform_complex" }, { - "duration": "26.0", + "duration": "35.0", "name": "rendering.mobile/css_value_type_transform_simple" }, { - "duration": "31.0", + "duration": "39.0", "name": "rendering.mobile/deviantart_mobile_2018" }, { - "duration": "21.0", + "duration": "28.0", "name": "rendering.mobile/digg_mobile_2018" }, { - "duration": "26.0", + "duration": "32.0", "name": "rendering.mobile/docs_paper.html" }, { - "duration": "25.0", + "duration": "32.0", "name": "rendering.mobile/docs_resume.html" }, { - "duration": "25.0", + "duration": "34.0", "name": "rendering.mobile/docs_table.html" }, { - "duration": "25.0", + "duration": "35.0", "name": "rendering.mobile/draw_image" }, { - "duration": "25.0", + "duration": "32.0", "name": "rendering.mobile/draw_image_not_pixel_aligned" }, { - "duration": "25.0", + "duration": "34.0", "name": "rendering.mobile/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "29.0", + "duration": "36.0", "name": "rendering.mobile/dynamic_cube_map" }, { - "duration": "25.0", + "duration": "32.0", "name": "rendering.mobile/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "28.0", + "duration": "35.0", "name": "rendering.mobile/earth" }, { - "duration": "21.0", + "duration": "28.0", "name": "rendering.mobile/ebay_2018" }, { - "duration": "19.0", + "duration": "27.0", "name": "rendering.mobile/ebay_mobile_2018" }, { - "duration": "24.0", + "duration": "31.0", "name": "rendering.mobile/ebay_mobile_pinch_2018" }, { - "duration": "33.0", + "duration": "41.0", "name": "rendering.mobile/ebay_scroll_2018" }, { - "duration": "28.0", + "duration": "35.0", "name": "rendering.mobile/effect_games" }, { - "duration": "26.0", + "duration": "33.0", "name": "rendering.mobile/espn_2018" }, { - "duration": "19.0", + "duration": "26.0", "name": "rendering.mobile/espn_mobile_2018" }, { - "duration": "21.0", + "duration": "30.0", "name": "rendering.mobile/espn_pathological_2018" }, { - "duration": "26.0", + "duration": "33.0", "name": "rendering.mobile/extra_large_texture_uploads" }, { - "duration": "21.0", + "duration": "28.0", "name": "rendering.mobile/facebook_2018" }, { - "duration": "24.0", + "duration": "33.0", "name": "rendering.mobile/facebook_mobile_2018" }, { - "duration": "25.0", + "duration": "32.0", "name": "rendering.mobile/falling_particle_simulation_cpu.html" }, { - "duration": "25.0", + "duration": "33.0", "name": "rendering.mobile/falling_particle_simulation_gpu.html" }, { - "duration": "7.0", + "duration": "4.0", "name": "rendering.mobile/famo_us_twitter_demo" }, { - "duration": "25.0", + "duration": "33.0", "name": "rendering.mobile/fill_clear_rect.html" }, { - "duration": "25.0", + "duration": "34.0", "name": "rendering.mobile/fill_shapes" }, { - "duration": "28.0", + "duration": "36.0", "name": "rendering.mobile/filter_terrain_svg" }, { - "duration": "31.0", + "duration": "38.0", "name": "rendering.mobile/flickr_scroll_2018" }, { - "duration": "20.0", + "duration": "17.0", "name": "rendering.mobile/font_wipe" }, { - "duration": "19.0", + "duration": "28.0", "name": "rendering.mobile/forecast.io_mobile_2018" }, { @@ -2480,123 +2492,123 @@ "name": "rendering.mobile/geo_apis" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.mobile/get_image_data_cpu.html" }, { - "duration": "25.0", + "duration": "23.0", "name": "rendering.mobile/get_image_data_gpu.html" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/gmail_2018" }, { - "duration": "17.0", + "duration": "15.0", "name": "rendering.mobile/google_calendar_2018" }, { - "duration": "25.0", + "duration": "23.0", "name": "rendering.mobile/google_docs_2018" }, { - "duration": "22.0", + "duration": "19.0", "name": "rendering.mobile/google_image_search_2018" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/google_image_search_mobile_2018" }, { - "duration": "21.0", + "duration": "17.0", "name": "rendering.mobile/google_news_ios" }, { - "duration": "20.0", + "duration": "18.0", "name": "rendering.mobile/google_news_mobile_2018" }, { - "duration": "22.0", + "duration": "20.0", "name": "rendering.mobile/google_plus_2018" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/google_plus_mobile_2018" }, { - "duration": "22.0", + "duration": "20.0", "name": "rendering.mobile/google_search_mobile_pinch_2018" }, { - "duration": "20.0", + "duration": "17.0", "name": "rendering.mobile/google_web_search_2018" }, { - "duration": "22.0", + "duration": "19.0", "name": "rendering.mobile/google_web_search_mobile_2018" }, { - "duration": "25.0", + "duration": "23.0", "name": "rendering.mobile/gpu_bound_shader.html" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/gsp.ro_mobile_2018" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/guardian_pathological_2018" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/guimark_vector_chart" }, { - "duration": "23.0", + "duration": "21.0", "name": "rendering.mobile/gws_boogie_expansion" }, { - "duration": "23.0", + "duration": "21.0", "name": "rendering.mobile/gws_google_expansion" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.mobile/hakim" }, { - "duration": "19.0", + "duration": "16.0", "name": "rendering.mobile/horizontal_vertical_expansion" }, { - "duration": "25.0", + "duration": "23.0", "name": "rendering.mobile/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "rendering.mobile/idle_power_animated_gif" }, { - "duration": "33.0", + "duration": "32.0", "name": "rendering.mobile/idle_power_blank" }, { - "duration": "7.0", + "duration": "4.0", "name": "rendering.mobile/idle_power_css_animation" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/idle_power_request_animation_frame" }, { - "duration": "11.0", + "duration": "19.0", "name": "rendering.mobile/idle_power_set_timeout_long" }, { - "duration": "11.0", + "duration": "19.0", "name": "rendering.mobile/idle_power_set_timetout" }, { - "duration": "36.0", + "duration": "31.0", "name": "rendering.mobile/ie_chalkboard" }, { @@ -2604,27 +2616,27 @@ "name": "rendering.mobile/ie_pirate_mark" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_0" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_75" }, { - "duration": "29.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_99" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99" }, { @@ -2632,67 +2644,67 @@ "name": "rendering.mobile/infinite_scroll_root_n_layers_0" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_75" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_99" }, { - "duration": "22.0", + "duration": "19.0", "name": "rendering.mobile/infinite_scrolling" }, { - "duration": "28.0", + "duration": "24.0", "name": "rendering.mobile/jarro_doverson" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.mobile/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.mobile/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "28.0", + "duration": "27.0", "name": "rendering.mobile/js_full_screen_invalidation" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/js_opacity_plus_n_layers_0" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/js_opacity_plus_n_layers_75" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/js_opacity_plus_n_layers_99" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/js_paint_plus_n_layers_0" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/js_paint_plus_n_layers_75" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/js_paint_plus_n_layers_99" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/js_poster_circle" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.mobile/js_scroll_text_only" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/kevs_3d" }, { @@ -2700,15 +2712,15 @@ "name": "rendering.mobile/keyframed_animations" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/large_texture_uploads" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/latimes_pathological_2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.mobile/linkedin_2018" }, { @@ -2716,7 +2728,7 @@ "name": "rendering.mobile/linkedin_mobile_2018" }, { - "duration": "36.0", + "duration": "35.0", "name": "rendering.mobile/linkedin_mobile_pinch_2018" }, { @@ -2724,63 +2736,63 @@ "name": "rendering.mobile/linkedin_pathological_2018" }, { - "duration": "17.0", + "duration": "14.0", "name": "rendering.mobile/list_animation_simple" }, { - "duration": "23.0", + "duration": "20.0", "name": "rendering.mobile/list_recycle_transform" }, { - "duration": "60.0", + "duration": "59.0", "name": "rendering.mobile/lost_crypt" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/main_0fps_impl_60fps" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/main_0fps_with_jank_impl_0fps" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/main_15fps_impl_0fps" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/main_15fps_with_jank_impl_0fps" }, { - "duration": "26.0", + "duration": "22.0", "name": "rendering.mobile/main_30fps_impl_0fps" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/main_30fps_impl_60fps" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/main_60fps_impl_0fps" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/main_60fps_impl_60fps" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update_jank" }, { @@ -2788,23 +2800,23 @@ "name": "rendering.mobile/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/main_60fps_with_jank_and_delay_impl_60fps" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/main_60fps_with_jank_impl_0fps" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/main_animations_half_presented" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/man_in_blue" }, { - "duration": "7.0", + "duration": "6.0", "name": "rendering.mobile/many_images" }, { @@ -2812,15 +2824,15 @@ "name": "rendering.mobile/many_planets_deep" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/maps_perf_test" }, { - "duration": "20.0", + "duration": "16.0", "name": "rendering.mobile/mask_transition_animation" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.mobile/masonry" }, { @@ -2828,87 +2840,87 @@ "name": "rendering.mobile/medium_texture_uploads" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/megi_dish" }, { - "duration": "66.0", + "duration": "59.0", "name": "rendering.mobile/microgame_fps" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/microsoft_asteroid_belt" }, { - "duration": "7.0", + "duration": "6.0", "name": "rendering.mobile/microsoft_fireflies" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/microsoft_fish_ie_tank" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/microsoft_performance" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/microsoft_snow" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/microsoft_speed_reading" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/microsoft_tweet_map" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/microsoft_video_city" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/microsoft_worker_fountains" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/mix_10k" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/mix_blend_mode_animation_difference" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/mix_blend_mode_animation_hue" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/mix_blend_mode_animation_screen" }, { - "duration": "29.0", + "duration": "28.0", "name": "rendering.mobile/mlb_mobile_2018" }, { - "duration": "18.0", + "duration": "15.0", "name": "rendering.mobile/mobile_news_sandbox" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/motion_mark_canvas_fill_shapes" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/motion_mark_canvas_stroke_shapes" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_anim_design_15" }, { @@ -2916,451 +2928,451 @@ "name": "rendering.mobile/motionmark_anim_focus_25" }, { - "duration": "22.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_anim_images_50" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_anim_leaves_250" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_anim_multiply_175" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_anim_suits_125" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_composited_transforms_125" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_focus_20_15" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_html_leaves_20_50" }, { - "duration": "23.0", + "duration": "19.0", "name": "rendering.mobile/motionmark_svg_bouncing_circles_250" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200" }, { - "duration": "22.0", + "duration": "18.0", "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200" }, { - "duration": "23.0", + "duration": "19.0", "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/new_tilings" }, { - "duration": "25.0", + "duration": "21.0", "name": "rendering.mobile/no_op_raf" }, { - "duration": "21.0", + "duration": "17.0", "name": "rendering.mobile/no_op_scroll" }, { - "duration": "20.0", + "duration": "16.0", "name": "rendering.mobile/no_op_settimeout" }, { - "duration": "21.0", + "duration": "17.0", "name": "rendering.mobile/no_op_touch_handler" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/nvidia_vertex_buffer_object" }, { - "duration": "31.0", + "duration": "38.0", "name": "rendering.mobile/nyc_gov_scroll_2018" }, { - "duration": "32.0", + "duration": "27.0", "name": "rendering.mobile/nytimes_mobile_2018" }, { - "duration": "30.0", + "duration": "39.0", "name": "rendering.mobile/nytimes_scroll_2018" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/off_screen_main_60fps" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/off_screen_main_60fps_jank" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/overlay_background_color_css_transitions_page" }, { - "duration": "7.0", + "duration": "4.0", "name": "rendering.mobile/paper_button" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/paper_calculator" }, { - "duration": "7.0", + "duration": "4.0", "name": "rendering.mobile/paper_calculator_hit_test" }, { - "duration": "7.0", + "duration": "4.0", "name": "rendering.mobile/paper_checkbox" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/paper_fab" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/paper_icon_button" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/paper_shadow" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/paper_tabs" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/paper_toggle_button" }, { - "duration": "20.0", + "duration": "16.0", "name": "rendering.mobile/parallax_effect" }, { - "duration": "26.0", + "duration": "30.0", "name": "rendering.mobile/particles" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/pbs_pathological_2018" }, { - "duration": "17.0", + "duration": "13.0", "name": "rendering.mobile/physical_simulation" }, { - "duration": "28.0", + "duration": "27.0", "name": "rendering.mobile/pinterest_2018" }, { - "duration": "14.0", + "duration": "22.0", "name": "rendering.mobile/pinterest_mobile_2018" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/polymer_topeka" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/put_and_create_imagebitmap_from_imagedata" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/put_get_image_data" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/put_image_data.html" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/raf" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/raf_animation" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/raf_canvas" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/raf_touch_animation" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/recode_pathological_2018" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/reddit_mobile_2018" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/runway_2019" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/san_angeles" }, { - "duration": "20.0", + "duration": "28.0", "name": "rendering.mobile/second_batch_js_heavy" }, { - "duration": "19.0", + "duration": "27.0", "name": "rendering.mobile/second_batch_js_light" }, { - "duration": "19.0", + "duration": "29.0", "name": "rendering.mobile/second_batch_js_medium" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/sfgate_mobile_2018" }, { - "duration": "28.0", + "duration": "35.0", "name": "rendering.mobile/sheets_render.html" }, { - "duration": "30.0", + "duration": "37.0", "name": "rendering.mobile/silk_finance" }, { - "duration": "26.0", + "duration": "36.0", "name": "rendering.mobile/simple_text_page" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.mobile/simple_touch_drag" }, { - "duration": "65.0", + "duration": "75.0", "name": "rendering.mobile/skelebuddies_wasm_2020" }, { - "duration": "29.0", + "duration": "40.0", "name": "rendering.mobile/slashdot_mobile_2018" }, { - "duration": "19.0", + "duration": "15.0", "name": "rendering.mobile/slide_drawer" }, { - "duration": "27.0", + "duration": "35.0", "name": "rendering.mobile/small_texture_uploads" }, { - "duration": "29.0", + "duration": "38.0", "name": "rendering.mobile/smash_cat" }, { - "duration": "27.0", + "duration": "35.0", "name": "rendering.mobile/spielzeugz" }, { - "duration": "27.0", + "duration": "35.0", "name": "rendering.mobile/static_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "27.0", + "duration": "36.0", "name": "rendering.mobile/static_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "18.0", + "duration": "14.0", "name": "rendering.mobile/sticky_using_webkit" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/stress_hidey_bars" }, { - "duration": "27.0", + "duration": "36.0", "name": "rendering.mobile/stroke_shapes" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/svg_icon_raster" }, { - "duration": "16.0", + "duration": "13.0", "name": "rendering.mobile/swipe_action" }, { - "duration": "18.0", + "duration": "15.0", "name": "rendering.mobile/swipe_to_dismiss" }, { - "duration": "22.0", + "duration": "32.0", "name": "rendering.mobile/sync_scroll_offset" }, { - "duration": "31.0", + "duration": "43.0", "name": "rendering.mobile/techcrunch_2018" }, { - "duration": "26.0", + "duration": "34.0", "name": "rendering.mobile/techcrunch_mobile_2018" }, { - "duration": "39.0", + "duration": "35.0", "name": "rendering.mobile/text_05000_pixels_per_second" }, { - "duration": "39.0", + "duration": "36.0", "name": "rendering.mobile/text_10000_pixels_per_second" }, { - "duration": "39.0", + "duration": "36.0", "name": "rendering.mobile/text_20000_pixels_per_second" }, { - "duration": "36.0", + "duration": "32.0", "name": "rendering.mobile/text_40000_pixels_per_second" }, { - "duration": "35.0", + "duration": "31.0", "name": "rendering.mobile/text_60000_pixels_per_second" }, { - "duration": "34.0", + "duration": "31.0", "name": "rendering.mobile/text_75000_pixels_per_second" }, { - "duration": "35.0", + "duration": "31.0", "name": "rendering.mobile/text_90000_pixels_per_second" }, { - "duration": "41.0", + "duration": "48.0", "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "41.0", + "duration": "48.0", "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "41.0", + "duration": "48.0", "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "37.0", + "duration": "44.0", "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "36.0", + "duration": "45.0", "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second" }, { - "duration": "37.0", + "duration": "44.0", "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "35.0", + "duration": "45.0", "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "39.0", + "duration": "35.0", "name": "rendering.mobile/text_hover_05000_pixels_per_second" }, { - "duration": "39.0", + "duration": "35.0", "name": "rendering.mobile/text_hover_10000_pixels_per_second" }, { - "duration": "39.0", + "duration": "35.0", "name": "rendering.mobile/text_hover_20000_pixels_per_second" }, { - "duration": "35.0", + "duration": "32.0", "name": "rendering.mobile/text_hover_40000_pixels_per_second" }, { - "duration": "38.0", + "duration": "34.0", "name": "rendering.mobile/text_hover_60000_pixels_per_second" }, { - "duration": "34.0", + "duration": "44.0", "name": "rendering.mobile/text_hover_75000_pixels_per_second" }, { - "duration": "34.0", + "duration": "42.0", "name": "rendering.mobile/text_hover_90000_pixels_per_second" }, { - "duration": "26.0", + "duration": "35.0", "name": "rendering.mobile/theverge_article_mobile_2018" }, { - "duration": "25.0", + "duration": "34.0", "name": "rendering.mobile/theverge_mobile_2018" }, { - "duration": "30.0", + "duration": "39.0", "name": "rendering.mobile/throughput_scrolling_active_handler" }, { - "duration": "31.0", + "duration": "40.0", "name": "rendering.mobile/throughput_scrolling_composited" }, { - "duration": "33.0", + "duration": "42.0", "name": "rendering.mobile/throughput_scrolling_passive_handler" }, { - "duration": "31.0", + "duration": "39.0", "name": "rendering.mobile/throughput_scrolling_uncomposited" }, { - "duration": "60.0", + "duration": "85.0", "name": "rendering.mobile/tiny_racing_v3_wasm_2020" }, { @@ -3368,35 +3380,35 @@ "name": "rendering.mobile/toBlob_duration.html" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/toBlob_duration_jpeg.html" }, { - "duration": "28.0", + "duration": "26.0", "name": "rendering.mobile/toBlob_small_canvas_in_worker.html" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/toggle_drawer" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/touch_handler_scrolling" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/transfer_from_imageBitmap.html" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/transform_transitions" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/transform_transitions_js_block" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/twitch_2018" }, { @@ -3404,59 +3416,59 @@ "name": "rendering.mobile/twitch_mobile_pinch_2018" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/twitter_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/twitter_mobile_2018" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/update_history_state" }, { - "duration": "19.0", + "duration": "17.0", "name": "rendering.mobile/usatoday_mobile_2018" }, { - "duration": "20.0", + "duration": "17.0", "name": "rendering.mobile/vertical_expansion" }, { - "duration": "28.0", + "duration": "25.0", "name": "rendering.mobile/video_to_hw_accelerated_canvas" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/video_to_sub_texture" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/video_to_sub_texture_flip_and_premultiply" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/video_to_sub_texture_flip_y" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/video_to_sub_texture_premultiply" }, { - "duration": "28.0", + "duration": "25.0", "name": "rendering.mobile/video_to_texture" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/web_animation_value_type_color" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.mobile/web_animation_value_type_length_3d" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/web_animation_value_type_length_complex" }, { @@ -3468,127 +3480,127 @@ "name": "rendering.mobile/web_animation_value_type_path" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/web_animation_value_type_shadow" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/web_animation_value_type_transform_complex" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/web_animation_value_type_transform_simple" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.mobile/web_animations_many_keyframes" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/web_animations_set_current_time" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/web_animations_simultaneous" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/web_animations_staggered_chaining" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/web_animations_staggered_infinite_iterations" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/web_animations_staggered_triggering_page" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/webgl_to_texture" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.mobile/webp_decoding_rgb_and_gpu_rasterization" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.mobile/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "28.0", + "duration": "25.0", "name": "rendering.mobile/wikipedia_2018" }, { - "duration": "29.0", + "duration": "23.0", "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/wikipedia_mobile_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/wordpress_2018" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/wordpress_mobile_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/worldjournal_mobile_2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/wow_wiki_pathological_2018" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/wowwiki_mobile_2018" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/wsj_mobile_2018" }, { - "duration": "17.0", + "duration": "25.0", "name": "rendering.mobile/yahoo_answers_2018" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/yahoo_answers_mobile_2018" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.mobile/yahoo_news_2018" }, { - "duration": "21.0", + "duration": "32.0", "name": "rendering.mobile/yahoo_news_mobile_2018" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/yahoo_sports_2018" }, { - "duration": "17.0", + "duration": "21.0", "name": "rendering.mobile/yahoo_sports_pathological_2018" }, { - "duration": "7.0", + "duration": "8.0", "name": "rendering.mobile/youtube_2018" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/youtube_mobile_2018" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/zdnet_pathological_2018" }, { - "duration": "18.0", + "duration": "15.0", "name": "rendering.mobile/zoom_in_animation" }, { @@ -3604,7 +3616,7 @@ "name": "speedometer2-future/Speedometer2" }, { - "duration": "52.0", + "duration": "62.0", "name": "speedometer2-pcscan/Speedometer2" }, { @@ -3620,11 +3632,11 @@ "name": "startup.mobile/intent:coldish:bbc" }, { - "duration": "43.0", + "duration": "45.0", "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "7.0", + "duration": "10.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { @@ -3632,7 +3644,7 @@ "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "39.0", + "duration": "40.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { @@ -3640,291 +3652,291 @@ "name": "system_health.common_mobile/background:search:google:2019" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "52.0", + "duration": "50.0", "name": "system_health.common_mobile/browse:chrome:newtab:2019" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { - "duration": "76.0", + "duration": "70.0", "name": "system_health.common_mobile/browse:media:facebook_photos:2019" }, { - "duration": "47.0", + "duration": "54.0", "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "43.0", + "duration": "50.0", "name": "system_health.common_mobile/browse:media:googleplaystore:2019" }, { - "duration": "70.0", + "duration": "78.0", "name": "system_health.common_mobile/browse:media:imgur:2019" }, { - "duration": "55.0", + "duration": "53.0", "name": "system_health.common_mobile/browse:media:youtube:2019" }, { - "duration": "52.0", + "duration": "50.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { - "duration": "8.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:news:cricbuzz:2019" }, { - "duration": "44.0", + "duration": "39.0", "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "56.0", + "duration": "55.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { - "duration": "35.0", + "duration": "34.0", "name": "system_health.common_mobile/browse:news:qq:2019" }, { - "duration": "50.0", + "duration": "51.0", "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "53.0", + "duration": "49.0", "name": "system_health.common_mobile/browse:news:toi:2019" }, { - "duration": "56.0", + "duration": "54.0", "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "26.0", + "duration": "33.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { - "duration": "27.0", + "duration": "36.0", "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { - "duration": "51.0", + "duration": "50.0", "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "52.0", + "duration": "49.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { - "duration": "52.0", + "duration": "49.0", "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { - "duration": "57.0", + "duration": "54.0", "name": "system_health.common_mobile/browse:shopping:lazada:2019" }, { - "duration": "8.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:social:facebook:2019" }, { - "duration": "73.0", + "duration": "81.0", "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "79.0", + "duration": "86.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "63.0", + "duration": "61.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "61.0", + "duration": "60.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "68.0", + "duration": "65.0", "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "42.0", + "duration": "50.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "23.0", + "duration": "30.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "23.0", + "duration": "33.0", "name": "system_health.common_mobile/load:games:lazors" }, { - "duration": "25.0", + "duration": "35.0", "name": "system_health.common_mobile/load:games:spychase:2018" }, { - "duration": "24.0", + "duration": "35.0", "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "23.0", + "duration": "31.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "23.0", + "duration": "30.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { - "duration": "21.0", + "duration": "31.0", "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "23.0", + "duration": "32.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { - "duration": "21.0", + "duration": "31.0", "name": "system_health.common_mobile/load:media:google_images:2018" }, { - "duration": "24.0", + "duration": "38.0", "name": "system_health.common_mobile/load:media:imgur:2018" }, { - "duration": "20.0", + "duration": "30.0", "name": "system_health.common_mobile/load:media:soundcloud:2018" }, { - "duration": "21.0", + "duration": "19.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "24.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "27.0", + "duration": "39.0", "name": "system_health.common_mobile/load:news:cnn:2020" }, { - "duration": "22.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:irctc:2019" }, { - "duration": "25.0", + "duration": "35.0", "name": "system_health.common_mobile/load:news:nytimes:2019" }, { - "duration": "21.0", + "duration": "33.0", "name": "system_health.common_mobile/load:news:qq:2019" }, { - "duration": "21.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:reddit:2019" }, { - "duration": "21.0", + "duration": "34.0", "name": "system_health.common_mobile/load:news:washingtonpost:2019" }, { - "duration": "21.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { - "duration": "24.0", + "duration": "31.0", "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "27.0", + "duration": "31.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "23.0", + "duration": "30.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { - "duration": "21.0", + "duration": "31.0", "name": "system_health.common_mobile/load:search:google:2018" }, { - "duration": "21.0", + "duration": "30.0", "name": "system_health.common_mobile/load:search:taobao:2019" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.common_mobile/load:search:yahoo:2018" }, { - "duration": "21.0", + "duration": "19.0", "name": "system_health.common_mobile/load:search:yandex:2018" }, { - "duration": "21.0", + "duration": "31.0", "name": "system_health.common_mobile/load:social:instagram:2019" }, { - "duration": "22.0", + "duration": "32.0", "name": "system_health.common_mobile/load:social:pinterest:2019" }, { - "duration": "21.0", + "duration": "30.0", "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "23.0", + "duration": "30.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "23.0", + "duration": "31.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "36.0", + "duration": "43.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "30.0", + "duration": "40.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "22.0", + "duration": "34.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { - "duration": "21.0", + "duration": "31.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/long_running:tools:gmail-background" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/long_running:tools:gmail-foreground" }, { - "duration": "29.0", + "duration": "25.0", "name": "system_health.memory_mobile/background:media:imgur:2019" }, { - "duration": "46.0", + "duration": "42.0", "name": "system_health.memory_mobile/background:news:nytimes:2019" }, { @@ -3932,23 +3944,23 @@ "name": "system_health.memory_mobile/background:search:google:2019" }, { - "duration": "25.0", + "duration": "23.0", "name": "system_health.memory_mobile/background:social:facebook:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "53.0", + "duration": "56.0", "name": "system_health.memory_mobile/browse:chrome:newtab:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" }, { - "duration": "77.0", + "duration": "72.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { @@ -3956,7 +3968,7 @@ "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "44.0", + "duration": "43.0", "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { @@ -3964,7 +3976,7 @@ "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { - "duration": "60.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { @@ -3972,15 +3984,15 @@ "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "5.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" }, { - "duration": "46.0", + "duration": "41.0", "name": "system_health.memory_mobile/browse:news:globo:2019" }, { - "duration": "55.0", + "duration": "57.0", "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { @@ -3988,75 +4000,75 @@ "name": "system_health.memory_mobile/browse:news:qq:2019" }, { - "duration": "52.0", + "duration": "51.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { - "duration": "52.0", + "duration": "50.0", "name": "system_health.memory_mobile/browse:news:toi:2019" }, { - "duration": "64.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { - "duration": "27.0", + "duration": "26.0", "name": "system_health.memory_mobile/browse:search:amp:2018" }, { - "duration": "29.0", + "duration": "27.0", "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" }, { - "duration": "57.0", + "duration": "52.0", "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "56.0", + "duration": "51.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "55.0", + "duration": "52.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { - "duration": "61.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:shopping:lazada:2019" }, { - "duration": "4.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { - "duration": "73.0", + "duration": "72.0", "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "80.0", + "duration": "78.0", "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "68.0", + "duration": "63.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "69.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { - "duration": "4.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "43.0", + "duration": "42.0", "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "26.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:chrome:blank" }, { @@ -4064,47 +4076,47 @@ "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:games:lazors" }, { - "duration": "31.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:games:spychase:2018" }, { - "duration": "27.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:media:dailymotion:2019" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:media:facebook_photos:2019" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "28.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "26.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "29.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { - "duration": "26.0", + "duration": "21.0", "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "22.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { @@ -4116,31 +4128,31 @@ "name": "system_health.memory_mobile/load:news:cnn:2020" }, { - "duration": "27.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { - "duration": "31.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:news:nytimes:2019" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:news:qq:2019" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:news:reddit:2019" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:news:washingtonpost:2019" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:search:amazon:2019" }, { @@ -4148,19 +4160,19 @@ "name": "system_health.memory_mobile/load:search:baidu:2018" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:search:ebay:2018" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:search:google:2018" }, { - "duration": "26.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:search:taobao:2019" }, { - "duration": "26.0", + "duration": "21.0", "name": "system_health.memory_mobile/load:search:yahoo:2018" }, { @@ -4168,23 +4180,23 @@ "name": "system_health.memory_mobile/load:search:yandex:2018" }, { - "duration": "26.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:social:instagram:2019" }, { - "duration": "28.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:social:pinterest:2019" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:social:twitter:2019" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:tools:docs:2019" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:tools:drive:2019" }, { @@ -4192,23 +4204,23 @@ "name": "system_health.memory_mobile/load:tools:dropbox:2019" }, { - "duration": "35.0", + "duration": "30.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:tools:stackoverflow:2018" }, { - "duration": "27.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/long_running:tools:gmail-background" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/long_running:tools:gmail-foreground" }, { @@ -4228,11 +4240,11 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { - "duration": "8.0", + "duration": "7.0", "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" }, { - "duration": "8.0", + "duration": "7.0", "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" }, { @@ -4240,7 +4252,7 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com" }, { - "duration": "11.0", + "duration": "10.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" }, { @@ -4248,287 +4260,291 @@ "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { - "duration": "63.0", + "duration": "68.0", "name": "v8.browsing_mobile-future/browse:chrome:newtab:2019" }, { - "duration": "15.0", + "duration": "20.0", "name": "v8.browsing_mobile-future/browse:chrome:omnibox:2019" }, { - "duration": "85.0", + "duration": "83.0", "name": "v8.browsing_mobile-future/browse:media:facebook_photos:2019" }, { - "duration": "57.0", + "duration": "60.0", "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "51.0", + "duration": "55.0", "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019" }, { - "duration": "84.0", + "duration": "90.0", "name": "v8.browsing_mobile-future/browse:media:imgur:2019" }, { - "duration": "66.0", + "duration": "70.0", "name": "v8.browsing_mobile-future/browse:media:youtube:2019" }, { - "duration": "64.0", + "duration": "67.0", "name": "v8.browsing_mobile-future/browse:news:cnn:2020" }, { - "duration": "13.0", + "duration": "16.0", "name": "v8.browsing_mobile-future/browse:news:cricbuzz:2019" }, { - "duration": "52.0", + "duration": "54.0", "name": "v8.browsing_mobile-future/browse:news:globo:2019" }, { - "duration": "72.0", + "duration": "80.0", "name": "v8.browsing_mobile-future/browse:news:nytimes:2019" }, { - "duration": "46.0", + "duration": "51.0", "name": "v8.browsing_mobile-future/browse:news:qq:2019" }, { - "duration": "62.0", + "duration": "70.0", "name": "v8.browsing_mobile-future/browse:news:reddit:2019" }, { - "duration": "64.0", + "duration": "66.0", "name": "v8.browsing_mobile-future/browse:news:toi:2019" }, { - "duration": "71.0", + "duration": "74.0", "name": "v8.browsing_mobile-future/browse:news:washingtonpost:2019" }, { - "duration": "37.0", + "duration": "35.0", "name": "v8.browsing_mobile-future/browse:search:amp:2018" }, { - "duration": "35.0", + "duration": "40.0", "name": "v8.browsing_mobile-future/browse:search:amp:sxg:2019" }, { - "duration": "62.0", + "duration": "63.0", "name": "v8.browsing_mobile-future/browse:shopping:amazon:2019" }, { - "duration": "61.0", + "duration": "63.0", "name": "v8.browsing_mobile-future/browse:shopping:avito:2019" }, { - "duration": "61.0", + "duration": "64.0", "name": "v8.browsing_mobile-future/browse:shopping:flipkart:2019" }, { - "duration": "67.0", + "duration": "70.0", "name": "v8.browsing_mobile-future/browse:shopping:lazada:2019" }, { - "duration": "69.0", + "duration": "72.0", "name": "v8.browsing_mobile-future/browse:social:facebook:2019" }, { - "duration": "82.0", + "duration": "85.0", "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "88.0", + "duration": "93.0", "name": "v8.browsing_mobile-future/browse:social:instagram:2019" }, { - "duration": "15.0", + "duration": "20.0", "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "77.0", + "duration": "84.0", "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "71.0", + "duration": "77.0", "name": "v8.browsing_mobile-future/browse:social:twitter:2019" }, { - "duration": "13.0", + "duration": "16.0", "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "51.0", + "duration": "56.0", "name": "v8.browsing_mobile-future/browse:tools:maps:2019" }, { - "duration": "66.0", + "duration": "91.0", "name": "v8.browsing_mobile/browse:chrome:newtab:2019" }, { - "duration": "17.0", + "duration": "21.0", "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" }, { - "duration": "91.0", + "duration": "111.0", "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" }, { - "duration": "63.0", + "duration": "86.0", "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "55.0", + "duration": "77.0", "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" }, { - "duration": "88.0", + "duration": "112.0", "name": "v8.browsing_mobile/browse:media:imgur:2019" }, { - "duration": "70.0", + "duration": "74.0", "name": "v8.browsing_mobile/browse:media:youtube:2019" }, { - "duration": "70.0", + "duration": "93.0", "name": "v8.browsing_mobile/browse:news:cnn:2020" }, { - "duration": "13.0", + "duration": "10.0", "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" }, { - "duration": "54.0", + "duration": "51.0", "name": "v8.browsing_mobile/browse:news:globo:2019" }, { - "duration": "77.0", + "duration": "104.0", "name": "v8.browsing_mobile/browse:news:nytimes:2019" }, { - "duration": "49.0", + "duration": "73.0", "name": "v8.browsing_mobile/browse:news:qq:2019" }, { - "duration": "66.0", + "duration": "73.0", "name": "v8.browsing_mobile/browse:news:reddit:2019" }, { - "duration": "70.0", + "duration": "93.0", "name": "v8.browsing_mobile/browse:news:toi:2019" }, { - "duration": "78.0", + "duration": "80.0", "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" }, { - "duration": "38.0", + "duration": "60.0", "name": "v8.browsing_mobile/browse:search:amp:2018" }, { - "duration": "40.0", + "duration": "63.0", "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" }, { - "duration": "62.0", + "duration": "57.0", "name": "v8.browsing_mobile/browse:shopping:amazon:2019" }, { - "duration": "60.0", + "duration": "57.0", "name": "v8.browsing_mobile/browse:shopping:avito:2019" }, { - "duration": "61.0", + "duration": "58.0", "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" }, { - "duration": "67.0", + "duration": "97.0", "name": "v8.browsing_mobile/browse:shopping:lazada:2019" }, { - "duration": "19.0", + "duration": "41.0", "name": "v8.browsing_mobile/browse:social:facebook:2019" }, { - "duration": "88.0", + "duration": "110.0", "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "93.0", + "duration": "116.0", "name": "v8.browsing_mobile/browse:social:instagram:2019" }, { - "duration": "19.0", + "duration": "41.0", "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "82.0", + "duration": "88.0", "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "75.0", + "duration": "82.0", "name": "v8.browsing_mobile/browse:social:twitter:2019" }, { - "duration": "85.0", + "duration": "106.0", "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "56.0", + "duration": "78.0", "name": "v8.browsing_mobile/browse:tools:maps:2019" }, { - "duration": "19.0", + "duration": "20.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "19.0", + "duration": "20.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "29.0", + "duration": "30.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "29.0", + "duration": "30.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "29.0", + "duration": "30.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "19.0", + "duration": "20.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "19.0", + "duration": "21.0", "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" }, { - "duration": "19.0", + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_camera_noop_video" + }, + { + "duration": "20.0", "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" }, { - "duration": "19.0", + "duration": "20.0", "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" }, { - "duration": "19.0", + "duration": "21.0", "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" }, { - "duration": "19.0", + "duration": "21.0", "name": "webrtc/insertable_streams_video_processing_video_webgl_video" }, { - "duration": "29.0", + "duration": "30.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "31.0", + "duration": "32.0", "name": "webrtc/pause_play_peerconnections" }, {
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel2_weblayer-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel2_weblayer-perf_timing.json index d47dad4..c4e01c2d 100644 --- a/tools/perf/core/shard_maps/timing_data/android-pixel2_weblayer-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-pixel2_weblayer-perf_timing.json
@@ -1,10 +1,10 @@ [ { - "duration": "115.0", + "duration": "116.0", "name": "startup.mobile/cct:coldish:bbc" }, { - "duration": "117.0", + "duration": "115.0", "name": "startup.mobile/intent:coldish:bbc" }, { @@ -12,11 +12,11 @@ "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "18.0", + "duration": "21.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { @@ -24,7 +24,7 @@ "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "55.0", + "duration": "52.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { @@ -36,15 +36,15 @@ "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "73.0", + "duration": "62.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "81.0", + "duration": "84.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "39.0", + "duration": "40.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { @@ -52,15 +52,15 @@ "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.common_mobile/load:news:cnn:2020" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, { @@ -72,11 +72,11 @@ "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "55.0", + "duration": "52.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "53.0", + "duration": "52.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { @@ -84,11 +84,11 @@ "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "64.0", + "duration": "62.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "73.0", + "duration": "71.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { @@ -96,23 +96,23 @@ "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "23.0", + "duration": "21.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "29.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:news:cnn:2020" }, { - "duration": "31.0", + "duration": "32.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "24.0", + "duration": "23.0", "name": "system_health.weblayer_startup/load:chrome:blank" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel4-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel4-perf_timing.json index 0637a08..6605e17 100644 --- a/tools/perf/core/shard_maps/timing_data/android-pixel4-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-pixel4-perf_timing.json
@@ -1 +1,4522 @@ -[] \ No newline at end of file +[ + { + "duration": "22.0", + "name": "blink_perf.accessibility/build-table.html" + }, + { + "duration": "18.0", + "name": "blink_perf.accessibility/focus-links.html" + }, + { + "duration": "24.0", + "name": "blink_perf.accessibility/line-breaks.html" + }, + { + "duration": "23.0", + "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" + }, + { + "duration": "24.0", + "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" + }, + { + "duration": "21.0", + "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" + }, + { + "duration": "26.0", + "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" + }, + { + "duration": "18.0", + "name": "blink_perf.accessibility/textarea-append.html" + }, + { + "duration": "13.0", + "name": "blink_perf.bindings/append-child.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/create-element.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/document-implementation.html" + }, + { + "duration": "9.0", + "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" + }, + { + "duration": "9.0", + "name": "blink_perf.bindings/first-child.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/gc-forest.html" + }, + { + "duration": "9.0", + "name": "blink_perf.bindings/gc-mini-tree.html" + }, + { + "duration": "13.0", + "name": "blink_perf.bindings/gc-tree.html" + }, + { + "duration": "9.0", + "name": "blink_perf.bindings/get-attribute-rare.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/get-attribute.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/get-element-by-id.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/get-elements-by-tag-name.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/id-getter.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/id-setter.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/indexed-getter.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/insert-before.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/named-property-enumerator.html" + }, + { + "duration": "20.0", + "name": "blink_perf.bindings/node-list-access.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/node-type.html" + }, + { + "duration": "5.0", + "name": "blink_perf.bindings/post-message.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/sequence-conversion-array.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" + }, + { + "duration": "5.0", + "name": "blink_perf.bindings/serialize-array.html" + }, + { + "duration": "4.0", + "name": "blink_perf.bindings/serialize-long-string.html" + }, + { + "duration": "6.0", + "name": "blink_perf.bindings/serialize-map.html" + }, + { + "duration": "4.0", + "name": "blink_perf.bindings/serialize-nested-array.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/set-attribute-rare.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/set-attribute.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/structured-clone-json-deserialize.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/structured-clone-json-serialize.html" + }, + { + "duration": "7.0", + "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html" + }, + { + "duration": "7.0", + "name": "blink_perf.bindings/structured-clone-long-string-serialize.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/typed-array-construct-from-array.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/typed-array-construct-from-same-type.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/typed-array-construct-from-typed.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/typed-array-set-from-typed.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/undefined-first-child.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/undefined-get-element-by-id.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/undefined-id-getter.html" + }, + { + "duration": "6.0", + "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" + }, + { + "duration": "17.0", + "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" + }, + { + "duration": "17.0", + "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" + }, + { + "duration": "17.0", + "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" + }, + { + "duration": "7.0", + "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" + }, + { + "duration": "6.0", + "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" + }, + { + "duration": "14.0", + "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" + }, + { + "duration": "14.0", + "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" + }, + { + "duration": "14.0", + "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/worker-transferable-from-worker.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/worker-transferable-roundtrip.html" + }, + { + "duration": "11.0", + "name": "blink_perf.bindings/worker-transferable-to-worker.html" + }, + { + "duration": "17.0", + "name": "blink_perf.css/AttributeDescendantSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/CSSLogicalDirection.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/CSSPropertySetterGetter.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/CSSPropertySetterGetterMethods.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/CSSPropertyUpdateValue.html" + }, + { + "duration": "7.0", + "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleChildClassSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleChildElementSelectors.html" + }, + { + "duration": "7.0", + "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleElementSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" + }, + { + "duration": "7.0", + "name": "blink_perf.css/ChangeStyleShallowTree.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleUniversalSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" + }, + { + "duration": "13.0", + "name": "blink_perf.css/ClassDescendantSelector.html" + }, + { + "duration": "11.0", + "name": "blink_perf.css/ClassInvalidation.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/CustomPropertiesCascade.html" + }, + { + "duration": "6.0", + "name": "blink_perf.css/CustomPropertiesDependency.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/CustomPropertiesPendingSubstitution.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/CustomPropertiesRootInheritance.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/CustomPropertiesVarAlias.html" + }, + { + "duration": "6.0", + "name": "blink_perf.css/ExplicitInheritance.html" + }, + { + "duration": "12.0", + "name": "blink_perf.css/FocusUpdate.html" + }, + { + "duration": "6.0", + "name": "blink_perf.css/LoadBootstrapBlog.html" + }, + { + "duration": "6.0", + "name": "blink_perf.css/LoadMaterializeStarterPage.html" + }, + { + "duration": "6.0", + "name": "blink_perf.css/LoadSemanticPageExample.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/PseudoClassSelectors.html" + }, + { + "duration": "14.0", + "name": "blink_perf.css/SelectorCountScaling.html" + }, + { + "duration": "16.0", + "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" + }, + { + "duration": "14.0", + "name": "blink_perf.dom/custom-element-default-style.html" + }, + { + "duration": "18.0", + "name": "blink_perf.dom/long-sibling-list.html" + }, + { + "duration": "5.0", + "name": "blink_perf.dom/modify-element-classname.html" + }, + { + "duration": "6.0", + "name": "blink_perf.dom/modify-element-id.html" + }, + { + "duration": "4.0", + "name": "blink_perf.dom/modify-element-title.html" + }, + { + "duration": "9.0", + "name": "blink_perf.dom/select-multiple-add.html" + }, + { + "duration": "9.0", + "name": "blink_perf.dom/select-single-add.html" + }, + { + "duration": "9.0", + "name": "blink_perf.dom/select-single-remove.html" + }, + { + "duration": "13.0", + "name": "blink_perf.events/EventsDispatching.html" + }, + { + "duration": "10.0", + "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" + }, + { + "duration": "17.0", + "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" + }, + { + "duration": "13.0", + "name": "blink_perf.events/hit-test-lots-of-layers.html" + }, + { + "duration": "9.0", + "name": "blink_perf.events/is-input-pending-default-events.html" + }, + { + "duration": "9.0", + "name": "blink_perf.events/is-input-pending-include-continuous-events.html" + }, + { + "duration": "16.0", + "name": "blink_perf.image_decoder/decode-gif.html" + }, + { + "duration": "10.0", + "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" + }, + { + "duration": "10.0", + "name": "blink_perf.image_decoder/decode-jpeg-h1v2.html" + }, + { + "duration": "10.0", + "name": "blink_perf.image_decoder/decode-jpeg-h2v1.html" + }, + { + "duration": "10.0", + "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" + }, + { + "duration": "15.0", + "name": "blink_perf.image_decoder/decode-lossless-webp.html" + }, + { + "duration": "9.0", + "name": "blink_perf.image_decoder/decode-lossy-webp.html" + }, + { + "duration": "11.0", + "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" + }, + { + "duration": "10.0", + "name": "blink_perf.image_decoder/decode-png-palette.html" + }, + { + "duration": "13.0", + "name": "blink_perf.image_decoder/decode-png.html" + }, + { + "duration": "13.0", + "name": "blink_perf.layout/ArabicLineLayout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/Shapes/MultipleShapes.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/SimpleTextPathLineLayout.html" + }, + { + "duration": "16.0", + "name": "blink_perf.layout/abspos.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/add-remove-inline-floats.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/animate-abspos-deep.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/attach-inlines-2.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/attach-inlines.html" + }, + { + "duration": "10.0", + "name": "blink_perf.layout/auto-grid-lots-of-data.html" + }, + { + "duration": "10.0", + "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" + }, + { + "duration": "19.0", + "name": "blink_perf.layout/change-text-css-contain.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/chapter-reflow-once-random.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/chapter-reflow-once.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/chapter-reflow-thrice.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/chapter-reflow-twice.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/chapter-reflow.html" + }, + { + "duration": "7.0", + "name": "blink_perf.layout/character_fallback.html" + }, + { + "duration": "7.0", + "name": "blink_perf.layout/contain-content-style-change.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/culled-inline-bounding-rects.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/culled-inline-hittest.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/deeply-nested-grid.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/editing_append.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/editing_append_single_line.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/editing_delete.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/editing_insert.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/editing_prepend.html" + }, + { + "duration": "12.0", + "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/fit-content-change-available-size-text.html" + }, + { + "duration": "10.0", + "name": "blink_perf.layout/fixed-grid-lots-of-data.html" + }, + { + "duration": "10.0", + "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-column-nowrap.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-column-wrap.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-hittest.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-input.html" + }, + { + "duration": "10.0", + "name": "blink_perf.layout/flexbox-lots-of-data.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-row-nowrap.html" + }, + { + "duration": "11.0", + "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-row-stretch-height-indefinite.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-row-wrap.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-with-stretch-layout.html" + }, + { + "duration": "12.0", + "name": "blink_perf.layout/flexbox_with_list_item.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/floats_100_100.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/floats_100_100_nested.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/floats_10_1000.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/floats_20_100.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/floats_20_100_nested.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/floats_2_100.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/floats_2_100_nested.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/floats_50_100.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/floats_50_100_nested.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/floats_show_hide.html" + }, + { + "duration": "10.0", + "name": "blink_perf.layout/hindi-line-layout.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/hittest-block-children.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/japanese-kokoro-insert.html" + }, + { + "duration": "14.0", + "name": "blink_perf.layout/large-grid.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/large-spanning-grid-item.html" + }, + { + "duration": "13.0", + "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" + }, + { + "duration": "13.0", + "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" + }, + { + "duration": "13.0", + "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" + }, + { + "duration": "14.0", + "name": "blink_perf.layout/latin-ebook-resize.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/latin-ebook.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/layers_overlap_2d.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/layers_overlap_3d.html" + }, + { + "duration": "0.0", + "name": "blink_perf.layout/line-layout-fit-content-break-word.html" + }, + { + "duration": "0.0", + "name": "blink_perf.layout/line-layout-fit-content.html" + }, + { + "duration": "11.0", + "name": "blink_perf.layout/line-layout-line-height.html" + }, + { + "duration": "13.0", + "name": "blink_perf.layout/line-layout-repeat-append-select.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/line-layout-repeat-append.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/line-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/long-line-nowrap-collapse.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/long-line-nowrap.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/many-block-children-auto-inline-size.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/many-block-children-fixed-inline-size.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/balance-forced-breaks.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/deeply-nested-tables.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/lots-of-small-nested-unbreakable-blocks-autofill.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-autofill.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/lots-of-text-autofill.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" + }, + { + "duration": "35.0", + "name": "blink_perf.layout/multicol/nested-forced-breaks.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/multicol/tall-content-short-columns.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/nested-grid.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/nested-percent-height-tables.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/ruby.html" + }, + { + "duration": "56.0", + "name": "blink_perf.layout/subtree-detaching.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/word-break-break-all.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/word-break-break-word.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/word-wrap-break-word.html" + }, + { + "duration": "13.0", + "name": "blink_perf.owp_storage/blob-perf-files.html" + }, + { + "duration": "11.0", + "name": "blink_perf.owp_storage/blob-perf-ipc.html" + }, + { + "duration": "8.0", + "name": "blink_perf.owp_storage/blob-perf-shm.html" + }, + { + "duration": "11.0", + "name": "blink_perf.owp_storage/blob-perf-tiny.html" + }, + { + "duration": "10.0", + "name": "blink_perf.owp_storage/idb-load-docs.html" + }, + { + "duration": "14.0", + "name": "blink_perf.paint/appending-text.html" + }, + { + "duration": "15.0", + "name": "blink_perf.paint/color-changes.html" + }, + { + "duration": "14.0", + "name": "blink_perf.paint/complex-content-slow-scroll.html" + }, + { + "duration": "14.0", + "name": "blink_perf.paint/complex-iframe-filtered.html" + }, + { + "duration": "38.0", + "name": "blink_perf.paint/contain-update-layer-tree.html" + }, + { + "duration": "15.0", + "name": "blink_perf.paint/containment-resize.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/fixed-and-many-layers-scroll.html" + }, + { + "duration": "15.0", + "name": "blink_perf.paint/large-table-background-change.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/large-table-collapsed-border-change.html" + }, + { + "duration": "10.0", + "name": "blink_perf.paint/modify-selection.html" + }, + { + "duration": "11.0", + "name": "blink_perf.paint/move-text-with-mask.html" + }, + { + "duration": "12.0", + "name": "blink_perf.paint/paint-offset-changes.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/transform-changes.html" + }, + { + "duration": "13.0", + "name": "blink_perf.parser/css-parser-yui.html" + }, + { + "duration": "16.0", + "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/declarative-shadow-dom.html" + }, + { + "duration": "6.0", + "name": "blink_perf.parser/html-parser-threaded.html" + }, + { + "duration": "15.0", + "name": "blink_perf.parser/html-parser.html" + }, + { + "duration": "60.0", + "name": "blink_perf.parser/html5-full-render.html" + }, + { + "duration": "18.0", + "name": "blink_perf.parser/iframe-append-remove.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/innerHTML-setter-siblings.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/innerHTML-setter.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-attribute-complex.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-attribute.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-class-deep.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-class-first.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-class-last.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-class.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-deep.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-first.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-id-deep.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-id-first.html" + }, + { + "duration": "10.0", + "name": "blink_perf.parser/query-selector-all-id-last.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-last.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-deep.html" + }, + { + "duration": "13.0", + "name": "blink_perf.parser/query-selector-first.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-id-deep.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-id-last.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-last.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/simple-url.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/textarea-parsing.html" + }, + { + "duration": "10.0", + "name": "blink_perf.parser/tiny-innerHTML.html" + }, + { + "duration": "10.0", + "name": "blink_perf.parser/url-parser.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/xml-parser.html" + }, + { + "duration": "9.0", + "name": "blink_perf.shadow_dom/declarative-api.html" + }, + { + "duration": "0.0", + "name": "blink_perf.shadow_dom/imperative-api-appendchild.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/imperative-api-assign.html" + }, + { + "duration": "0.0", + "name": "blink_perf.shadow_dom/imperative-api-assigned-elements.html" + }, + { + "duration": "0.0", + "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html" + }, + { + "duration": "0.0", + "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/imperative-api.html" + }, + { + "duration": "14.0", + "name": "blink_perf.shadow_dom/shadow-dom-overhead.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/shadow-style-share.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/style-sheet-insert.html" + }, + { + "duration": "8.0", + "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-distribution.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-host-child-append.html" + }, + { + "duration": "8.0", + "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" + }, + { + "duration": "11.0", + "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-append-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-prepend-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-slot-append.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/v1-small-deep-layout.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html" + }, + { + "duration": "4.0", + "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" + }, + { + "duration": "8.0", + "name": "blink_perf.svg/AzLizardBenjiPark.html" + }, + { + "duration": "6.0", + "name": "blink_perf.svg/Bamboo.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/Cactus.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/Cowboy.html" + }, + { + "duration": "0.0", + "name": "blink_perf.svg/Cowboy_transform.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/CrawFishGanson.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/Debian.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/DropsOnABlade.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/FlowerFromMyGarden.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/FoodLeifLodahl.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/France.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/GearFlowers.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/HarveyRayner.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/HereGear.html" + }, + { + "duration": "6.0", + "name": "blink_perf.svg/MtSaintHelens.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/Samurai.html" + }, + { + "duration": "0.0", + "name": "blink_perf.svg/SierpinskiCarpet.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/SvgCubics.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/SvgHitTesting.html" + }, + { + "duration": "9.0", + "name": "blink_perf.svg/SvgNestedUse.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/UnderTheSee.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/WorldIso.html" + }, + { + "duration": "5.0", + "name": "blink_perf.svg/Worldcup.html" + }, + { + "duration": "22.0", + "name": "blink_perf.webaudio/audio-buffer-source-node.html" + }, + { + "duration": "130.0", + "name": "blink_perf.webaudio/audio-worklet-node.html" + }, + { + "duration": "142.0", + "name": "blink_perf.webaudio/biquad-filter-node.html" + }, + { + "duration": "147.0", + "name": "blink_perf.webaudio/gain-node.html" + }, + { + "duration": "59.0", + "name": "blink_perf.webaudio/panner-node.html" + }, + { + "duration": "9.0", + "name": "blink_perf.webgl/binding-draw-arrays.html" + }, + { + "duration": "10.0", + "name": "blink_perf.webgl_fast_call/binding-draw-arrays.html" + }, + { + "duration": "37.0", + "name": "dromaeo/http://dromaeo.com?dom-attr" + }, + { + "duration": "35.0", + "name": "dromaeo/http://dromaeo.com?dom-modify" + }, + { + "duration": "50.0", + "name": "dromaeo/http://dromaeo.com?dom-query" + }, + { + "duration": "30.0", + "name": "dromaeo/http://dromaeo.com?dom-traverse" + }, + { + "duration": "6.0", + "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" + }, + { + "duration": "6.0", + "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" + }, + { + "duration": "0.0", + "name": "jetstream/JetStream" + }, + { + "duration": "235.0", + "name": "jetstream2/JetStream2" + }, + { + "duration": "33.0", + "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" + }, + { + "duration": "13.0", + "name": "loading.mobile/58Pic" + }, + { + "duration": "23.0", + "name": "loading.mobile/58Pic_3g" + }, + { + "duration": "18.0", + "name": "loading.mobile/Amazon" + }, + { + "duration": "33.0", + "name": "loading.mobile/Amazon_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/BOLNoticias" + }, + { + "duration": "28.0", + "name": "loading.mobile/BOLNoticias_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/Baidu" + }, + { + "duration": "25.0", + "name": "loading.mobile/Baidu_3g" + }, + { + "duration": "14.0", + "name": "loading.mobile/Bradesco" + }, + { + "duration": "7.0", + "name": "loading.mobile/Bradesco_3g" + }, + { + "duration": "16.0", + "name": "loading.mobile/Dailymotion" + }, + { + "duration": "7.0", + "name": "loading.mobile/Dailymotion_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/Dawn" + }, + { + "duration": "7.0", + "name": "loading.mobile/Dawn_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/DevOpera_cold" + }, + { + "duration": "19.0", + "name": "loading.mobile/DevOpera_cold_3g" + }, + { + "duration": "20.0", + "name": "loading.mobile/DevOpera_hot" + }, + { + "duration": "20.0", + "name": "loading.mobile/DevOpera_hot_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/DevOpera_warm" + }, + { + "duration": "17.0", + "name": "loading.mobile/DevOpera_warm_3g" + }, + { + "duration": "16.0", + "name": "loading.mobile/Dramaq" + }, + { + "duration": "51.0", + "name": "loading.mobile/Dramaq_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/EnquiryIndianRail" + }, + { + "duration": "17.0", + "name": "loading.mobile/EnquiryIndianRail_3g" + }, + { + "duration": "18.0", + "name": "loading.mobile/Facebook" + }, + { + "duration": "9.0", + "name": "loading.mobile/Facebook_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/FlipBoard_cold" + }, + { + "duration": "39.0", + "name": "loading.mobile/FlipBoard_cold_3g" + }, + { + "duration": "20.0", + "name": "loading.mobile/FlipBoard_hot" + }, + { + "duration": "21.0", + "name": "loading.mobile/FlipBoard_hot_3g" + }, + { + "duration": "20.0", + "name": "loading.mobile/FlipBoard_warm" + }, + { + "duration": "19.0", + "name": "loading.mobile/FlipBoard_warm_3g" + }, + { + "duration": "16.0", + "name": "loading.mobile/FlipKart_cold" + }, + { + "duration": "7.0", + "name": "loading.mobile/FlipKart_cold_3g" + }, + { + "duration": "19.0", + "name": "loading.mobile/FlipKart_hot" + }, + { + "duration": "21.0", + "name": "loading.mobile/FlipKart_hot_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/FlipKart_warm" + }, + { + "duration": "7.0", + "name": "loading.mobile/FlipKart_warm_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/FranceTVInfo" + }, + { + "duration": "22.0", + "name": "loading.mobile/FranceTVInfo_3g" + }, + { + "duration": "9.0", + "name": "loading.mobile/G1" + }, + { + "duration": "9.0", + "name": "loading.mobile/G1_3g" + }, + { + "duration": "14.0", + "name": "loading.mobile/GSShop" + }, + { + "duration": "7.0", + "name": "loading.mobile/GSShop_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/GoogleBrazil" + }, + { + "duration": "20.0", + "name": "loading.mobile/GoogleBrazil_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/GoogleIndia" + }, + { + "duration": "9.0", + "name": "loading.mobile/GoogleIndia_3g" + }, + { + "duration": "16.0", + "name": "loading.mobile/GoogleIndonesia" + }, + { + "duration": "20.0", + "name": "loading.mobile/GoogleIndonesia_3g" + }, + { + "duration": "18.0", + "name": "loading.mobile/GoogleRedirectToGoogleJapan" + }, + { + "duration": "21.0", + "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/Hongkiat" + }, + { + "duration": "29.0", + "name": "loading.mobile/Hongkiat_3g" + }, + { + "duration": "16.0", + "name": "loading.mobile/KapanLagi" + }, + { + "duration": "7.0", + "name": "loading.mobile/KapanLagi_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/Kaskus" + }, + { + "duration": "7.0", + "name": "loading.mobile/Kaskus_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/LocalMoxie" + }, + { + "duration": "7.0", + "name": "loading.mobile/LocalMoxie_3g" + }, + { + "duration": "14.0", + "name": "loading.mobile/Locanto" + }, + { + "duration": "16.0", + "name": "loading.mobile/Locanto_3g" + }, + { + "duration": "14.0", + "name": "loading.mobile/OLX" + }, + { + "duration": "25.0", + "name": "loading.mobile/OLX_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/QQNews" + }, + { + "duration": "29.0", + "name": "loading.mobile/QQNews_3g" + }, + { + "duration": "14.0", + "name": "loading.mobile/SlideShare" + }, + { + "duration": "23.0", + "name": "loading.mobile/SlideShare_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/Suumo_cold" + }, + { + "duration": "15.0", + "name": "loading.mobile/Suumo_cold_3g" + }, + { + "duration": "19.0", + "name": "loading.mobile/Suumo_hot" + }, + { + "duration": "20.0", + "name": "loading.mobile/Suumo_hot_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/Suumo_warm" + }, + { + "duration": "17.0", + "name": "loading.mobile/Suumo_warm_3g" + }, + { + "duration": "13.0", + "name": "loading.mobile/Thairath" + }, + { + "duration": "7.0", + "name": "loading.mobile/Thairath_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/TheStar" + }, + { + "duration": "7.0", + "name": "loading.mobile/TheStar_3g" + }, + { + "duration": "19.0", + "name": "loading.mobile/TribunNews" + }, + { + "duration": "36.0", + "name": "loading.mobile/TribunNews_3g" + }, + { + "duration": "13.0", + "name": "loading.mobile/Twitter" + }, + { + "duration": "17.0", + "name": "loading.mobile/Twitter_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/VoiceMemos_cold" + }, + { + "duration": "17.0", + "name": "loading.mobile/VoiceMemos_cold_3g" + }, + { + "duration": "7.0", + "name": "loading.mobile/VoiceMemos_hot" + }, + { + "duration": "7.0", + "name": "loading.mobile/VoiceMemos_hot_3g" + }, + { + "duration": "7.0", + "name": "loading.mobile/VoiceMemos_warm" + }, + { + "duration": "7.0", + "name": "loading.mobile/VoiceMemos_warm_3g" + }, + { + "duration": "15.0", + "name": "loading.mobile/Wikipedia" + }, + { + "duration": "20.0", + "name": "loading.mobile/Wikipedia_3g" + }, + { + "duration": "17.0", + "name": "loading.mobile/YahooNews" + }, + { + "duration": "9.0", + "name": "loading.mobile/YahooNews_3g" + }, + { + "duration": "16.0", + "name": "loading.mobile/Youtube" + }, + { + "duration": "30.0", + "name": "loading.mobile/Youtube_3g" + }, + { + "duration": "15.0", + "name": "media.mobile/mse.html?media=aac_audio.mp4" + }, + { + "duration": "16.0", + "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4" + }, + { + "duration": "15.0", + "name": "media.mobile/mse.html?media=h264_video.mp4" + }, + { + "duration": "15.0", + "name": "media.mobile/mse.html?media=tulip2.vp9.webm" + }, + { + "duration": "137.0", + "name": "media.mobile/video.html?src=boat_1080p60fps_vp9.webm" + }, + { + "duration": "138.0", + "name": "media.mobile/video.html?src=foodmarket_720p30fps.mp4" + }, + { + "duration": "32.0", + "name": "media.mobile/video.html?src=tulip2.m4a&type=audio" + }, + { + "duration": "32.0", + "name": "media.mobile/video.html?src=tulip2.mp3&type=audio" + }, + { + "duration": "12.0", + "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek" + }, + { + "duration": "32.0", + "name": "media.mobile/video.html?src=tulip2.mp4" + }, + { + "duration": "32.0", + "name": "media.mobile/video.html?src=tulip2.mp4&busyjs" + }, + { + "duration": "35.0", + "name": "media.mobile/video.html?src=tulip2.ogg&type=audio" + }, + { + "duration": "15.0", + "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek" + }, + { + "duration": "32.0", + "name": "media.mobile/video.html?src=tulip2.vp9.webm" + }, + { + "duration": "22.0", + "name": "media.mobile/video.html?src=tulip2.vp9.webm&background" + }, + { + "duration": "33.0", + "name": "media.mobile/video.html?src=tulip2.vp9.webm_WiFi" + }, + { + "duration": "45.0", + "name": "octane/Octane" + }, + { + "duration": "28.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" + }, + { + "duration": "10.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html" + }, + { + "duration": "22.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html" + }, + { + "duration": "11.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html" + }, + { + "duration": "10.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html" + }, + { + "duration": "15.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" + }, + { + "duration": "21.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" + }, + { + "duration": "26.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html" + }, + { + "duration": "23.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html" + }, + { + "duration": "22.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html" + }, + { + "duration": "11.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html" + }, + { + "duration": "22.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html" + }, + { + "duration": "14.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html" + }, + { + "duration": "21.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html" + }, + { + "duration": "9.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html" + }, + { + "duration": "12.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html" + }, + { + "duration": "25.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html" + }, + { + "duration": "10.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html" + }, + { + "duration": "0.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html" + }, + { + "duration": "11.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html" + }, + { + "duration": "19.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html" + }, + { + "duration": "25.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html" + }, + { + "duration": "32.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html" + }, + { + "duration": "12.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" + }, + { + "duration": "28.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" + }, + { + "duration": "32.0", + "name": "rendering.mobile/accu_weather_2018" + }, + { + "duration": "31.0", + "name": "rendering.mobile/accu_weather_mobile_pinch_2018" + }, + { + "duration": "27.0", + "name": "rendering.mobile/amazon_2018" + }, + { + "duration": "33.0", + "name": "rendering.mobile/amazon_mobile_2018" + }, + { + "duration": "31.0", + "name": "rendering.mobile/analog_clock_svg" + }, + { + "duration": "30.0", + "name": "rendering.mobile/androidpolice_mobile_2018" + }, + { + "duration": "35.0", + "name": "rendering.mobile/animometer_webgl" + }, + { + "duration": "34.0", + "name": "rendering.mobile/animometer_webgl_attrib_arrays" + }, + { + "duration": "35.0", + "name": "rendering.mobile/animometer_webgl_multi_draw" + }, + { + "duration": "33.0", + "name": "rendering.mobile/aquarium" + }, + { + "duration": "14.0", + "name": "rendering.mobile/aquarium_20k" + }, + { + "duration": "30.0", + "name": "rendering.mobile/background_color_animation" + }, + { + "duration": "30.0", + "name": "rendering.mobile/background_color_animation_with_gradient" + }, + { + "duration": "23.0", + "name": "rendering.mobile/baidu_mobile_2018" + }, + { + "duration": "31.0", + "name": "rendering.mobile/balls_css_key_frame_animations" + }, + { + "duration": "14.0", + "name": "rendering.mobile/balls_css_key_frame_animations_composited_transform" + }, + { + "duration": "30.0", + "name": "rendering.mobile/balls_css_transition_2_properties" + }, + { + "duration": "30.0", + "name": "rendering.mobile/balls_css_transition_40_properties" + }, + { + "duration": "30.0", + "name": "rendering.mobile/balls_css_transition_all_properties" + }, + { + "duration": "30.0", + "name": "rendering.mobile/balls_javascript_canvas" + }, + { + "duration": "30.0", + "name": "rendering.mobile/balls_javascript_css" + }, + { + "duration": "31.0", + "name": "rendering.mobile/balls_svg_animations" + }, + { + "duration": "28.0", + "name": "rendering.mobile/basic_stream" + }, + { + "duration": "26.0", + "name": "rendering.mobile/bing_mobile_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/blob" + }, + { + "duration": "23.0", + "name": "rendering.mobile/blogspot_2018" + }, + { + "duration": "25.0", + "name": "rendering.mobile/blogspot_mobile_2018" + }, + { + "duration": "21.0", + "name": "rendering.mobile/blur_rotating_background" + }, + { + "duration": "20.0", + "name": "rendering.mobile/boingboing_mobile_2018" + }, + { + "duration": "19.0", + "name": "rendering.mobile/booking.com_2018" + }, + { + "duration": "16.0", + "name": "rendering.mobile/booking.com_mobile_2018" + }, + { + "duration": "24.0", + "name": "rendering.mobile/bouncing_balls_15" + }, + { + "duration": "24.0", + "name": "rendering.mobile/bouncing_balls_shadow" + }, + { + "duration": "25.0", + "name": "rendering.mobile/bouncing_clipped_rectangles" + }, + { + "duration": "24.0", + "name": "rendering.mobile/bouncing_gradient_circles" + }, + { + "duration": "24.0", + "name": "rendering.mobile/bouncing_png_images" + }, + { + "duration": "25.0", + "name": "rendering.mobile/bouncing_svg_images" + }, + { + "duration": "27.0", + "name": "rendering.mobile/camera_to_webgl" + }, + { + "duration": "24.0", + "name": "rendering.mobile/canvas2d_to_texture.html" + }, + { + "duration": "41.0", + "name": "rendering.mobile/canvas_05000_pixels_per_second" + }, + { + "duration": "41.0", + "name": "rendering.mobile/canvas_10000_pixels_per_second" + }, + { + "duration": "41.0", + "name": "rendering.mobile/canvas_20000_pixels_per_second" + }, + { + "duration": "39.0", + "name": "rendering.mobile/canvas_40000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.mobile/canvas_60000_pixels_per_second" + }, + { + "duration": "38.0", + "name": "rendering.mobile/canvas_75000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.mobile/canvas_90000_pixels_per_second" + }, + { + "duration": "24.0", + "name": "rendering.mobile/canvas_animation_no_clear" + }, + { + "duration": "24.0", + "name": "rendering.mobile/canvas_arcs" + }, + { + "duration": "24.0", + "name": "rendering.mobile/canvas_font_cycler" + }, + { + "duration": "24.0", + "name": "rendering.mobile/canvas_lines" + }, + { + "duration": "24.0", + "name": "rendering.mobile/canvas_to_blob" + }, + { + "duration": "24.0", + "name": "rendering.mobile/canvas_to_canvas_draw" + }, + { + "duration": "22.0", + "name": "rendering.mobile/capitolvolkswagen_mobile_2018" + }, + { + "duration": "21.0", + "name": "rendering.mobile/card_expansion" + }, + { + "duration": "22.0", + "name": "rendering.mobile/card_expansion_animated" + }, + { + "duration": "23.0", + "name": "rendering.mobile/card_expansion_images_text" + }, + { + "duration": "21.0", + "name": "rendering.mobile/card_flying" + }, + { + "duration": "21.0", + "name": "rendering.mobile/cats_unscaled" + }, + { + "duration": "19.0", + "name": "rendering.mobile/cats_viewport_width" + }, + { + "duration": "28.0", + "name": "rendering.mobile/cc_poster_circle" + }, + { + "duration": "26.0", + "name": "rendering.mobile/cc_scroll_text_only" + }, + { + "duration": "27.0", + "name": "rendering.mobile/chip_tune" + }, + { + "duration": "19.0", + "name": "rendering.mobile/cnn_2018" + }, + { + "duration": "20.0", + "name": "rendering.mobile/cnn_article_mobile_2018" + }, + { + "duration": "19.0", + "name": "rendering.mobile/cnn_mobile_2018" + }, + { + "duration": "23.0", + "name": "rendering.mobile/cnn_mobile_pinch_2018" + }, + { + "duration": "20.0", + "name": "rendering.mobile/cnn_pathological_2018" + }, + { + "duration": "24.0", + "name": "rendering.mobile/compositor_heavy_animation" + }, + { + "duration": "23.0", + "name": "rendering.mobile/coordinated_animation" + }, + { + "duration": "9.0", + "name": "rendering.mobile/core_scroll_header_panel" + }, + { + "duration": "24.0", + "name": "rendering.mobile/crafty_mind" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_many_keyframes" + }, + { + "duration": "24.0", + "name": "rendering.mobile/css_animations_simultaneous_inline_style" + }, + { + "duration": "24.0", + "name": "rendering.mobile/css_animations_simultaneous_new_element" + }, + { + "duration": "24.0", + "name": "rendering.mobile/css_animations_simultaneous_style_element" + }, + { + "duration": "24.0", + "name": "rendering.mobile/css_animations_simultaneous_updating_class" + }, + { + "duration": "24.0", + "name": "rendering.mobile/css_animations_staggered_infinite_iterations" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_staggered_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_staggered_new_element" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_staggered_style_element" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_staggered_updating_class" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_triggered_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_triggered_new_element" + }, + { + "duration": "24.0", + "name": "rendering.mobile/css_animations_triggered_style_element" + }, + { + "duration": "25.0", + "name": "rendering.mobile/css_animations_triggered_updating_class" + }, + { + "duration": "27.0", + "name": "rendering.mobile/css_opacity_plus_n_layers_0" + }, + { + "duration": "27.0", + "name": "rendering.mobile/css_opacity_plus_n_layers_75" + }, + { + "duration": "27.0", + "name": "rendering.mobile/css_opacity_plus_n_layers_99" + }, + { + "duration": "24.0", + "name": "rendering.mobile/css_transitions_inline_style" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_new_element" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_staggered_inline_style" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_staggered_new_element" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_staggered_style_element" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_staggered_updating_class" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_style_element" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_triggered_inline_style" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_triggered_new_element" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_triggered_style_element" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_triggered_updating_class" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_transitions_updating_class" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_value_type_color" + }, + { + "duration": "21.0", + "name": "rendering.mobile/css_value_type_filter" + }, + { + "duration": "21.0", + "name": "rendering.mobile/css_value_type_length" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_value_type_length_complex" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_value_type_length_simple" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_value_type_path" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_value_type_shadow" + }, + { + "duration": "22.0", + "name": "rendering.mobile/css_value_type_transform_complex" + }, + { + "duration": "21.0", + "name": "rendering.mobile/css_value_type_transform_simple" + }, + { + "duration": "26.0", + "name": "rendering.mobile/deviantart_mobile_2018" + }, + { + "duration": "16.0", + "name": "rendering.mobile/digg_mobile_2018" + }, + { + "duration": "22.0", + "name": "rendering.mobile/docs_paper.html" + }, + { + "duration": "22.0", + "name": "rendering.mobile/docs_resume.html" + }, + { + "duration": "22.0", + "name": "rendering.mobile/docs_table.html" + }, + { + "duration": "22.0", + "name": "rendering.mobile/draw_image" + }, + { + "duration": "22.0", + "name": "rendering.mobile/draw_image_not_pixel_aligned" + }, + { + "duration": "22.0", + "name": "rendering.mobile/dynamic_canvas_to_hw_accelerated_canvas.html" + }, + { + "duration": "25.0", + "name": "rendering.mobile/dynamic_cube_map" + }, + { + "duration": "22.0", + "name": "rendering.mobile/dynamic_webgl_to_hw_accelerated_canvas.html" + }, + { + "duration": "24.0", + "name": "rendering.mobile/earth" + }, + { + "duration": "17.0", + "name": "rendering.mobile/ebay_2018" + }, + { + "duration": "14.0", + "name": "rendering.mobile/ebay_mobile_2018" + }, + { + "duration": "19.0", + "name": "rendering.mobile/ebay_mobile_pinch_2018" + }, + { + "duration": "29.0", + "name": "rendering.mobile/ebay_scroll_2018" + }, + { + "duration": "24.0", + "name": "rendering.mobile/effect_games" + }, + { + "duration": "25.0", + "name": "rendering.mobile/espn_2018" + }, + { + "duration": "16.0", + "name": "rendering.mobile/espn_mobile_2018" + }, + { + "duration": "16.0", + "name": "rendering.mobile/espn_pathological_2018" + }, + { + "duration": "22.0", + "name": "rendering.mobile/extra_large_texture_uploads" + }, + { + "duration": "16.0", + "name": "rendering.mobile/facebook_2018" + }, + { + "duration": "20.0", + "name": "rendering.mobile/facebook_mobile_2018" + }, + { + "duration": "22.0", + "name": "rendering.mobile/falling_particle_simulation_cpu.html" + }, + { + "duration": "22.0", + "name": "rendering.mobile/falling_particle_simulation_gpu.html" + }, + { + "duration": "11.0", + "name": "rendering.mobile/famo_us_twitter_demo" + }, + { + "duration": "22.0", + "name": "rendering.mobile/fill_clear_rect.html" + }, + { + "duration": "22.0", + "name": "rendering.mobile/fill_shapes" + }, + { + "duration": "23.0", + "name": "rendering.mobile/filter_terrain_svg" + }, + { + "duration": "28.0", + "name": "rendering.mobile/flickr_scroll_2018" + }, + { + "duration": "23.0", + "name": "rendering.mobile/font_wipe" + }, + { + "duration": "15.0", + "name": "rendering.mobile/forecast.io_mobile_2018" + }, + { + "duration": "30.0", + "name": "rendering.mobile/geo_apis" + }, + { + "duration": "30.0", + "name": "rendering.mobile/get_image_data_cpu.html" + }, + { + "duration": "27.0", + "name": "rendering.mobile/get_image_data_gpu.html" + }, + { + "duration": "28.0", + "name": "rendering.mobile/gmail_2018" + }, + { + "duration": "19.0", + "name": "rendering.mobile/google_calendar_2018" + }, + { + "duration": "25.0", + "name": "rendering.mobile/google_docs_2018" + }, + { + "duration": "23.0", + "name": "rendering.mobile/google_image_search_2018" + }, + { + "duration": "27.0", + "name": "rendering.mobile/google_image_search_mobile_2018" + }, + { + "duration": "23.0", + "name": "rendering.mobile/google_news_ios" + }, + { + "duration": "22.0", + "name": "rendering.mobile/google_news_mobile_2018" + }, + { + "duration": "25.0", + "name": "rendering.mobile/google_plus_2018" + }, + { + "duration": "38.0", + "name": "rendering.mobile/google_plus_mobile_2018" + }, + { + "duration": "27.0", + "name": "rendering.mobile/google_search_mobile_pinch_2018" + }, + { + "duration": "21.0", + "name": "rendering.mobile/google_web_search_2018" + }, + { + "duration": "26.0", + "name": "rendering.mobile/google_web_search_mobile_2018" + }, + { + "duration": "27.0", + "name": "rendering.mobile/gpu_bound_shader.html" + }, + { + "duration": "28.0", + "name": "rendering.mobile/gsp.ro_mobile_2018" + }, + { + "duration": "30.0", + "name": "rendering.mobile/guardian_pathological_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/guimark_vector_chart" + }, + { + "duration": "27.0", + "name": "rendering.mobile/gws_boogie_expansion" + }, + { + "duration": "28.0", + "name": "rendering.mobile/gws_google_expansion" + }, + { + "duration": "27.0", + "name": "rendering.mobile/hakim" + }, + { + "duration": "22.0", + "name": "rendering.mobile/horizontal_vertical_expansion" + }, + { + "duration": "27.0", + "name": "rendering.mobile/hw_accelerated_canvas_to_sw_canvas.html" + }, + { + "duration": "42.0", + "name": "rendering.mobile/idle_power_blank" + }, + { + "duration": "35.0", + "name": "rendering.mobile/ie_chalkboard" + }, + { + "duration": "34.0", + "name": "rendering.mobile/ie_pirate_mark" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_element_n_layers_0" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_element_n_layers_75" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_element_n_layers_99" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_root_n_layers_0" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_root_n_layers_75" + }, + { + "duration": "29.0", + "name": "rendering.mobile/infinite_scroll_root_n_layers_99" + }, + { + "duration": "25.0", + "name": "rendering.mobile/infinite_scrolling" + }, + { + "duration": "28.0", + "name": "rendering.mobile/jarro_doverson" + }, + { + "duration": "22.0", + "name": "rendering.mobile/jpeg_decoding_rgb_and_gpu_rasterization" + }, + { + "duration": "22.0", + "name": "rendering.mobile/jpeg_decoding_yuv_and_gpu_rasterization" + }, + { + "duration": "32.0", + "name": "rendering.mobile/js_full_screen_invalidation" + }, + { + "duration": "30.0", + "name": "rendering.mobile/js_opacity_plus_n_layers_0" + }, + { + "duration": "30.0", + "name": "rendering.mobile/js_opacity_plus_n_layers_75" + }, + { + "duration": "30.0", + "name": "rendering.mobile/js_opacity_plus_n_layers_99" + }, + { + "duration": "30.0", + "name": "rendering.mobile/js_paint_plus_n_layers_0" + }, + { + "duration": "30.0", + "name": "rendering.mobile/js_paint_plus_n_layers_75" + }, + { + "duration": "30.0", + "name": "rendering.mobile/js_paint_plus_n_layers_99" + }, + { + "duration": "31.0", + "name": "rendering.mobile/js_poster_circle" + }, + { + "duration": "24.0", + "name": "rendering.mobile/js_scroll_text_only" + }, + { + "duration": "27.0", + "name": "rendering.mobile/kevs_3d" + }, + { + "duration": "27.0", + "name": "rendering.mobile/keyframed_animations" + }, + { + "duration": "27.0", + "name": "rendering.mobile/large_texture_uploads" + }, + { + "duration": "28.0", + "name": "rendering.mobile/latimes_pathological_2018" + }, + { + "duration": "23.0", + "name": "rendering.mobile/linkedin_2018" + }, + { + "duration": "45.0", + "name": "rendering.mobile/linkedin_mobile_2018" + }, + { + "duration": "37.0", + "name": "rendering.mobile/linkedin_mobile_pinch_2018" + }, + { + "duration": "34.0", + "name": "rendering.mobile/linkedin_pathological_2018" + }, + { + "duration": "20.0", + "name": "rendering.mobile/list_animation_simple" + }, + { + "duration": "26.0", + "name": "rendering.mobile/list_recycle_transform" + }, + { + "duration": "65.0", + "name": "rendering.mobile/lost_crypt" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_0fps_impl_60fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_0fps_impl_60fps_no_update" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_0fps_impl_60fps_no_update_jank" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_0fps_with_jank_impl_0fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_15fps_impl_0fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_15fps_with_jank_impl_0fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_30fps_impl_0fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_30fps_impl_60fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_60fps_impl_0fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_60fps_impl_60fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_60fps_impl_60fps_no_update" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_60fps_impl_60fps_no_update_jank" + }, + { + "duration": "44.0", + "name": "rendering.mobile/main_60fps_with_extreme_jank_impl_0fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_60fps_with_jank_and_delay_impl_60fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/main_60fps_with_jank_impl_0fps" + }, + { + "duration": "31.0", + "name": "rendering.mobile/main_animations_half_presented" + }, + { + "duration": "30.0", + "name": "rendering.mobile/man_in_blue" + }, + { + "duration": "29.0", + "name": "rendering.mobile/many_images" + }, + { + "duration": "31.0", + "name": "rendering.mobile/many_planets_deep" + }, + { + "duration": "28.0", + "name": "rendering.mobile/maps_perf_test" + }, + { + "duration": "22.0", + "name": "rendering.mobile/mask_transition_animation" + }, + { + "duration": "21.0", + "name": "rendering.mobile/masonry" + }, + { + "duration": "28.0", + "name": "rendering.mobile/medium_texture_uploads" + }, + { + "duration": "28.0", + "name": "rendering.mobile/megi_dish" + }, + { + "duration": "60.0", + "name": "rendering.mobile/microgame_fps" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_asteroid_belt" + }, + { + "duration": "12.0", + "name": "rendering.mobile/microsoft_fireflies" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_fish_ie_tank" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_performance" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_snow" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_speed_reading" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_tweet_map" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_video_city" + }, + { + "duration": "28.0", + "name": "rendering.mobile/microsoft_worker_fountains" + }, + { + "duration": "28.0", + "name": "rendering.mobile/mix_10k" + }, + { + "duration": "28.0", + "name": "rendering.mobile/mix_blend_mode_animation_difference" + }, + { + "duration": "28.0", + "name": "rendering.mobile/mix_blend_mode_animation_hue" + }, + { + "duration": "27.0", + "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation" + }, + { + "duration": "28.0", + "name": "rendering.mobile/mix_blend_mode_animation_screen" + }, + { + "duration": "34.0", + "name": "rendering.mobile/mlb_mobile_2018" + }, + { + "duration": "21.0", + "name": "rendering.mobile/mobile_news_sandbox" + }, + { + "duration": "29.0", + "name": "rendering.mobile/motion_mark_canvas_fill_shapes" + }, + { + "duration": "28.0", + "name": "rendering.mobile/motion_mark_canvas_stroke_shapes" + }, + { + "duration": "27.0", + "name": "rendering.mobile/motionmark_anim_design_15" + }, + { + "duration": "26.0", + "name": "rendering.mobile/motionmark_anim_focus_25" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_anim_images_50" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_anim_leaves_250" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_anim_multiply_175" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_anim_suits_125" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_composited_transforms_125" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25" + }, + { + "duration": "24.0", + "name": "rendering.mobile/motionmark_html_focus_20_15" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_html_leaves_20_50" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_svg_bouncing_circles_250" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200" + }, + { + "duration": "25.0", + "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50" + }, + { + "duration": "31.0", + "name": "rendering.mobile/new_tilings" + }, + { + "duration": "27.0", + "name": "rendering.mobile/no_op_raf" + }, + { + "duration": "24.0", + "name": "rendering.mobile/no_op_scroll" + }, + { + "duration": "23.0", + "name": "rendering.mobile/no_op_settimeout" + }, + { + "duration": "24.0", + "name": "rendering.mobile/no_op_touch_handler" + }, + { + "duration": "30.0", + "name": "rendering.mobile/nvidia_vertex_buffer_object" + }, + { + "duration": "28.0", + "name": "rendering.mobile/nyc_gov_scroll_2018" + }, + { + "duration": "33.0", + "name": "rendering.mobile/nytimes_mobile_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/nytimes_scroll_2018" + }, + { + "duration": "26.0", + "name": "rendering.mobile/off_screen_main_60fps" + }, + { + "duration": "26.0", + "name": "rendering.mobile/off_screen_main_60fps_jank" + }, + { + "duration": "26.0", + "name": "rendering.mobile/overlay_background_color_css_transitions_page" + }, + { + "duration": "11.0", + "name": "rendering.mobile/paper_button" + }, + { + "duration": "15.0", + "name": "rendering.mobile/paper_calculator" + }, + { + "duration": "11.0", + "name": "rendering.mobile/paper_calculator_hit_test" + }, + { + "duration": "11.0", + "name": "rendering.mobile/paper_checkbox" + }, + { + "duration": "15.0", + "name": "rendering.mobile/paper_fab" + }, + { + "duration": "15.0", + "name": "rendering.mobile/paper_icon_button" + }, + { + "duration": "15.0", + "name": "rendering.mobile/paper_shadow" + }, + { + "duration": "15.0", + "name": "rendering.mobile/paper_tabs" + }, + { + "duration": "15.0", + "name": "rendering.mobile/paper_toggle_button" + }, + { + "duration": "22.0", + "name": "rendering.mobile/parallax_effect" + }, + { + "duration": "35.0", + "name": "rendering.mobile/particles" + }, + { + "duration": "29.0", + "name": "rendering.mobile/pbs_pathological_2018" + }, + { + "duration": "20.0", + "name": "rendering.mobile/physical_simulation" + }, + { + "duration": "35.0", + "name": "rendering.mobile/pinterest_2018" + }, + { + "duration": "32.0", + "name": "rendering.mobile/pinterest_mobile_2018" + }, + { + "duration": "15.0", + "name": "rendering.mobile/polymer_topeka" + }, + { + "duration": "34.0", + "name": "rendering.mobile/put_and_create_imagebitmap_from_imagedata" + }, + { + "duration": "30.0", + "name": "rendering.mobile/put_get_image_data" + }, + { + "duration": "30.0", + "name": "rendering.mobile/put_image_data.html" + }, + { + "duration": "27.0", + "name": "rendering.mobile/raf" + }, + { + "duration": "27.0", + "name": "rendering.mobile/raf_animation" + }, + { + "duration": "27.0", + "name": "rendering.mobile/raf_canvas" + }, + { + "duration": "27.0", + "name": "rendering.mobile/raf_touch_animation" + }, + { + "duration": "29.0", + "name": "rendering.mobile/recode_pathological_2018" + }, + { + "duration": "29.0", + "name": "rendering.mobile/reddit_mobile_2018" + }, + { + "duration": "33.0", + "name": "rendering.mobile/runway_2019" + }, + { + "duration": "34.0", + "name": "rendering.mobile/san_angeles" + }, + { + "duration": "16.0", + "name": "rendering.mobile/second_batch_js_heavy" + }, + { + "duration": "16.0", + "name": "rendering.mobile/second_batch_js_light" + }, + { + "duration": "16.0", + "name": "rendering.mobile/second_batch_js_medium" + }, + { + "duration": "29.0", + "name": "rendering.mobile/sfgate_mobile_2018" + }, + { + "duration": "25.0", + "name": "rendering.mobile/sheets_render.html" + }, + { + "duration": "27.0", + "name": "rendering.mobile/silk_finance" + }, + { + "duration": "22.0", + "name": "rendering.mobile/simple_text_page" + }, + { + "duration": "21.0", + "name": "rendering.mobile/simple_touch_drag" + }, + { + "duration": "66.0", + "name": "rendering.mobile/skelebuddies_wasm_2020" + }, + { + "duration": "31.0", + "name": "rendering.mobile/slashdot_mobile_2018" + }, + { + "duration": "22.0", + "name": "rendering.mobile/slide_drawer" + }, + { + "duration": "25.0", + "name": "rendering.mobile/small_texture_uploads" + }, + { + "duration": "29.0", + "name": "rendering.mobile/smash_cat" + }, + { + "duration": "25.0", + "name": "rendering.mobile/spielzeugz" + }, + { + "duration": "25.0", + "name": "rendering.mobile/static_canvas_to_hw_accelerated_canvas.html" + }, + { + "duration": "25.0", + "name": "rendering.mobile/static_webgl_to_hw_accelerated_canvas.html" + }, + { + "duration": "21.0", + "name": "rendering.mobile/sticky_using_webkit" + }, + { + "duration": "26.0", + "name": "rendering.mobile/stress_hidey_bars" + }, + { + "duration": "25.0", + "name": "rendering.mobile/stroke_shapes" + }, + { + "duration": "36.0", + "name": "rendering.mobile/svg_icon_raster" + }, + { + "duration": "19.0", + "name": "rendering.mobile/swipe_action" + }, + { + "duration": "21.0", + "name": "rendering.mobile/swipe_to_dismiss" + }, + { + "duration": "21.0", + "name": "rendering.mobile/sync_scroll_offset" + }, + { + "duration": "31.0", + "name": "rendering.mobile/techcrunch_2018" + }, + { + "duration": "24.0", + "name": "rendering.mobile/techcrunch_mobile_2018" + }, + { + "duration": "41.0", + "name": "rendering.mobile/text_05000_pixels_per_second" + }, + { + "duration": "41.0", + "name": "rendering.mobile/text_10000_pixels_per_second" + }, + { + "duration": "40.0", + "name": "rendering.mobile/text_20000_pixels_per_second" + }, + { + "duration": "39.0", + "name": "rendering.mobile/text_40000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.mobile/text_60000_pixels_per_second" + }, + { + "duration": "38.0", + "name": "rendering.mobile/text_75000_pixels_per_second" + }, + { + "duration": "38.0", + "name": "rendering.mobile/text_90000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second" + }, + { + "duration": "34.0", + "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second" + }, + { + "duration": "32.0", + "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second" + }, + { + "duration": "33.0", + "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second" + }, + { + "duration": "32.0", + "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second" + }, + { + "duration": "41.0", + "name": "rendering.mobile/text_hover_05000_pixels_per_second" + }, + { + "duration": "41.0", + "name": "rendering.mobile/text_hover_10000_pixels_per_second" + }, + { + "duration": "41.0", + "name": "rendering.mobile/text_hover_20000_pixels_per_second" + }, + { + "duration": "39.0", + "name": "rendering.mobile/text_hover_40000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.mobile/text_hover_60000_pixels_per_second" + }, + { + "duration": "34.0", + "name": "rendering.mobile/text_hover_75000_pixels_per_second" + }, + { + "duration": "32.0", + "name": "rendering.mobile/text_hover_90000_pixels_per_second" + }, + { + "duration": "24.0", + "name": "rendering.mobile/theverge_article_mobile_2018" + }, + { + "duration": "23.0", + "name": "rendering.mobile/theverge_mobile_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/throughput_scrolling_active_handler" + }, + { + "duration": "28.0", + "name": "rendering.mobile/throughput_scrolling_composited" + }, + { + "duration": "31.0", + "name": "rendering.mobile/throughput_scrolling_passive_handler" + }, + { + "duration": "28.0", + "name": "rendering.mobile/throughput_scrolling_uncomposited" + }, + { + "duration": "58.0", + "name": "rendering.mobile/tiny_racing_v3_wasm_2020" + }, + { + "duration": "31.0", + "name": "rendering.mobile/toBlob_duration.html" + }, + { + "duration": "29.0", + "name": "rendering.mobile/toBlob_duration_jpeg.html" + }, + { + "duration": "29.0", + "name": "rendering.mobile/toBlob_small_canvas_in_worker.html" + }, + { + "duration": "26.0", + "name": "rendering.mobile/toggle_drawer" + }, + { + "duration": "25.0", + "name": "rendering.mobile/touch_handler_scrolling" + }, + { + "duration": "28.0", + "name": "rendering.mobile/transfer_from_imageBitmap.html" + }, + { + "duration": "28.0", + "name": "rendering.mobile/transform_transitions" + }, + { + "duration": "28.0", + "name": "rendering.mobile/transform_transitions_js_block" + }, + { + "duration": "29.0", + "name": "rendering.mobile/twitch_2018" + }, + { + "duration": "30.0", + "name": "rendering.mobile/twitch_mobile_pinch_2018" + }, + { + "duration": "26.0", + "name": "rendering.mobile/twitter_2018" + }, + { + "duration": "33.0", + "name": "rendering.mobile/twitter_mobile_2018" + }, + { + "duration": "25.0", + "name": "rendering.mobile/update_history_state" + }, + { + "duration": "22.0", + "name": "rendering.mobile/usatoday_mobile_2018" + }, + { + "duration": "23.0", + "name": "rendering.mobile/vertical_expansion" + }, + { + "duration": "29.0", + "name": "rendering.mobile/video_to_hw_accelerated_canvas" + }, + { + "duration": "28.0", + "name": "rendering.mobile/video_to_sub_texture" + }, + { + "duration": "28.0", + "name": "rendering.mobile/video_to_sub_texture_flip_and_premultiply" + }, + { + "duration": "28.0", + "name": "rendering.mobile/video_to_sub_texture_flip_y" + }, + { + "duration": "28.0", + "name": "rendering.mobile/video_to_sub_texture_premultiply" + }, + { + "duration": "29.0", + "name": "rendering.mobile/video_to_texture" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_color" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_length_3d" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_length_complex" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_length_simple" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_path" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_shadow" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_transform_complex" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animation_value_type_transform_simple" + }, + { + "duration": "30.0", + "name": "rendering.mobile/web_animations_many_keyframes" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animations_set_current_time" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animations_simultaneous" + }, + { + "duration": "29.0", + "name": "rendering.mobile/web_animations_staggered_chaining" + }, + { + "duration": "28.0", + "name": "rendering.mobile/web_animations_staggered_infinite_iterations" + }, + { + "duration": "29.0", + "name": "rendering.mobile/web_animations_staggered_triggering_page" + }, + { + "duration": "28.0", + "name": "rendering.mobile/webgl_to_texture" + }, + { + "duration": "23.0", + "name": "rendering.mobile/webp_decoding_rgb_and_gpu_rasterization" + }, + { + "duration": "23.0", + "name": "rendering.mobile/webp_decoding_yuv_and_gpu_rasterization" + }, + { + "duration": "28.0", + "name": "rendering.mobile/wikipedia_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/wikipedia_mobile_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/wordpress_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/wordpress_mobile_2018" + }, + { + "duration": "28.0", + "name": "rendering.mobile/worldjournal_mobile_2018" + }, + { + "duration": "32.0", + "name": "rendering.mobile/wow_wiki_pathological_2018" + }, + { + "duration": "39.0", + "name": "rendering.mobile/wowwiki_mobile_2018" + }, + { + "duration": "29.0", + "name": "rendering.mobile/wsj_mobile_2018" + }, + { + "duration": "27.0", + "name": "rendering.mobile/yahoo_answers_2018" + }, + { + "duration": "29.0", + "name": "rendering.mobile/yahoo_answers_mobile_2018" + }, + { + "duration": "21.0", + "name": "rendering.mobile/yahoo_news_2018" + }, + { + "duration": "24.0", + "name": "rendering.mobile/yahoo_news_mobile_2018" + }, + { + "duration": "24.0", + "name": "rendering.mobile/yahoo_sports_2018" + }, + { + "duration": "21.0", + "name": "rendering.mobile/yahoo_sports_pathological_2018" + }, + { + "duration": "10.0", + "name": "rendering.mobile/youtube_2018" + }, + { + "duration": "18.0", + "name": "rendering.mobile/youtube_mobile_2018" + }, + { + "duration": "24.0", + "name": "rendering.mobile/zdnet_pathological_2018" + }, + { + "duration": "21.0", + "name": "rendering.mobile/zoom_in_animation" + }, + { + "duration": "22.0", + "name": "speedometer-future/http://browserbench.org/Speedometer/" + }, + { + "duration": "20.0", + "name": "speedometer/http://browserbench.org/Speedometer/" + }, + { + "duration": "34.0", + "name": "speedometer2-future/Speedometer2" + }, + { + "duration": "38.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "32.0", + "name": "speedometer2/Speedometer2" + }, + { + "duration": "80.0", + "name": "startup.mobile/cct:coldish:bbc" + }, + { + "duration": "83.0", + "name": "startup.mobile/intent:coldish:bbc" + }, + { + "duration": "55.0", + "name": "startup.mobile/intent:warm:bbc" + }, + { + "duration": "52.0", + "name": "startup.mobile/maps_pwa:with_http_cache" + }, + { + "duration": "26.0", + "name": "system_health.common_mobile/background:media:imgur:2019" + }, + { + "duration": "38.0", + "name": "system_health.common_mobile/background:news:nytimes:2019" + }, + { + "duration": "25.0", + "name": "system_health.common_mobile/background:search:google:2019" + }, + { + "duration": "24.0", + "name": "system_health.common_mobile/background:social:facebook:2019" + }, + { + "duration": "33.0", + "name": "system_health.common_mobile/background:tools:gmail:2019" + }, + { + "duration": "64.0", + "name": "system_health.common_mobile/browse:chrome:newtab:2019" + }, + { + "duration": "30.0", + "name": "system_health.common_mobile/browse:chrome:omnibox:2019" + }, + { + "duration": "74.0", + "name": "system_health.common_mobile/browse:media:facebook_photos:2019" + }, + { + "duration": "50.0", + "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" + }, + { + "duration": "46.0", + "name": "system_health.common_mobile/browse:media:googleplaystore:2019" + }, + { + "duration": "74.0", + "name": "system_health.common_mobile/browse:media:imgur:2019" + }, + { + "duration": "54.0", + "name": "system_health.common_mobile/browse:media:youtube:2019" + }, + { + "duration": "49.0", + "name": "system_health.common_mobile/browse:news:cnn:2020" + }, + { + "duration": "10.0", + "name": "system_health.common_mobile/browse:news:cricbuzz:2019" + }, + { + "duration": "42.0", + "name": "system_health.common_mobile/browse:news:globo:2019" + }, + { + "duration": "49.0", + "name": "system_health.common_mobile/browse:news:nytimes:2019" + }, + { + "duration": "37.0", + "name": "system_health.common_mobile/browse:news:qq:2019" + }, + { + "duration": "54.0", + "name": "system_health.common_mobile/browse:news:reddit:2019" + }, + { + "duration": "47.0", + "name": "system_health.common_mobile/browse:news:toi:2019" + }, + { + "duration": "53.0", + "name": "system_health.common_mobile/browse:news:washingtonpost:2019" + }, + { + "duration": "29.0", + "name": "system_health.common_mobile/browse:search:amp:2018" + }, + { + "duration": "31.0", + "name": "system_health.common_mobile/browse:search:amp:sxg:2019" + }, + { + "duration": "54.0", + "name": "system_health.common_mobile/browse:shopping:amazon:2019" + }, + { + "duration": "53.0", + "name": "system_health.common_mobile/browse:shopping:avito:2019" + }, + { + "duration": "55.0", + "name": "system_health.common_mobile/browse:shopping:flipkart:2019" + }, + { + "duration": "57.0", + "name": "system_health.common_mobile/browse:shopping:lazada:2019" + }, + { + "duration": "10.0", + "name": "system_health.common_mobile/browse:social:facebook:2019" + }, + { + "duration": "80.0", + "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "84.0", + "name": "system_health.common_mobile/browse:social:instagram:2019" + }, + { + "duration": "7.0", + "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" + }, + { + "duration": "63.0", + "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "74.0", + "name": "system_health.common_mobile/browse:social:twitter:2019" + }, + { + "duration": "70.0", + "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "47.0", + "name": "system_health.common_mobile/browse:tools:maps:2019" + }, + { + "duration": "25.0", + "name": "system_health.common_mobile/load:chrome:blank" + }, + { + "duration": "26.0", + "name": "system_health.common_mobile/load:games:bubbles:2020" + }, + { + "duration": "30.0", + "name": "system_health.common_mobile/load:games:lazors" + }, + { + "duration": "31.0", + "name": "system_health.common_mobile/load:games:spychase:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:media:dailymotion:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" + }, + { + "duration": "26.0", + "name": "system_health.common_mobile/load:media:facebook_photos:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" + }, + { + "duration": "28.0", + "name": "system_health.common_mobile/load:media:flickr:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:media:google_images:2018" + }, + { + "duration": "29.0", + "name": "system_health.common_mobile/load:media:imgur:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:media:soundcloud:2018" + }, + { + "duration": "21.0", + "name": "system_health.common_mobile/load:media:youtube:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:news:bbc:2019" + }, + { + "duration": "29.0", + "name": "system_health.common_mobile/load:news:cnn:2020" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:news:irctc:2019" + }, + { + "duration": "29.0", + "name": "system_health.common_mobile/load:news:nytimes:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:news:qq:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:news:reddit:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:news:washingtonpost:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:news:wikipedia:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:search:amazon:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:search:baidu:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:search:ebay:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:search:google:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:search:taobao:2019" + }, + { + "duration": "21.0", + "name": "system_health.common_mobile/load:search:yahoo:2018" + }, + { + "duration": "21.0", + "name": "system_health.common_mobile/load:search:yandex:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:social:instagram:2019" + }, + { + "duration": "28.0", + "name": "system_health.common_mobile/load:social:pinterest:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:social:twitter:2019" + }, + { + "duration": "26.0", + "name": "system_health.common_mobile/load:tools:docs:2019" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:tools:drive:2019" + }, + { + "duration": "38.0", + "name": "system_health.common_mobile/load:tools:dropbox:2019" + }, + { + "duration": "35.0", + "name": "system_health.common_mobile/load:tools:gmail:2019" + }, + { + "duration": "28.0", + "name": "system_health.common_mobile/load:tools:stackoverflow:2018" + }, + { + "duration": "27.0", + "name": "system_health.common_mobile/load:tools:weather:2019" + }, + { + "duration": "7.0", + "name": "system_health.common_mobile/long_running:tools:gmail-background" + }, + { + "duration": "7.0", + "name": "system_health.common_mobile/long_running:tools:gmail-foreground" + }, + { + "duration": "30.0", + "name": "system_health.memory_mobile/background:media:imgur:2019" + }, + { + "duration": "43.0", + "name": "system_health.memory_mobile/background:news:nytimes:2019" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/background:search:google:2019" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/background:social:facebook:2019" + }, + { + "duration": "37.0", + "name": "system_health.memory_mobile/background:tools:gmail:2019" + }, + { + "duration": "67.0", + "name": "system_health.memory_mobile/browse:chrome:newtab:2019" + }, + { + "duration": "37.0", + "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" + }, + { + "duration": "71.0", + "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" + }, + { + "duration": "52.0", + "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" + }, + { + "duration": "47.0", + "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" + }, + { + "duration": "75.0", + "name": "system_health.memory_mobile/browse:media:imgur:2019" + }, + { + "duration": "62.0", + "name": "system_health.memory_mobile/browse:media:youtube:2019" + }, + { + "duration": "46.0", + "name": "system_health.memory_mobile/browse:news:cnn:2020" + }, + { + "duration": "3.0", + "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" + }, + { + "duration": "39.0", + "name": "system_health.memory_mobile/browse:news:globo:2019" + }, + { + "duration": "53.0", + "name": "system_health.memory_mobile/browse:news:nytimes:2019" + }, + { + "duration": "40.0", + "name": "system_health.memory_mobile/browse:news:qq:2019" + }, + { + "duration": "53.0", + "name": "system_health.memory_mobile/browse:news:reddit:2019" + }, + { + "duration": "43.0", + "name": "system_health.memory_mobile/browse:news:toi:2019" + }, + { + "duration": "61.0", + "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" + }, + { + "duration": "30.0", + "name": "system_health.memory_mobile/browse:search:amp:2018" + }, + { + "duration": "32.0", + "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" + }, + { + "duration": "57.0", + "name": "system_health.memory_mobile/browse:shopping:amazon:2019" + }, + { + "duration": "50.0", + "name": "system_health.memory_mobile/browse:shopping:avito:2019" + }, + { + "duration": "52.0", + "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" + }, + { + "duration": "54.0", + "name": "system_health.memory_mobile/browse:shopping:lazada:2019" + }, + { + "duration": "3.0", + "name": "system_health.memory_mobile/browse:social:facebook:2019" + }, + { + "duration": "80.0", + "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "86.0", + "name": "system_health.memory_mobile/browse:social:instagram:2019" + }, + { + "duration": "69.0", + "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "83.0", + "name": "system_health.memory_mobile/browse:social:twitter:2019" + }, + { + "duration": "3.0", + "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "48.0", + "name": "system_health.memory_mobile/browse:tools:maps:2019" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:chrome:blank" + }, + { + "duration": "27.0", + "name": "system_health.memory_mobile/load:games:bubbles:2020" + }, + { + "duration": "30.0", + "name": "system_health.memory_mobile/load:games:lazors" + }, + { + "duration": "33.0", + "name": "system_health.memory_mobile/load:games:spychase:2018" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:media:dailymotion:2019" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:media:facebook_feed:mobile:2020" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:media:facebook_photos:2019" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:media:flickr:2018" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:media:google_images:2018" + }, + { + "duration": "30.0", + "name": "system_health.memory_mobile/load:media:imgur:2018" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:media:soundcloud:2018" + }, + { + "duration": "25.0", + "name": "system_health.memory_mobile/load:media:youtube:2018" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:news:bbc:2019" + }, + { + "duration": "31.0", + "name": "system_health.memory_mobile/load:news:cnn:2020" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:news:irctc:2019" + }, + { + "duration": "31.0", + "name": "system_health.memory_mobile/load:news:nytimes:2019" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:news:qq:2019" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:news:reddit:2019" + }, + { + "duration": "26.0", + "name": "system_health.memory_mobile/load:news:washingtonpost:2019" + }, + { + "duration": "25.0", + "name": "system_health.memory_mobile/load:news:wikipedia:2018" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:search:amazon:2019" + }, + { + "duration": "30.0", + "name": "system_health.memory_mobile/load:search:baidu:2018" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:search:ebay:2018" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:search:google:2018" + }, + { + "duration": "26.0", + "name": "system_health.memory_mobile/load:search:taobao:2019" + }, + { + "duration": "24.0", + "name": "system_health.memory_mobile/load:search:yahoo:2018" + }, + { + "duration": "25.0", + "name": "system_health.memory_mobile/load:search:yandex:2018" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:social:instagram:2019" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:social:pinterest:2019" + }, + { + "duration": "25.0", + "name": "system_health.memory_mobile/load:social:twitter:2019" + }, + { + "duration": "27.0", + "name": "system_health.memory_mobile/load:tools:docs:2019" + }, + { + "duration": "28.0", + "name": "system_health.memory_mobile/load:tools:drive:2019" + }, + { + "duration": "40.0", + "name": "system_health.memory_mobile/load:tools:dropbox:2019" + }, + { + "duration": "37.0", + "name": "system_health.memory_mobile/load:tools:gmail:2019" + }, + { + "duration": "29.0", + "name": "system_health.memory_mobile/load:tools:stackoverflow:2018" + }, + { + "duration": "25.0", + "name": "system_health.memory_mobile/load:tools:weather:2019" + }, + { + "duration": "5.0", + "name": "system_health.memory_mobile/long_running:tools:gmail-background" + }, + { + "duration": "5.0", + "name": "system_health.memory_mobile/long_running:tools:gmail-foreground" + }, + { + "duration": "14.0", + "name": "tracing.tracing_with_background_memory_infra/Facebook" + }, + { + "duration": "13.0", + "name": "tracing.tracing_with_background_memory_infra/Wikipedia" + }, + { + "duration": "12.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" + }, + { + "duration": "12.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" + }, + { + "duration": "12.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" + }, + { + "duration": "12.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" + }, + { + "duration": "14.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com" + }, + { + "duration": "15.0", + "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" + }, + { + "duration": "14.0", + "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" + }, + { + "duration": "91.0", + "name": "v8.browsing_mobile-future/browse:chrome:newtab:2019" + }, + { + "duration": "57.0", + "name": "v8.browsing_mobile-future/browse:chrome:omnibox:2019" + }, + { + "duration": "98.0", + "name": "v8.browsing_mobile-future/browse:media:facebook_photos:2019" + }, + { + "duration": "75.0", + "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll:2019" + }, + { + "duration": "67.0", + "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019" + }, + { + "duration": "98.0", + "name": "v8.browsing_mobile-future/browse:media:imgur:2019" + }, + { + "duration": "82.0", + "name": "v8.browsing_mobile-future/browse:media:youtube:2019" + }, + { + "duration": "73.0", + "name": "v8.browsing_mobile-future/browse:news:cnn:2020" + }, + { + "duration": "33.0", + "name": "v8.browsing_mobile-future/browse:news:cricbuzz:2019" + }, + { + "duration": "65.0", + "name": "v8.browsing_mobile-future/browse:news:globo:2019" + }, + { + "duration": "78.0", + "name": "v8.browsing_mobile-future/browse:news:nytimes:2019" + }, + { + "duration": "64.0", + "name": "v8.browsing_mobile-future/browse:news:qq:2019" + }, + { + "duration": "82.0", + "name": "v8.browsing_mobile-future/browse:news:reddit:2019" + }, + { + "duration": "72.0", + "name": "v8.browsing_mobile-future/browse:news:toi:2019" + }, + { + "duration": "81.0", + "name": "v8.browsing_mobile-future/browse:news:washingtonpost:2019" + }, + { + "duration": "50.0", + "name": "v8.browsing_mobile-future/browse:search:amp:2018" + }, + { + "duration": "52.0", + "name": "v8.browsing_mobile-future/browse:search:amp:sxg:2019" + }, + { + "duration": "79.0", + "name": "v8.browsing_mobile-future/browse:shopping:amazon:2019" + }, + { + "duration": "76.0", + "name": "v8.browsing_mobile-future/browse:shopping:avito:2019" + }, + { + "duration": "79.0", + "name": "v8.browsing_mobile-future/browse:shopping:flipkart:2019" + }, + { + "duration": "83.0", + "name": "v8.browsing_mobile-future/browse:shopping:lazada:2019" + }, + { + "duration": "86.0", + "name": "v8.browsing_mobile-future/browse:social:facebook:2019" + }, + { + "duration": "101.0", + "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "106.0", + "name": "v8.browsing_mobile-future/browse:social:instagram:2019" + }, + { + "duration": "91.0", + "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "95.0", + "name": "v8.browsing_mobile-future/browse:social:twitter:2019" + }, + { + "duration": "33.0", + "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "68.0", + "name": "v8.browsing_mobile-future/browse:tools:maps:2019" + }, + { + "duration": "95.0", + "name": "v8.browsing_mobile/browse:chrome:newtab:2019" + }, + { + "duration": "53.0", + "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" + }, + { + "duration": "101.0", + "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" + }, + { + "duration": "79.0", + "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" + }, + { + "duration": "71.0", + "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" + }, + { + "duration": "102.0", + "name": "v8.browsing_mobile/browse:media:imgur:2019" + }, + { + "duration": "77.0", + "name": "v8.browsing_mobile/browse:media:youtube:2019" + }, + { + "duration": "76.0", + "name": "v8.browsing_mobile/browse:news:cnn:2020" + }, + { + "duration": "15.0", + "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" + }, + { + "duration": "52.0", + "name": "v8.browsing_mobile/browse:news:globo:2019" + }, + { + "duration": "81.0", + "name": "v8.browsing_mobile/browse:news:nytimes:2019" + }, + { + "duration": "67.0", + "name": "v8.browsing_mobile/browse:news:qq:2019" + }, + { + "duration": "77.0", + "name": "v8.browsing_mobile/browse:news:reddit:2019" + }, + { + "duration": "76.0", + "name": "v8.browsing_mobile/browse:news:toi:2019" + }, + { + "duration": "79.0", + "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" + }, + { + "duration": "54.0", + "name": "v8.browsing_mobile/browse:search:amp:2018" + }, + { + "duration": "56.0", + "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" + }, + { + "duration": "60.0", + "name": "v8.browsing_mobile/browse:shopping:amazon:2019" + }, + { + "duration": "59.0", + "name": "v8.browsing_mobile/browse:shopping:avito:2019" + }, + { + "duration": "61.0", + "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" + }, + { + "duration": "86.0", + "name": "v8.browsing_mobile/browse:shopping:lazada:2019" + }, + { + "duration": "36.0", + "name": "v8.browsing_mobile/browse:social:facebook:2019" + }, + { + "duration": "105.0", + "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "110.0", + "name": "v8.browsing_mobile/browse:social:instagram:2019" + }, + { + "duration": "89.0", + "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "91.0", + "name": "v8.browsing_mobile/browse:social:twitter:2019" + }, + { + "duration": "99.0", + "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "72.0", + "name": "v8.browsing_mobile/browse:tools:maps:2019" + }, + { + "duration": "21.0", + "name": "webrtc/10s_datachannel_transfer" + }, + { + "duration": "21.0", + "name": "webrtc/canvas_capture_peer_connection" + }, + { + "duration": "31.0", + "name": "webrtc/codec_constraints_h264" + }, + { + "duration": "31.0", + "name": "webrtc/codec_constraints_vp8" + }, + { + "duration": "31.0", + "name": "webrtc/codec_constraints_vp9" + }, + { + "duration": "21.0", + "name": "webrtc/hd_local_stream_10s" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_camera_noop_video" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "31.0", + "name": "webrtc/multiple_peerconnections" + }, + { + "duration": "33.0", + "name": "webrtc/pause_play_peerconnections" + }, + { + "duration": "60.0", + "name": "components_perftests/_gtest_" + } +] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel4_weblayer-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel4_weblayer-perf_timing.json index 0637a08..e5e93fc 100644 --- a/tools/perf/core/shard_maps/timing_data/android-pixel4_weblayer-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-pixel4_weblayer-perf_timing.json
@@ -1 +1,14 @@ -[] \ No newline at end of file +[ + { + "duration": "4.0", + "name": "startup.mobile/maps_pwa:with_http_cache" + }, + { + "duration": "5.0", + "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" + }, + { + "duration": "4.0", + "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" + } +] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json index 1ea365e8..9ca42061 100644 --- a/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json
@@ -1,42 +1,42 @@ [ { - "duration": "30.0", + "duration": "29.0", "name": "loading.mobile/Dramaq" }, { - "duration": "27.0", + "duration": "26.0", "name": "loading.mobile/Facebook" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.mobile/FranceTVInfo" }, { - "duration": "28.0", + "duration": "29.0", "name": "loading.mobile/GoogleIndia" }, { - "duration": "25.0", + "duration": "23.0", "name": "loading.mobile/Hongkiat" }, { - "duration": "25.0", + "duration": "24.0", "name": "loading.mobile/LocalMoxie" }, { - "duration": "168.0", + "duration": "156.0", "name": "startup.mobile/cct:coldish:bbc" }, { - "duration": "191.0", + "duration": "178.0", "name": "startup.mobile/intent:coldish:bbc" }, { - "duration": "138.0", + "duration": "129.0", "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "0.0", + "duration": "14.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { @@ -48,7 +48,7 @@ "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "139.0", + "duration": "138.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { @@ -60,15 +60,15 @@ "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "105.0", + "duration": "103.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "93.0", + "duration": "96.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "61.0", + "duration": "60.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { @@ -76,15 +76,15 @@ "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "46.0", + "duration": "45.0", "name": "system_health.common_mobile/load:news:cnn:2020" }, { - "duration": "50.0", + "duration": "47.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "35.0", + "duration": "34.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, {
diff --git a/tools/perf/core/sharding_map_generator.py b/tools/perf/core/sharding_map_generator.py index 86edc87..422d422 100644 --- a/tools/perf/core/sharding_map_generator.py +++ b/tools/perf/core/sharding_map_generator.py
@@ -139,7 +139,8 @@ _add_benchmarks_to_shard(sharding_map, i, stories_in_shard, stories_by_benchmark, benchmark_name_to_config) - sharding_map_benchmarks = sharding_map[str(i)]['benchmarks'] + sharding_map_benchmarks = sharding_map[str(i)].get( + 'benchmarks', collections.OrderedDict()) benchmark_sections = collections.OrderedDict() for benchmark, config in sharding_map_benchmarks.iteritems(): if 'sections' in config:
diff --git a/tools/perf/cross_device_test_config.py b/tools/perf/cross_device_test_config.py index 0ff9eeb..d2862ae 100644 --- a/tools/perf/cross_device_test_config.py +++ b/tools/perf/cross_device_test_config.py
@@ -28,5 +28,47 @@ 'css_transitions_triggered_style_element': 4, 'canvas_animation_no_clear': 4 } - } + }, + 'android-pixel2_weblayer-perf': { + 'startup.mobile': { + 'intent:coldish:bbc': 4, + 'intent:warm:bbc': 4, + 'cct:coldish:bbc': 4 + } + }, + 'android-pixel2-perf': { + 'startup.mobile': { + 'intent:coldish:bbc': 10, + 'intent:warm:bbc': 10, + 'cct:coldish:bbc': 10 + } + }, + 'Android Nexus5 Perf': { + 'startup.mobile': { + 'intent:coldish:bbc': 10, + 'intent:warm:bbc': 10, + 'cct:coldish:bbc': 10 + } + }, + 'android-go-perf': { + 'startup.mobile': { + 'intent:coldish:bbc': 10, + 'intent:warm:bbc': 10, + 'cct:coldish:bbc': 10 + } + }, + 'android-pixel4-perf': { + 'startup.mobile': { + 'intent:coldish:bbc': 10, + 'intent:warm:bbc': 10, + 'cct:coldish:bbc': 10 + } + }, + 'android-pixel4_weblayer-perf': { + 'startup.mobile': { + 'intent:coldish:bbc': 4, + 'intent:warm:bbc': 4, + 'cct:coldish:bbc': 4 + } + }, }
diff --git a/tools/perf/process_perf_results.py b/tools/perf/process_perf_results.py index 16a93e31..da719af 100755 --- a/tools/perf/process_perf_results.py +++ b/tools/perf/process_perf_results.py
@@ -259,12 +259,11 @@ def _handle_benchmarks_shard_map(benchmarks_shard_map_file, extra_links): begin_time = time.time() with open(benchmarks_shard_map_file) as f: - benchmarks_shard_data = json.load(f) + benchmarks_shard_data = f.read() logdog_file_name = _generate_unique_logdog_filename('Benchmarks_Shard_Map') - logdog_stream = logdog_helper.text( - logdog_file_name, json.dumps(benchmarks_shard_data, sort_keys=True, - indent=4, separators=(',', ': ')), - content_type=JSON_CONTENT_TYPE) + logdog_stream = logdog_helper.text(logdog_file_name, + benchmarks_shard_data, + content_type=JSON_CONTENT_TYPE) extra_links['Benchmarks shard map'] = logdog_stream end_time = time.time() print_duration('Generating benchmark shard map stream', begin_time, end_time)
diff --git a/ui/chromeos/translations/ui_chromeos_strings_af.xtb b/ui/chromeos/translations/ui_chromeos_strings_af.xtb index 4d75bf7..a102d11 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_af.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">VSA internasionaal</translation> <translation id="2562685439590298522">Dokumente</translation> <translation id="2563185590376525700">Padda</translation> -<translation id="2572501073504669105">Jy kan lêers vanlyn beskikbaar stel vir toegang wanneer jy nie 'n internetverbinding het nie.</translation> <translation id="2578394532502990878">Tamil-foneties</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" />-video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_am.xtb b/ui/chromeos/translations/ui_chromeos_strings_am.xtb index 5a78968a..c373259 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_am.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">አሜሪካ ዓለምአቀፍ</translation> <translation id="2562685439590298522">ሰነዶች</translation> <translation id="2563185590376525700">እንቁራሪት</translation> -<translation id="2572501073504669105">የበይነመረብ ግንኙነት በማይኖርበት ጊዜ ፋይሎችን ለመድረስ ከመስመር ውጭ እንዲገኙ ማድረግ ይችላሉ።</translation> <translation id="2578394532502990878">ታሚልኛ ፎነቲክ</translation> <translation id="2579959351793446050">ኦዲያ</translation> <translation id="2614589611416690597">የ<ph name="VIDEO_TYPE" /> ቪዲዮ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb index 0033a5c..01e6dda 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">الأمريكية الدولية</translation> <translation id="2562685439590298522">المستندات</translation> <translation id="2563185590376525700">ضفدع</translation> -<translation id="2572501073504669105">يمكنك إتاحة الوصول إلى الملفات عند عدم توفّر اتصال بالإنترنت لديك.</translation> <translation id="2578394532502990878">التاميلية الصوتية</translation> <translation id="2579959351793446050">الأوديا</translation> <translation id="2614589611416690597">ملف فيديو <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_as.xtb b/ui/chromeos/translations/ui_chromeos_strings_as.xtb index dd5be29..eb34a8e 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_as.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US আন্তৰ্জাতিক</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">ভেকুলী</translation> -<translation id="2572501073504669105">আপোনাৰ ইণ্টাৰনেট সংযোগ নথকাৰ সময়ত এক্সেছ কৰিবলৈ নিজৰ ফাইলসমূহ অফলাইনত উপলব্ধ কৰাব পাৰে।</translation> <translation id="2578394532502990878">তামিল ফ’নেটিক</translation> <translation id="2579959351793446050">ওড়িয়া</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ভিডিঅ’</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_az.xtb b/ui/chromeos/translations/ui_chromeos_strings_az.xtb index 0726da8..da1b526 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_az.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">ABŞ Beynəlxalq</translation> <translation id="2562685439590298522">Sənəd</translation> <translation id="2563185590376525700">Qurbağa</translation> -<translation id="2572501073504669105">İnternet bağlantınız olmadıqda oflayn giriş üçün faylları əlçatan edə bilərsiniz.</translation> <translation id="2578394532502990878">Tamil dili (Fonetik)</translation> <translation id="2579959351793446050">Oriya dili</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> videosu</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_be.xtb b/ui/chromeos/translations/ui_chromeos_strings_be.xtb index d231158..06c1331 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_be.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">ЗША, міжнародная</translation> <translation id="2562685439590298522">Дакументы</translation> <translation id="2563185590376525700">Жаба</translation> -<translation id="2572501073504669105">Вы можаце зрабіць файлы даступнымі ў пазасеткавым рэжыме, каб мець магчымасць працаваць з імі, калі не будзе падключэння да інтэрнэту.</translation> <translation id="2578394532502990878">Тамільская (фанетычная раскладка)</translation> <translation id="2579959351793446050">Орыя</translation> <translation id="2614589611416690597">Відэа <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb index 126c8fb1..7fe13a7 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Американска международна клавиатура</translation> <translation id="2562685439590298522">Документи</translation> <translation id="2563185590376525700">Жаба</translation> -<translation id="2572501073504669105">Можете да направите файловете да бъдат налице офлайн, за да имате достъп до тях, когато нямате връзка с интернет.</translation> <translation id="2578394532502990878">Тамилски (фонетична клавиатура)</translation> <translation id="2579959351793446050">Одия</translation> <translation id="2614589611416690597">Видеоклип във формат <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb index 66ceebf..57cdf86 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">মার্কিন আন্তর্জাতিক</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">ব্যাঙ</translation> -<translation id="2572501073504669105">ইন্টারনেট কানেকশন না থাকলে, ফাইল অফলাইনে অ্যাক্সেস করার জন্য আপনি সেগুলি ডাউনলোড করে রাখতে পারেন।</translation> <translation id="2578394532502990878">তামিল ফোনেটিক</translation> <translation id="2579959351793446050">ওড়িয়া</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ভিডিও</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb index 4f82a9a..f5aa21e6 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">SAD međunarodna</translation> <translation id="2562685439590298522">Dokumenti</translation> <translation id="2563185590376525700">Žaba</translation> -<translation id="2572501073504669105">Možete postaviti dostupnost fajlova van mreže da im možete pristupati bez internetske veze.</translation> <translation id="2578394532502990878">tamilski fonetski</translation> <translation id="2579959351793446050">odija</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> videozapis</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb index 634cdc10..faf29b4 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Teclat internacional d'Estats Units</translation> <translation id="2562685439590298522">Google Docs</translation> <translation id="2563185590376525700">Granota</translation> -<translation id="2572501073504669105">Pots fer que els fitxers estiguin disponibles sense connexió per accedir-hi quan no tinguis Internet.</translation> <translation id="2578394532502990878">Tàmil fonètic</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597">Vídeo <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb index c261579..4dc16f7 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Americká klávesnice (mezinárodní)</translation> <translation id="2562685439590298522">Dokumenty</translation> <translation id="2563185590376525700">Žába</translation> -<translation id="2572501073504669105">Soubory můžete zpřístupnit offline pro případ, že nebudete mít připojení k internetu.</translation> <translation id="2578394532502990878">tamilština (fonetická)</translation> <translation id="2579959351793446050">urijština</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_da.xtb b/ui/chromeos/translations/ui_chromeos_strings_da.xtb index d49c888..40e159e 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_da.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Amerikansk (internationalt)</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Frø</translation> -<translation id="2572501073504669105">Du kan gøre filer tilgængelige offline, så du kan få adgang til dem, når du ikke har internetforbindelse.</translation> <translation id="2578394532502990878">Tamil fonetisk</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" />-video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_de.xtb b/ui/chromeos/translations/ui_chromeos_strings_de.xtb index 23d7fe61..26758c3 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_de.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">USA – international</translation> <translation id="2562685439590298522">Google Docs</translation> <translation id="2563185590376525700">Frosch</translation> -<translation id="2572501073504669105">Sie können den Dateizugriff offline verfügbar machen, wenn Sie keine Internetverbindung haben.</translation> <translation id="2578394532502990878">Tamil (phonetisch)</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" />-Video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_el.xtb b/ui/chromeos/translations/ui_chromeos_strings_el.xtb index 25bd1149..2ee6b72 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_el.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
@@ -144,7 +144,6 @@ <translation id="255937426064304553">Διεθνές ΗΠΑ</translation> <translation id="2562685439590298522">Έγγραφα</translation> <translation id="2563185590376525700">Βάτραχος</translation> -<translation id="2572501073504669105">Μπορείτε να καταστήσετε τα αρχεία διαθέσιμα εκτός σύνδεσης για να έχετε πρόσβαση σε αυτά χωρίς σύνδεση στο διαδίκτυο.</translation> <translation id="2578394532502990878">Φωνητική εισαγωγή Ταμίλ</translation> <translation id="2579959351793446050">Όντια</translation> <translation id="2614589611416690597">Βίντεο <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb index da6b1f2..59865f4 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US international</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Frog</translation> -<translation id="2572501073504669105">You can make files available offline for access when you don't have Internet connection.</translation> <translation id="2578394532502990878">Tamil phonetic</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb index 7216ab7..9a6f2af 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Inglés (Estados Unidos; internacional)</translation> <translation id="2562685439590298522">Documentos</translation> <translation id="2563185590376525700">Rana</translation> -<translation id="2572501073504669105">Puedes hacer que los archivos estén disponibles sin conexión para cuando no tengas conexión a Internet.</translation> <translation id="2578394532502990878">Tamil (fonético)</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es.xtb b/ui/chromeos/translations/ui_chromeos_strings_es.xtb index 3b6d344d..6dcce2e 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_es.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Estados Unidos (internacional)</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Rana</translation> -<translation id="2572501073504669105">Puedes hacer que tus archivos estén disponibles sin conexión para acceder a ellos cuando no tengas Internet.</translation> <translation id="2578394532502990878">Tamil (fonético)</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597">Vídeo <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_et.xtb b/ui/chromeos/translations/ui_chromeos_strings_et.xtb index 31a96f86..c69580c7 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_et.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_et.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">USA rahvusvaheline</translation> <translation id="2562685439590298522">Dokumendid</translation> <translation id="2563185590376525700">Konn</translation> -<translation id="2572501073504669105">Teil on võimalik muuta failid kättesaadavaks ka siis, kui puudub internetiühendus.</translation> <translation id="2578394532502990878">tamili, foneetiline</translation> <translation id="2579959351793446050">odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" />-video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb index c9b1628..0c91281 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">AEBko nazioarteko teklatu-diseinua</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Igela</translation> -<translation id="2572501073504669105">Fitxategiak konexiorik gabe erabilgarri jartzeko aukera duzu, Interneteko konexiorik gabe atzi ditzazun.</translation> <translation id="2578394532502990878">Tamildar fonetikoa</translation> <translation id="2579959351793446050">Oriyarra</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> bideoa</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb index aeb50e0..7aead19 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">بینالمللی آمریکایی</translation> <translation id="2562685439590298522">اسناد</translation> <translation id="2563185590376525700">قورباغه</translation> -<translation id="2572501073504669105">میتوانید فایلها را طوری تنظیم کنید که در حالت آفلاین دردسترس باشند تا هنگامی که اتصال اینترنت ندارید به آنها دسترسی داشته باشید</translation> <translation id="2578394532502990878">تامیل (آوایی)</translation> <translation id="2579959351793446050">اوریه</translation> <translation id="2614589611416690597">ویدیوی <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb index 68414186..3506011 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">USA (kansainvälinen)</translation> <translation id="2562685439590298522">Dokumentit</translation> <translation id="2563185590376525700">Sammakko</translation> -<translation id="2572501073504669105">Voit ottaa tiedostoja käyttöön offline-tilassa sitä varten, jos sinulla ei ole internetyhteyttä.</translation> <translation id="2578394532502990878">foneettinen tamil</translation> <translation id="2579959351793446050">orija</translation> <translation id="2614589611416690597">Video, jonka tyyppi on <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb index 7a1c10dd..00d9020 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US international</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Palaka</translation> -<translation id="2572501073504669105">Puwede mong gawing available offline ang mga file para ma-access ang mga ito kapag wala kang koneksyon sa internet.</translation> <translation id="2578394532502990878">Tamil Phonetic</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> na video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb index 40bac9f5..48c2a05 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">États-Unis international</translation> <translation id="2562685439590298522">Documents</translation> <translation id="2563185590376525700">Grenouille</translation> -<translation id="2572501073504669105">Vous pouvez rendre des fichiers accessibles hors ligne, pour quand vous n'avez pas de connexion Internet.</translation> <translation id="2578394532502990878">Tamoul (phonétique)</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597">Vidéo <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb index d9ef0ef..a9059d0 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">États-Unis international</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Grenouille</translation> -<translation id="2572501073504669105">Lorsque vous n'avez pas de connexion Internet, vous pouvez faire en sorte que les fichiers soient disponibles hors connexion.</translation> <translation id="2578394532502990878">Tamoul (phonétique)</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597">Fichier vidéo <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gl.xtb b/ui/chromeos/translations/ui_chromeos_strings_gl.xtb index a039a499..efd4e2f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_gl.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_gl.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Internacional de EUA</translation> <translation id="2562685439590298522">Documentos</translation> <translation id="2563185590376525700">Ra</translation> -<translation id="2572501073504669105">Podes facer que os ficheiros estean dispoñibles sen conexión para poder acceder a eles aínda que non teñas Internet.</translation> <translation id="2578394532502990878">Támil (fonético)</translation> <translation id="2579959351793446050">Odiá</translation> <translation id="2614589611416690597">Vídeo <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb index bfd44679..94479ad 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">યુએસ આંતરરાષ્ટ્રીય</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">દેડકો</translation> -<translation id="2572501073504669105">તમારી પાસે ઇન્ટરનેટ કનેક્શન ન હોય, ત્યારે તમે ફાઇલોને ઍક્સેસ માટે ઑફલાઇન ઉપલબ્ધ કરી શકો છો.</translation> <translation id="2578394532502990878">તમિળ ફોનેટિક</translation> <translation id="2579959351793446050">ઉડિયા</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> વીડિયો</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hi.xtb b/ui/chromeos/translations/ui_chromeos_strings_hi.xtb index 68ab12d..b48a12cf 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_hi.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_hi.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">यूएस अंतर्राष्ट्रीय</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">मेढक</translation> -<translation id="2572501073504669105">आप ऑफ़लाइन इस्तेमाल करने के लिए फ़ाइलें डाउनलोड कर सकते हैं.</translation> <translation id="2578394532502990878">तमिल फ़ोनेटिक</translation> <translation id="2579959351793446050">ओडिया</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> वीडियो</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb index 416b007..b4114ab 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">američka (međunarodna)</translation> <translation id="2562685439590298522">Dokumenti</translation> <translation id="2563185590376525700">Žaba</translation> -<translation id="2572501073504669105">Datoteke možete učiniti dostupnima offline kad nemate internetsku vezu.</translation> <translation id="2578394532502990878">tamilski fonetski</translation> <translation id="2579959351793446050">orijski</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> videozapis</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb index 73f5a32..df8330d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">USA nemzetközi</translation> <translation id="2562685439590298522">Dokumentumok</translation> <translation id="2563185590376525700">Béka</translation> -<translation id="2572501073504669105">Engedélyezheti a fájlokhoz való hozzáférést offline állapotban, amikor nincs internetkapcsolat.</translation> <translation id="2578394532502990878">tamil, fonetikus</translation> <translation id="2579959351793446050">odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> videó</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb index 98e6441..170bb7d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">ԱՄՆ (միջազգային)</translation> <translation id="2562685439590298522">Փաստաթղթեր</translation> <translation id="2563185590376525700">Գորտ</translation> -<translation id="2572501073504669105">Դուք կարող եք ներբեռնել ֆայլերը՝ անցանց ռեժիմում օգտագործելու համար</translation> <translation id="2578394532502990878">թամիլերեն (հնչյունային)</translation> <translation id="2579959351793446050">օրիյա</translation> <translation id="2614589611416690597">Տեսանյութ (<ph name="VIDEO_TYPE" />)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_id.xtb b/ui/chromeos/translations/ui_chromeos_strings_id.xtb index ad5998d4..7fa63aa 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_id.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Internasional AS</translation> <translation id="2562685439590298522">Dokumen</translation> <translation id="2563185590376525700">Katak</translation> -<translation id="2572501073504669105">Anda bisa membuat file dapat diakses secara offline saat tidak memiliki koneksi internet.</translation> <translation id="2578394532502990878">Fonetik Tamil</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_is.xtb b/ui/chromeos/translations/ui_chromeos_strings_is.xtb index b4418b2..700e26da 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_is.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_is.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Bandarískt (alþjóðlegt)</translation> <translation id="2562685439590298522">Skjöl</translation> <translation id="2563185590376525700">Fúsi</translation> -<translation id="2572501073504669105">Þú getur gert skrár aðgengilegar án nettengingar til að geta opnað þær þegar engin nettenging er til staðar.</translation> <translation id="2578394532502990878">Tamíl hljóðritun</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> myndskeið</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_it.xtb b/ui/chromeos/translations/ui_chromeos_strings_it.xtb index 736e6af..dbb9b95 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_it.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Internazionale USA</translation> <translation id="2562685439590298522">Documenti</translation> <translation id="2563185590376525700">Rana</translation> -<translation id="2572501073504669105">Puoi rendere disponibili i file per l'accesso offline quando non hai una connessione a Internet.</translation> <translation id="2578394532502990878">Tamil fonetica</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb index 41646cad..1f4c34f4 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">ארה"ב - בינלאומית</translation> <translation id="2562685439590298522">Google Docs</translation> <translation id="2563185590376525700">צפרדע</translation> -<translation id="2572501073504669105">ניתן להפוך קבצים לזמינים אופליין כדי לאפשר אליהם גישה כשאין חיבור לאינטרנט.</translation> <translation id="2578394532502990878">טמילית פונטית</translation> <translation id="2579959351793446050">אודיה</translation> <translation id="2614589611416690597">קובץ וידאו בפורמט <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb index a243feb..91b6ae4 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US インターナショナル</translation> <translation id="2562685439590298522">ドキュメント</translation> <translation id="2563185590376525700">カエル</translation> -<translation id="2572501073504669105">インターネットに接続していないときにファイルをオフラインで使用可能にできます。</translation> <translation id="2578394532502990878">タミル語(表音)</translation> <translation id="2579959351793446050">オディア語</translation> <translation id="2614589611416690597">動画(<ph name="VIDEO_TYPE" />)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb index 2574431..845d81f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">აშშ საერთაშორისო</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">ბაყაყი</translation> -<translation id="2572501073504669105">სურვილისამებრ, შეგიძლიათ გარდაქმნათ ფაილები ხაზგარეშე რეჟიმში ხელმისაწვდომად, რომ მათზე წვდომა შეინარჩუნოთ მაშინაც, როცა ინტერნეტ-კავშირი არ გექნებათ.</translation> <translation id="2578394532502990878">ტამილური ფონეტიკური</translation> <translation id="2579959351793446050">ორია</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ვიდეო</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb index 0220acc..052b2ac9 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">АҚШ халықаралық</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Бақа</translation> -<translation id="2572501073504669105">Файлдарды офлайн режимде қолжетімді етіп, интернет байланысы болмаған кезде пайдалануыңызға болады.</translation> <translation id="2578394532502990878">Тамиль (фонетикалық)</translation> <translation id="2579959351793446050">Одия</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> бейнесі</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_km.xtb b/ui/chromeos/translations/ui_chromeos_strings_km.xtb index 22f11a15..6f0c2ea8 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_km.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_km.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US អន្តរជាតិ</translation> <translation id="2562685439590298522">ឯកសារ</translation> <translation id="2563185590376525700">កង្កែប</translation> -<translation id="2572501073504669105">អ្នកអាចកំណត់ឱ្យមានសិទ្ធិចូលប្រើឯកសារ នៅពេលគ្មានការតភ្ជាប់អ៊ីនធឺណិត។</translation> <translation id="2578394532502990878">សូរសព្ទជាភាសាតាមិល</translation> <translation id="2579959351793446050">ភាសាអូឌៀ</translation> <translation id="2614589611416690597">វីដេអូ <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb index da2b4b4..dc6954a 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
@@ -138,7 +138,6 @@ <translation id="255937426064304553">US ಇಂಟರ್ನ್ಯಾಷನಲ್</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">ಕಪ್ಪೆ</translation> -<translation id="2572501073504669105">ಇಂಟರ್ನೆಟ್ ಕನೆಕ್ಷನ್ ಇಲ್ಲದಿದ್ದರೂ, ಪ್ರವೇಶಕ್ಕಾಗಿ ಫೈಲ್ಗಳನ್ನು ಆಫ್ಲೈನ್ನಲ್ಲಿ ಲಭ್ಯವಾಗುವಂತೆ ನೀವು ಮಾಡಬಹುದು.</translation> <translation id="2578394532502990878">ತಮಿಳು ಫೋನೆಟಿಕ್</translation> <translation id="2579959351793446050">ಒಡಿಯಾ</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ವೀಡಿಯೊ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb index 52622ef3..04d8116 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">영어(미국 국제)</translation> <translation id="2562685439590298522">문서도구</translation> <translation id="2563185590376525700">개구리</translation> -<translation id="2572501073504669105">파일을 오프라인에서 사용하도록 설정하면 인터넷에 연결되어 있지 않을 때도 액세스할 수 있습니다.</translation> <translation id="2578394532502990878">타밀어(표음)</translation> <translation id="2579959351793446050">오리야어</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> 동영상</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb index 39589ea..bd83693 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">АКШ эл аралык</translation> <translation id="2562685439590298522">Документтер</translation> <translation id="2563185590376525700">Бака</translation> -<translation id="2572501073504669105">Файлдарга оффлайн режиминде кирүү үчүн аларды жүктөп алсаңыз болот.</translation> <translation id="2578394532502990878">Тамилче (фонетикалык)</translation> <translation id="2579959351793446050">Одияча</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> форматындагы видео</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lo.xtb b/ui/chromeos/translations/ui_chromeos_strings_lo.xtb index b3aae4e..000108a 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_lo.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_lo.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US ສາກົນ</translation> <translation id="2562685439590298522">ເອກະສານ</translation> <translation id="2563185590376525700">ກົບ</translation> -<translation id="2572501073504669105">ທ່ານສາມາດເຮັດໃຫ້ໄຟລ໌ນຳໃຊ້ແບບອອບລາຍໄດ້ເພື່ອເຂົ້າເຖິງເມື່ອທ່ານບໍ່ມີການເຊື່ອມຕໍ່ອິນເຕີເນັດ.</translation> <translation id="2578394532502990878">ພາສາທາມິລ (ຕາມການອອກສຽງ)</translation> <translation id="2579959351793446050">ພາສາໂອເດຍ</translation> <translation id="2614589611416690597">ວິດີໂອ <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb index b7141cb5..3d18f0d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">JAV tarptautinė</translation> <translation id="2562685439590298522">Dokumentai</translation> <translation id="2563185590376525700">Varlė</translation> -<translation id="2572501073504669105">Galite nustatyti, kad failai būtų pasiekiami neprisijungus prie interneto.</translation> <translation id="2578394532502990878">Tamilų k. fonetinė</translation> <translation id="2579959351793446050">Orijų k.</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> vaizdo įrašas</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb index fa40b05..8ad7dbf 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">ASV starptautiskā</translation> <translation id="2562685439590298522">Dokumenti</translation> <translation id="2563185590376525700">Varde</translation> -<translation id="2572501073504669105">Varat padarīt failus pieejamus bezsaistē, lai varētu tiem piekļūt bez interneta savienojuma.</translation> <translation id="2578394532502990878">Tamilu, fonētiskā</translation> <translation id="2579959351793446050">Oriju</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb index d400aab..179ed38 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Меѓународен англиски (САД)</translation> <translation id="2562685439590298522">Документи</translation> <translation id="2563185590376525700">Жаба</translation> -<translation id="2572501073504669105">Може да ги направите датотеките да бидат достапни офлајн за да пристапувате до нив кога нема да имате интернет-врска.</translation> <translation id="2578394532502990878">фонетски тамилски</translation> <translation id="2579959351793446050">одија</translation> <translation id="2614589611416690597">Видео: <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb index db8d6479..b20f76f4 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">യുഎസ് ഇന്റർനാഷണൽ</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">തവള</translation> -<translation id="2572501073504669105">നിങ്ങള്ക്ക് ഇന്റര്നെറ്റ് കണക്ഷനില്ലെങ്കില് പോലും ആക്സസ് ചെയ്യാൻ ഫയലുകൾ ഓഫ്ലൈനിൽ ലഭ്യമാക്കാം.</translation> <translation id="2578394532502990878">തമിഴ് ഉച്ചാരണ ശബ്ദം</translation> <translation id="2579959351793446050">ഒഡിയ</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> വീഡിയോ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb index 6c42d7a..09cba0e 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">АНУ олон улсын</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Frog</translation> -<translation id="2572501073504669105">Та интернет холболтгүй үед файлуудыг офлайнаар хандах боломжтой болгож болно.</translation> <translation id="2578394532502990878">Тамил авиа зүй</translation> <translation id="2579959351793446050">Одиа</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> видео</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb index 96449be..afdec81 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">यूएस आंतरराष्ट्रीय</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">बेडूक</translation> -<translation id="2572501073504669105">तुमच्याकडे इंटरनेट कनेक्शन नसते तेव्हा तुम्ही फाइल ॲक्सेस करण्यासाठी त्या ऑफलाइन उपलब्ध करू शकता.</translation> <translation id="2578394532502990878">तमिळ फोनेटिक</translation> <translation id="2579959351793446050">ओडिया</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> व्हिडिओ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb index 27f45e0c..4c7d3ab 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Antarabangsa AS</translation> <translation id="2562685439590298522">Dokumen</translation> <translation id="2563185590376525700">Katak</translation> -<translation id="2572501073504669105">Anda boleh menjadikan fail tersedia di luar talian untuk diakses semasa anda tidak mempunyai sambungan Internet.</translation> <translation id="2578394532502990878">Fonetik Tamil</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_my.xtb b/ui/chromeos/translations/ui_chromeos_strings_my.xtb index 049a7a2..1a1d098 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_my.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_my.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US international</translation> <translation id="2562685439590298522">စာရွက်များ</translation> <translation id="2563185590376525700">ဖား</translation> -<translation id="2572501073504669105">အင်တာနက်ချိတ်ဆက်မှု မရှိသည့်အခါ ဖွင့်ကြည့်နိုင်ရန် ဖိုင်များကို အော့ဖ်လိုင်းသုံး၍ရအောင် ပြုလုပ်နိုင်သည်။</translation> <translation id="2578394532502990878">တမီးလ် အသံထွက်</translation> <translation id="2579959351793446050">အိုဒီယာ</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ဗီဒီယို</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb index 11f237b5..01be6b5 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">यु.एस. अन्तर्राष्ट्रिय</translation> <translation id="2562685439590298522">कागजातहरू</translation> <translation id="2563185590376525700">भ्यागुतो</translation> -<translation id="2572501073504669105">तपाईं इन्टरनेट नभएका बेला प्रयोग गर्ने प्रयोजनका लागि फाइलहरू अफलाइन उपलब्ध गराउन सक्नुहुन्छ।</translation> <translation id="2578394532502990878">तमिल फोनेटिक</translation> <translation id="2579959351793446050">ओडिया</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> भिडियो</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb index 6afdf2d4..4a479ca 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Verenigde Staten (internationaal)</translation> <translation id="2562685439590298522">Documenten</translation> <translation id="2563185590376525700">Kikker</translation> -<translation id="2572501073504669105">Je kunt bestanden offline beschikbaar maken voor toegang als je geen internetverbinding hebt.</translation> <translation id="2578394532502990878">Tamil (fonetisch)</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" />-video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_no.xtb b/ui/chromeos/translations/ui_chromeos_strings_no.xtb index 7b24e8fd..ebdde72 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_no.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">USA internasjonalt</translation> <translation id="2562685439590298522">Google Dokumenter</translation> <translation id="2563185590376525700">Frosk</translation> -<translation id="2572501073504669105">Du kan gjøre filer tilgjengelige uten nett, slik at du kan bruke dem når du ikke har noen internettilkobling.</translation> <translation id="2578394532502990878">Tamil, fonetisk</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" />-video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_or.xtb b/ui/chromeos/translations/ui_chromeos_strings_or.xtb index 05a95e9..7e6a80d0 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_or.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US ଆନ୍ତର୍ଜାତିକ</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">ବେଙ୍ଗ</translation> -<translation id="2572501073504669105">ଯେତେବେଳେ ଆପଣଙ୍କ ପାଖରେ ଇଣ୍ଟରନେଟ୍ ସଂଯୋଗ ନଥାଏ, ସେତେବେଳେ ଆପଣ ଫାଇଲଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅଫଲାଇନରେ ଉପଲବ୍ଧ କରିପାରିବେ।</translation> <translation id="2578394532502990878">ତାମିଲ ଫୋନେଟିକ୍</translation> <translation id="2579959351793446050">ଓଡ଼ିଆ</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ଭିଡିଓ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb index c0aca50..69fdfca 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">ਅਮਰੀਕਾ ਅੰਤਰਰਾਸ਼ਟਰੀ</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">ਡੱਡੂ</translation> -<translation id="2572501073504669105">ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਾ ਹੋਣ 'ਤੇ ਤੁਸੀਂ ਪਹੁੰਚ ਕਰਨ ਲਈ ਫ਼ਾਈਲਾਂ ਨੂੰ ਆਫ਼ਲਾਈਨ ਉਪਲਬਧ ਕਰਾ ਸਕਦੇ ਹੋ।</translation> <translation id="2578394532502990878">ਤਮਿਲ ਧੁਨੀਆਤਮਿਕ</translation> <translation id="2579959351793446050">ਉੜੀਆ</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ਵੀਡੀਓ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb index 89185bf..e4861cd 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">amerykańska klawiatura międzynarodowa</translation> <translation id="2562685439590298522">Dokumenty</translation> <translation id="2563185590376525700">Żaba</translation> -<translation id="2572501073504669105">Możesz udostępnić pliki w trybie offline, by móc z nich korzystać bez połączenia z internetem.</translation> <translation id="2578394532502990878">Tamilski fonetyczny</translation> <translation id="2579959351793446050">Orija</translation> <translation id="2614589611416690597">Plik wideo <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb index ddf96d3c..979991e20 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Internacional: Estados Unidos</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">Rã</translation> -<translation id="2572501073504669105">É possível disponibilizar arquivos off-line para permitir o acesso quando não houver uma conexão de Internet.</translation> <translation id="2578394532502990878">Tâmil (fonético)</translation> <translation id="2579959351793446050">Oriá</translation> <translation id="2614589611416690597">Vídeo de <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb index 365ff152..ccf1594 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">EUA internacional</translation> <translation id="2562685439590298522">Google Docs</translation> <translation id="2563185590376525700">Sapo</translation> -<translation id="2572501073504669105">Pode disponibilizar ficheiros offline para aceder quando não tiver uma ligação à Internet.</translation> <translation id="2578394532502990878">Fonética de tâmil</translation> <translation id="2579959351793446050">Oriá</translation> <translation id="2614589611416690597">Vídeo <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb index 1b31976..0cffc4b2 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">S.U.A. internațională</translation> <translation id="2562685439590298522">Documente</translation> <translation id="2563185590376525700">Broască</translation> -<translation id="2572501073504669105">Poți face fișiere disponibile offline pentru a le accesa când nu ai conexiune la internet.</translation> <translation id="2578394532502990878">Tamilă fonetică</translation> <translation id="2579959351793446050">Odia</translation> <translation id="2614589611416690597">Videoclip <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb index cf11916..391c702 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">США (международная)</translation> <translation id="2562685439590298522">Документы</translation> <translation id="2563185590376525700">Лягушка</translation> -<translation id="2572501073504669105">Вы можете скачать файлы, чтобы получать к ним доступ без подключения к Интернету.</translation> <translation id="2578394532502990878">Тамильский, фонетический</translation> <translation id="2579959351793446050">Ория</translation> <translation id="2614589611416690597">Видео <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_si.xtb b/ui/chromeos/translations/ui_chromeos_strings_si.xtb index d49ae9e..d3bcbb53 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_si.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_si.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">US ජාත්යන්තර</translation> <translation id="2562685439590298522">ලේඛ</translation> <translation id="2563185590376525700">ගෙම්බා</translation> -<translation id="2572501073504669105">ඔබට අන්තර්ජාල සම්බන්ධතාවක් නොමැති විට ප්රවේශය සඳහා ඔබට ගොනු නොබැඳි ලෙස ලබා ගත හැකි බවට පත් කළ හැකිය.</translation> <translation id="2578394532502990878">දෙමළ ශබ්දිම</translation> <translation id="2579959351793446050">ඔඩියා</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> වීඩියෝ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb index ec34c3b..abb6e32 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Americká klávesnica s medzinárodným rozložením klávesov</translation> <translation id="2562685439590298522">Dokumenty</translation> <translation id="2563185590376525700">Žaba</translation> -<translation id="2572501073504669105">Súbory si môžete sprístupniť v režime offline, aby ste s nimi mohli pracovať aj bez internetového pripojenia.</translation> <translation id="2578394532502990878">Tamilská fonetická klávesnica</translation> <translation id="2579959351793446050">Uríjska klávesnica</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb index 393d6da..3a5d8e4 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Združene države – mednarodna</translation> <translation id="2562685439590298522">Google Dokumenti</translation> <translation id="2563185590376525700">Žaba</translation> -<translation id="2572501073504669105">Omogočite lahko, da so datoteke na voljo za dostop brez povezave, kadar nimate internetne povezave.</translation> <translation id="2578394532502990878">tamilščina (fonetična)</translation> <translation id="2579959351793446050">odijščina</translation> <translation id="2614589611416690597">Videoposnetek <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb index 45b1866..2d2cc33 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Amerikane ndërkombëtare</translation> <translation id="2562685439590298522">Dokumente</translation> <translation id="2563185590376525700">Bretkosa</translation> -<translation id="2572501073504669105">Mund t'i bësh skedarët të disponueshëm jashtë linje për qasje kur nuk ke lidhje në internet.</translation> <translation id="2578394532502990878">Tamilisht fonetike</translation> <translation id="2579959351793446050">Odiaisht</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb index 7895fb9..396b532 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">međunarodna američka</translation> <translation id="2562685439590298522">Dokumenti</translation> <translation id="2563185590376525700">Žaba</translation> -<translation id="2572501073504669105">Možete da omogućite da fajlovi budu dostupni oflajn kada nemate internet vezu.</translation> <translation id="2578394532502990878">fonetski tamilski</translation> <translation id="2579959351793446050">orija</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb index 1bcef9c..a4dfa08 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">међународна америчка</translation> <translation id="2562685439590298522">Документи</translation> <translation id="2563185590376525700">Жаба</translation> -<translation id="2572501073504669105">Можете да омогућите да фајлови буду доступни офлајн када немате интернет везу.</translation> <translation id="2578394532502990878">фонетски тамилски</translation> <translation id="2579959351793446050">орија</translation> <translation id="2614589611416690597">Видео <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb index 2bb25d5..e6d79536 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">USA (internationell)</translation> <translation id="2562685439590298522">Dokument</translation> <translation id="2563185590376525700">Groda</translation> -<translation id="2572501073504669105">Du kan göra filer tillgängliga offline så att du kommer åt de, när du inte har internetanslutning.</translation> <translation id="2578394532502990878">tamil, fonetiskt</translation> <translation id="2579959351793446050">odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" />-video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb index 8132c22..3e1386d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Kiingereza cha Marekani cha Kimataifa</translation> <translation id="2562685439590298522">Hati za Google</translation> <translation id="2563185590376525700">Chura</translation> -<translation id="2572501073504669105">Unaweza kufanya faili zipatikane nje ya mtandao ili uweze kuzipata wakati huna muunganisho wa intaneti.</translation> <translation id="2578394532502990878">Fonetiki ya Kitamili</translation> <translation id="2579959351793446050">Kiodia</translation> <translation id="2614589611416690597">Video ya <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb index 31a1f9b..3ce91b0 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">யு.எஸ். இன்டர்நேஷனல்</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">தவளை</translation> -<translation id="2572501073504669105">இணைய இணைப்பு இல்லாதபோதும் ஆஃப்லைனில் கோப்புகளை அணுகும் வகையில் அமைக்கலாம்.</translation> <translation id="2578394532502990878">தமிழ் ஒலிப்புமுறை</translation> <translation id="2579959351793446050">ஒடியா</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> வீடியோ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_te.xtb b/ui/chromeos/translations/ui_chromeos_strings_te.xtb index 624c03d..8447b8f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_te.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">యుఎస్ అంతర్జాతీయం</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">కప్ప</translation> -<translation id="2572501073504669105">మీరు ఇంటర్నెట్ కనెక్షన్ కలిగి లేనప్పుడు యాక్సెస్ చేయడానికి ఫైల్స్ను మీరు ఆఫ్లైన్లో అందుబాటులో ఉంచుకోవచ్చు.</translation> <translation id="2578394532502990878">తమిళం ఫొనెటిక్</translation> <translation id="2579959351793446050">ఒడియా</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> వీడియో</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_th.xtb b/ui/chromeos/translations/ui_chromeos_strings_th.xtb index 92d4fb24..6b15d0f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_th.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">สหรัฐอเมริกาสากล</translation> <translation id="2562685439590298522">เอกสาร</translation> <translation id="2563185590376525700">กบ</translation> -<translation id="2572501073504669105">คุณทำให้ไฟล์ใช้งานแบบออฟไลน์ได้เพื่อเข้าถึงเมื่อไม่มีการเชื่อมต่ออินเทอร์เน็ต</translation> <translation id="2578394532502990878">ทมิฬ (ตามการออกเสียง)</translation> <translation id="2579959351793446050">โอเดีย</translation> <translation id="2614589611416690597">วิดีโอ <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb index 6e90f35..0365d288 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">ABD uluslararası</translation> <translation id="2562685439590298522">Google Dokümanlar</translation> <translation id="2563185590376525700">Kurbağa</translation> -<translation id="2572501073504669105">Dosyaları, internet bağlantınız yokken çevrimdışı olarak erişilebilir hale getirebilirsiniz.</translation> <translation id="2578394532502990878">Tamilce Fonetik</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb index 44565b2..91d1fb04 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Міжнародна (США)</translation> <translation id="2562685439590298522">Документи</translation> <translation id="2563185590376525700">Жаба</translation> -<translation id="2572501073504669105">Ви можете зробити файли доступними офлайн, щоб відкривати їх, коли немає інтернет-з'єднання.</translation> <translation id="2578394532502990878">Тамільська, фонетична розкладка</translation> <translation id="2579959351793446050">Орія</translation> <translation id="2614589611416690597">Відео <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb index 24a1b5b7..b76dc1f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">امریکی بین الاقوامی</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2563185590376525700">مینڈک</translation> -<translation id="2572501073504669105">انٹرنیٹ کنکشن نہ ہونے پر رسائی کے لیے آپ فائلز کو آف لائن دستیاب بنا سکتے ہیں۔</translation> <translation id="2578394532502990878">تمل فونیٹک</translation> <translation id="2579959351793446050">اڑیہ</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ویڈیو</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb index 6c1192ea..4234094 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">AQSH (xalqaro)</translation> <translation id="2562685439590298522">Hujjatlar</translation> <translation id="2563185590376525700">Qurbaqa</translation> -<translation id="2572501073504669105">Fayllarni internetsiz ochish uchun oflaynga nusxalashingiz mumkin.</translation> <translation id="2578394532502990878">Tamil (fonetik)</translation> <translation id="2579959351793446050">Oriya</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> video</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb index 45895f3..44a4251 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">Bàn phím quốc tế Hoa Kỳ</translation> <translation id="2562685439590298522">Documents</translation> <translation id="2563185590376525700">Ếch</translation> -<translation id="2572501073504669105">Bạn có thể chọn xem các tệp ở chế độ ngoại tuyến khi không có mạng.</translation> <translation id="2578394532502990878">Tiếng Tamil (phiên âm)</translation> <translation id="2579959351793446050">Tiếng Odia</translation> <translation id="2614589611416690597">Video <ph name="VIDEO_TYPE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb index 8eb1d91f..143c73b 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">美国英语(国际)</translation> <translation id="2562685439590298522">文档</translation> <translation id="2563185590376525700">青蛙</translation> -<translation id="2572501073504669105">您可将文件设为“可离线使用”,以便在无互联网连接的情况下访问。</translation> <translation id="2578394532502990878">泰米尔语注音</translation> <translation id="2579959351793446050">奥里亚语</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> 视频</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb index 2125bef1..b41aea98 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">美國國際鍵盤</translation> <translation id="2562685439590298522">文件</translation> <translation id="2563185590376525700">青蛙</translation> -<translation id="2572501073504669105">您可將檔案設定為可離線使用,以便在沒有互聯網時存取檔案。</translation> <translation id="2578394532502990878">泰米爾文 (拼音)</translation> <translation id="2579959351793446050">歐利亞文</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> 影片</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb index 1fdf1b3..695fa42 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">美國國際</translation> <translation id="2562685439590298522">文件</translation> <translation id="2563185590376525700">青蛙</translation> -<translation id="2572501073504669105">你可以將檔案設定為可離線使用,以便在沒有網路連線時存取檔案。</translation> <translation id="2578394532502990878">泰米爾文 (拼音)</translation> <translation id="2579959351793446050">歐利亞文</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> 影片</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zu.xtb b/ui/chromeos/translations/ui_chromeos_strings_zu.xtb index f42d997..89d1784 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zu.xtb
@@ -142,7 +142,6 @@ <translation id="255937426064304553">I-US yamazwe ngamazwe</translation> <translation id="2562685439590298522">Amadokhumenti</translation> <translation id="2563185590376525700">Ixoxo</translation> -<translation id="2572501073504669105">Ungenza amafayela atholakale ngokungaxhunyiwe kwi-inthanethi ukuze uwafinyelele lapho ungenakho ukuxhumeka kwi-inthanethi.</translation> <translation id="2578394532502990878">I-Tamil Phonetic</translation> <translation id="2579959351793446050">Isi-Odia</translation> <translation id="2614589611416690597"><ph name="VIDEO_TYPE" /> ividiyo</translation>
diff --git a/ui/file_manager/file_manager/common/js/util.js b/ui/file_manager/file_manager/common/js/util.js index 6e535d5..3e27653 100644 --- a/ui/file_manager/file_manager/common/js/util.js +++ b/ui/file_manager/file_manager/common/js/util.js
@@ -1806,6 +1806,24 @@ element.clientHeight < element.scrollHeight; }; +/** + * Returns the Files app modal dialog used to embed any files app dialog + * that derives from cr.ui.dialogs. + * + * @return {!HTMLDialogElement} + */ +util.getFilesAppModalDialogInstance = () => { + let dialogElement = document.querySelector('#files-app-modal-dialog'); + + if (!dialogElement) { // Lazily create the files app dialog instance. + dialogElement = document.createElement('dialog'); + dialogElement.id = 'files-app-modal-dialog'; + document.body.appendChild(dialogElement); + } + + return /** @type {!HTMLDialogElement} */ (dialogElement); +}; + /** @return {boolean} */ util.isSharesheetEnabled = () => { return loadTimeData.valueExists('SHARESHEET_ENABLED') &&
diff --git a/ui/file_manager/file_manager/cws_widget/BUILD.gn b/ui/file_manager/file_manager/cws_widget/BUILD.gn index 62756a1b..80625efe 100644 --- a/ui/file_manager/file_manager/cws_widget/BUILD.gn +++ b/ui/file_manager/file_manager/cws_widget/BUILD.gn
@@ -71,12 +71,19 @@ } js_library("cws_widget_container_error_dialog") { - deps = [ "//ui/webui/resources/js/cr/ui:dialogs" ] + deps = [ + "../common/js:util", + "//ui/webui/resources/js/cr/ui:dialogs", + ] } js_library("cws_widget_container_error_dialog.m") { sources = [ "$root_gen_dir/ui/file_manager/file_manager/cws_widget/cws_widget_container_error_dialog.m.js" ] - deps = [ "//ui/webui/resources/js/cr/ui:dialogs.m" ] + + deps = [ + "../common/js:util.m", + "//ui/webui/resources/js/cr/ui:dialogs.m", + ] extra_deps = [ ":modulize" ] }
diff --git a/ui/file_manager/file_manager/cws_widget/cws_widget_container_error_dialog.js b/ui/file_manager/file_manager/cws_widget/cws_widget_container_error_dialog.js index 5176e62..de94474 100644 --- a/ui/file_manager/file_manager/cws_widget/cws_widget_container_error_dialog.js +++ b/ui/file_manager/file_manager/cws_widget/cws_widget_container_error_dialog.js
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// #import {util} from '../common/js/util.m.js'; // #import {BaseDialog} from 'chrome://resources/js/cr/ui/dialogs.m.js'; /* #export */ class CWSWidgetContainerErrorDialog extends @@ -30,6 +31,8 @@ */ initDom() { super.initDom(); + super.hasModalContainer = true; + this.frame.classList.add('cws-widget-error-dialog-frame'); const img = this.document_.createElement('div'); img.className = 'cws-widget-error-dialog-img'; @@ -58,4 +61,25 @@ this.okButton.focus(); } } + + /** + * @override + * @suppress {accessControls} + */ + show_(...args) { + this.parentNode_ = util.getFilesAppModalDialogInstance(); + + super.show_(...args); + + this.parentNode_.showModal(); + } + + /** + * @override + */ + hide(...args) { + this.parentNode_.close(); + + super.hide(...args); + } }
diff --git a/ui/file_manager/file_manager/foreground/css/common.css b/ui/file_manager/file_manager/foreground/css/common.css index 9a67f31..582ff384 100644 --- a/ui/file_manager/file_manager/foreground/css/common.css +++ b/ui/file_manager/file_manager/foreground/css/common.css
@@ -522,6 +522,20 @@ font-size: 14px; } +/* Modal <dialog> container for Pop-up dialogs. */ +#files-app-modal-dialog { + background-color: transparent; + border: none; + height: 100%; + margin: 0; + max-height: initial; + max-width: initial; + outline: none; + overflow: hidden; + padding: 0; + width: 100%; +} + /* Minor tweak of vertical position for texts which need to be vertically * aligned with corresponding file-type icons. */ .tree-row > .label,
diff --git a/ui/file_manager/file_manager/foreground/js/ui/banners.js b/ui/file_manager/file_manager/foreground/js/ui/banners.js index cbbeeca..6c8595be 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/banners.js +++ b/ui/file_manager/file_manager/foreground/js/ui/banners.js
@@ -214,6 +214,7 @@ util.visitURL(str('GOOGLE_DRIVE_OFFLINE_HELP_URL')); this.setOfflineInfoBannerCounter_(OFFLINE_INFO_BANNER_COUNTER_LIMIT); this.offlineInfoBanner_.hidden = true; + this.hasShownOfflineInfoBanner_ = false; e.preventDefault(); });
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base.js b/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base.js index 63818e9..fca613de 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base.js +++ b/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base.js
@@ -21,6 +21,15 @@ } /** + * @protected + * @override + */ + initDom() { + super.initDom(); + super.hasModalContainer = true; + } + + /** * @param {string} title Title. * @param {string} message Message. * @param {?function()} onOk Called when the OK button is pressed. @@ -104,15 +113,25 @@ } /** - * @param {Function=} opt_onHide Called when the dialog is hidden. + * @override + * @suppress {accessControls} */ - hide(opt_onHide) { + show_(...args) { + this.parentNode_ = util.getFilesAppModalDialogInstance(); + + super.show_(...args); + + this.parentNode_.showModal(); + } + + /** + * @override + */ + hide(...args) { + this.parentNode_.close(); + FileManagerDialogBase.shown = false; - super.hide(() => { - if (opt_onHide) { - opt_onHide(); - } - }); + super.hide(...args); } }
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base_unittest.m.js b/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base_unittest.m.js index 30dcfc5..bb352941 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base_unittest.m.js +++ b/ui/file_manager/file_manager/foreground/js/ui/file_manager_dialog_base_unittest.m.js
@@ -12,26 +12,27 @@ /** @suppress {duplicate,checkTypes,const} */ chrome.app = {window: {current: () => null}}; + // Mock loadTimeData. window.loadTimeData.data = { FILES_NG_ENABLED: true, }; } export async function testShowDialogAfterHide(done) { - const container = - assertInstanceof(document.createElement('div'), HTMLElement); + const dialog = new FileManagerDialogBase(document.body); + /** @return {boolean} True if cr.ui.dialog container has .shown class */ function isShown() { - return !!container.querySelector('.cr-dialog-container.shown'); + const element = document.querySelector('.cr-dialog-container'); + return element.classList.contains('shown'); } - const dialog = new FileManagerDialogBase(container); // Show the dialog and wait until .shown is set on .cr-dialog-container. - // This happens async. + // The setting of .shown happens async. dialog.showBlankDialog(); await waitUntil(isShown); - // Call hide, and validate .shown is removed (sync). + // Hide the dialog and verify .shown is removed (sync). dialog.hide(); assertFalse(isShown()); @@ -40,5 +41,6 @@ // the dialog showing again at all if it was called too soon. dialog.showBlankDialog(); await waitUntil(isShown); + done(); }
diff --git a/ui/file_manager/file_manager/foreground/js/ui/files_alert_dialog.js b/ui/file_manager/file_manager/foreground/js/ui/files_alert_dialog.js index 668229f..99e4453 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/files_alert_dialog.js +++ b/ui/file_manager/file_manager/foreground/js/ui/files_alert_dialog.js
@@ -26,11 +26,34 @@ */ initDom() { super.initDom(); + super.hasModalContainer = true; + this.frame.classList.add('files-alert-dialog'); } /** * @override + * @suppress {accessControls} + */ + show_(...args) { + this.parentNode_ = util.getFilesAppModalDialogInstance(); + + super.show_(...args); + + this.parentNode_.showModal(); + } + + /** + * @override + */ + hide(...args) { + this.parentNode_.close(); + + super.hide(...args); + } + + /** + * @override */ showWithTitle(title, message, ...args) { this.frame.classList.toggle('no-title', !title);
diff --git a/ui/file_manager/file_manager/foreground/js/ui/files_confirm_dialog.js b/ui/file_manager/file_manager/foreground/js/ui/files_confirm_dialog.js index 1b07e2a..96611a79 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/files_confirm_dialog.js +++ b/ui/file_manager/file_manager/foreground/js/ui/files_confirm_dialog.js
@@ -32,6 +32,14 @@ * @public */ this.doneCallback = null; + + /** + * @type {boolean} focusCancelButton Set true if the cancel button + * should be focused when the dialog is first displayed. Otherwise + * (the default) the dialog will focus the confirm button. + * @public + */ + this.focusCancelButton = false; } /** @@ -40,11 +48,44 @@ */ initDom() { super.initDom(); + super.hasModalContainer = true; + this.frame.classList.add('files-confirm-dialog'); } /** * @override + * @suppress {accessControls} + */ + show_(...args) { + if (!this.showModalElement) { + this.parentNode_ = util.getFilesAppModalDialogInstance(); + } + + if (this.focusCancelButton) { + this.setInitialFocusOnCancel(); + } + + super.show_(...args); + + if (!this.showModalElement) { + this.parentNode_.showModal(); + } + } + + /** + * @override + */ + hide(...args) { + if (!this.showModalElement) { + this.parentNode_.close(); + } + + super.hide(...args); + } + + /** + * @override */ showWithTitle(title, message, ...args) { this.frame.classList.toggle('no-title', !title);
diff --git a/ui/file_manager/file_manager/foreground/js/ui/install_linux_package_dialog_unittest.m.js b/ui/file_manager/file_manager/foreground/js/ui/install_linux_package_dialog_unittest.m.js index 36cd935..cd888e4 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/install_linux_package_dialog_unittest.m.js +++ b/ui/file_manager/file_manager/foreground/js/ui/install_linux_package_dialog_unittest.m.js
@@ -5,7 +5,6 @@ import {assertInstanceof} from 'chrome://resources/js/assert.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {assertFalse, assertTrue} from 'chrome://test/chai_assert.js'; - import {InstallLinuxPackageDialog} from './install_linux_package_dialog.m.js'; export function testInstallButtonHiddenUntilInfoReady() { @@ -13,6 +12,8 @@ /** @suppress {checkTypes,const} */ chrome.app = {window: {current: () => null}}; + // Mock loadTimeData. + loadTimeData.getString = id => id; loadTimeData.data = {}; let getInfoCallback; @@ -22,17 +23,16 @@ getInfoCallback = callback; } }; - const container = - assertInstanceof(document.createElement('div'), HTMLElement); const info = {name: 'n', version: 'v', info: 'i', summary: 's'}; - const dialog = new InstallLinuxPackageDialog(container); + const dialog = new InstallLinuxPackageDialog(document.body); - // Show dialog and very that install button is disabled. + // Show dialog and verify that the install button is disabled. dialog.showInstallLinuxPackageDialog(/** @type {!Entry} */ ({})); - assertTrue(container.querySelector('.cr-dialog-ok').disabled); + const installButton = document.querySelector('.cr-dialog-ok'); + assertTrue(installButton.disabled); - // Button becomes enabled once info is ready. + // The install button should become enabled once info is ready. getInfoCallback(info); - assertFalse(container.querySelector('.cr-dialog-ok').disabled); + assertFalse(installButton.disabled); }
diff --git a/ui/file_manager/integration_tests/file_manager/drive_specific.js b/ui/file_manager/integration_tests/file_manager/drive_specific.js index b6e3dadf..b65bc43 100644 --- a/ui/file_manager/integration_tests/file_manager/drive_specific.js +++ b/ui/file_manager/integration_tests/file_manager/drive_specific.js
@@ -847,6 +847,18 @@ // Check: the Drive Offline info banner should appear. await remoteCall.waitForElement(appId, '#offline-info-banner:not([hidden])'); + + // Click on the 'Learn more' button. + await remoteCall.waitAndClickElement(appId, '#offline-learn-more'); + + // Check: the Drive offline info banner should disappear. + await remoteCall.waitForElement(appId, '#offline-info-banner[hidden]'); + + // Navigate to a different directory within Drive. + await navigateWithDirectoryTree(appId, '/My Drive/photos'); + + // Check: the Drive offline info banner should stay hidden. + await remoteCall.waitForElement(appId, '#offline-info-banner[hidden]'); }; /**
diff --git a/ui/login/display_manager.js b/ui/login/display_manager.js index 1f5c1605..f9631c6 100644 --- a/ui/login/display_manager.js +++ b/ui/login/display_manager.js
@@ -271,9 +271,6 @@ }, setOrientation: function(isHorizontal) { - // Below code is also used to set the dialog orientation for in-session - // multidevice setup flow and assistant onboarding flow. Please make sure - // code changes are applied to all places. if (isHorizontal) { document.documentElement.setAttribute('orientation', 'horizontal'); } else { @@ -282,9 +279,6 @@ }, setDialogSize: function(width, height) { - // Below code is also used to set the dialog size for in-session - // multidevice setup flow and assistant onboarding flow. Please make sure - // code changes are applied to all places. document.documentElement.style.setProperty( '--oobe-oobe-dialog-height-base', height + 'px'); document.documentElement.style.setProperty(
diff --git a/ui/native_theme/native_theme.cc b/ui/native_theme/native_theme.cc index 6f9221b..599e6d6 100644 --- a/ui/native_theme/native_theme.cc +++ b/ui/native_theme/native_theme.cc
@@ -212,8 +212,7 @@ float NativeTheme::GetBorderRadiusForPart(Part part, float width, - float height, - float zoom) const { + float height) const { return 0; }
diff --git a/ui/native_theme/native_theme.h b/ui/native_theme/native_theme.h index 20943ab9..4d8f80b 100644 --- a/ui/native_theme/native_theme.h +++ b/ui/native_theme/native_theme.h
@@ -337,8 +337,7 @@ virtual float GetBorderRadiusForPart(Part part, float width, - float height, - float zoom) const; + float height) const; // Paint the part to the canvas. virtual void Paint(
diff --git a/ui/native_theme/native_theme_base.cc b/ui/native_theme/native_theme_base.cc index 99b4081..f6df4c2 100644 --- a/ui/native_theme/native_theme_base.cc +++ b/ui/native_theme/native_theme_base.cc
@@ -212,8 +212,7 @@ float NativeThemeBase::GetBorderRadiusForPart(Part part, float width, - float height, - float zoom) const { + float height) const { if (!features::IsFormControlsRefreshEnabled()) { NOTREACHED() << "GetBorderRadiusForPart only supports FormControlsRefresh."; return 0; @@ -603,8 +602,8 @@ const ButtonExtraParams& button, ColorScheme color_scheme) const { if (features::IsFormControlsRefreshEnabled()) { - const float border_radius = GetBorderRadiusForPart( - kCheckbox, rect.width(), rect.height(), button.zoom); + const float border_radius = + GetBorderRadiusForPart(kCheckbox, rect.width(), rect.height()); SkRect skrect = PaintCheckboxRadioCommon(canvas, state, rect, button, true, border_radius, color_scheme); @@ -840,8 +839,8 @@ if (features::IsFormControlsRefreshEnabled()) { // Most of a radio button is the same as a checkbox, except the the rounded // square is a circle (i.e. border radius >= 100%). - const float border_radius = GetBorderRadiusForPart( - kRadio, rect.width(), rect.height(), button.zoom); + const float border_radius = + GetBorderRadiusForPart(kRadio, rect.width(), rect.height()); SkRect skrect = PaintCheckboxRadioCommon(canvas, state, rect, button, false, border_radius, color_scheme); if (!skrect.isEmpty() && button.checked) { @@ -899,8 +898,8 @@ return; } - float border_radius = GetBorderRadiusForPart(kPushButton, rect.width(), - rect.height(), button.zoom); + float border_radius = + GetBorderRadiusForPart(kPushButton, rect.width(), rect.height()); // Paint the background (is not visible behind the rounded corners). skrect.inset(kBorderWidth / 2, kBorderWidth / 2); PaintLightenLayer(canvas, skrect, state, border_radius, color_scheme); @@ -973,8 +972,8 @@ ColorScheme color_scheme) const { if (features::IsFormControlsRefreshEnabled()) { SkRect bounds = gfx::RectToSkRect(rect); - const SkScalar border_radius = GetBorderRadiusForPart( - kTextField, rect.width(), rect.height(), /*zoom level=*/1); + const SkScalar border_radius = + GetBorderRadiusForPart(kTextField, rect.width(), rect.height()); // Paint the background (is not visible behind the rounded corners). bounds.inset(kBorderWidth / 2, kBorderWidth / 2); @@ -1155,8 +1154,8 @@ track_rect.inset(0, 1); else track_rect.inset(1, 0); - float border_radius = GetBorderRadiusForPart(kSliderTrack, rect.width(), - rect.height(), slider.zoom); + float border_radius = + GetBorderRadiusForPart(kSliderTrack, rect.width(), rect.height()); canvas->drawRoundRect(track_rect, border_radius, border_radius, flags); // Clip the track to create rounded corners for the value bar. @@ -1205,8 +1204,8 @@ const SliderExtraParams& slider, ColorScheme color_scheme) const { if (features::IsFormControlsRefreshEnabled()) { - const float radius = GetBorderRadiusForPart(kSliderThumb, rect.width(), - rect.height(), slider.zoom); + const float radius = + GetBorderRadiusForPart(kSliderThumb, rect.width(), rect.height()); SkRect thumb_rect = gfx::RectToSkRect(rect); cc::PaintFlags flags; @@ -1308,8 +1307,8 @@ slider.vertical = false; float track_height = rect.height() * kTrackHeightRatio; SkRect track_rect = AlignSliderTrack(rect, slider, false, track_height); - float border_radius = GetBorderRadiusForPart( - kProgressBar, rect.width(), rect.height(), /*zoom level=*/1); + float border_radius = + GetBorderRadiusForPart(kProgressBar, rect.width(), rect.height()); canvas->drawRoundRect(track_rect, border_radius, border_radius, flags); // Clip the track to create rounded corners for the value bar.
diff --git a/ui/native_theme/native_theme_base.h b/ui/native_theme/native_theme_base.h index 3c2c17b..5200da47 100644 --- a/ui/native_theme/native_theme_base.h +++ b/ui/native_theme/native_theme_base.h
@@ -29,8 +29,7 @@ const ExtraParams& extra) const override; float GetBorderRadiusForPart(Part part, float width, - float height, - float zoom) const override; + float height) const override; void Paint(cc::PaintCanvas* canvas, Part part, State state,
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate.cc b/ui/views/accessibility/view_ax_platform_node_delegate.cc index 6cfab17..b5826f89 100644 --- a/ui/views/accessibility/view_ax_platform_node_delegate.cc +++ b/ui/views/accessibility/view_ax_platform_node_delegate.cc
@@ -130,7 +130,12 @@ const ViewAXPlatformNodeDelegate::ChildWidgetsResult& other) = default; ViewAXPlatformNodeDelegate::ViewAXPlatformNodeDelegate(View* view) - : ViewAccessibility(view) { + : ViewAccessibility(view) {} + +void ViewAXPlatformNodeDelegate::Init() { + ax_platform_node_ = ui::AXPlatformNode::Create(this); + DCHECK(ax_platform_node_); + static bool first_time = true; if (first_time) { ui::AXPlatformNode::RegisterNativeWindowHandler(
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate.h b/ui/views/accessibility/view_ax_platform_node_delegate.h index 7332d04..3bfefe77 100644 --- a/ui/views/accessibility/view_ax_platform_node_delegate.h +++ b/ui/views/accessibility/view_ax_platform_node_delegate.h
@@ -104,13 +104,13 @@ protected: explicit ViewAXPlatformNodeDelegate(View* view); - ui::AXPlatformNode* ax_platform_node() { return ax_platform_node_; } + friend class ViewAccessibility; + // Called by ViewAccessibility::Create immediately after + // construction. Used to avoid issues with calling virtual functions + // during the constructor. + virtual void Init(); - // We own this, but it is reference-counted on some platforms so we can't use - // a unique_ptr. It is destroyed in the destructor. - // TODO(nektar): Move this to the private section and turn it into a const - // pointer. - ui::AXPlatformNode* ax_platform_node_; + ui::AXPlatformNode* ax_platform_node() { return ax_platform_node_; } private: struct ChildWidgetsResult final { @@ -144,6 +144,10 @@ // Gets the real (non-virtual) TableView, otherwise nullptr. TableView* GetAncestorTableView() const; + // We own this, but it is reference-counted on some platforms so we can't use + // a unique_ptr. It is destroyed in the destructor. + ui::AXPlatformNode* ax_platform_node_ = nullptr; + mutable ui::AXNodeData data_; };
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc b/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc index 5cf1981..5a24085 100644 --- a/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc +++ b/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc
@@ -200,17 +200,20 @@ // static std::unique_ptr<ViewAccessibility> ViewAccessibility::Create(View* view) { AuraLinuxApplication::GetInstance().RegisterWidget(view->GetWidget()); - return std::make_unique<ViewAXPlatformNodeDelegateAuraLinux>(view); + + auto result = std::make_unique<ViewAXPlatformNodeDelegateAuraLinux>(view); + result->Init(); + return result; } ViewAXPlatformNodeDelegateAuraLinux::ViewAXPlatformNodeDelegateAuraLinux( View* view) - : ViewAXPlatformNodeDelegate(view) { - // TODO(nektar): Move this to parent class. - ax_platform_node_ = ui::AXPlatformNode::Create(this); - DCHECK(ax_platform_node_); + : ViewAXPlatformNodeDelegate(view) {} - view_observation_.Observe(view); +void ViewAXPlatformNodeDelegateAuraLinux::Init() { + ViewAXPlatformNodeDelegate::Init(); + + view_observation_.Observe(view()); } ViewAXPlatformNodeDelegateAuraLinux::~ViewAXPlatformNodeDelegateAuraLinux() {
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.h b/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.h index 48ae91e3..efa378a 100644 --- a/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.h +++ b/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.h
@@ -23,6 +23,8 @@ const ViewAXPlatformNodeDelegateAuraLinux&) = delete; ~ViewAXPlatformNodeDelegateAuraLinux() override; + void Init() override; + // |ViewAXPlatformNodeDelegate| overrides: gfx::NativeViewAccessible GetParent() override; bool IsChildOfLeaf() const override;
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate_mac.mm b/ui/views/accessibility/view_ax_platform_node_delegate_mac.mm index e9f8a3f..6e6cb3b 100644 --- a/ui/views/accessibility/view_ax_platform_node_delegate_mac.mm +++ b/ui/views/accessibility/view_ax_platform_node_delegate_mac.mm
@@ -15,15 +15,13 @@ // static std::unique_ptr<ViewAccessibility> ViewAccessibility::Create(View* view) { - return std::make_unique<ViewAXPlatformNodeDelegateMac>(view); + auto result = std::make_unique<ViewAXPlatformNodeDelegateMac>(view); + result->Init(); + return result; } ViewAXPlatformNodeDelegateMac::ViewAXPlatformNodeDelegateMac(View* view) - : ViewAXPlatformNodeDelegate(view) { - // TODO(nektar): Move this to parent class. - ax_platform_node_ = ui::AXPlatformNode::Create(this); - DCHECK(ax_platform_node_); -} + : ViewAXPlatformNodeDelegate(view) {} ViewAXPlatformNodeDelegateMac::~ViewAXPlatformNodeDelegateMac() = default;
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate_win.cc b/ui/views/accessibility/view_ax_platform_node_delegate_win.cc index a609c76e..af845a0c 100644 --- a/ui/views/accessibility/view_ax_platform_node_delegate_win.cc +++ b/ui/views/accessibility/view_ax_platform_node_delegate_win.cc
@@ -36,15 +36,13 @@ // static std::unique_ptr<ViewAccessibility> ViewAccessibility::Create(View* view) { - return std::make_unique<ViewAXPlatformNodeDelegateWin>(view); + auto result = std::make_unique<ViewAXPlatformNodeDelegateWin>(view); + result->Init(); + return result; } ViewAXPlatformNodeDelegateWin::ViewAXPlatformNodeDelegateWin(View* view) - : ViewAXPlatformNodeDelegate(view) { - // TODO(nektar): Move this to parent class. - ax_platform_node_ = ui::AXPlatformNode::Create(this); - DCHECK(ax_platform_node_); -} + : ViewAXPlatformNodeDelegate(view) {} ViewAXPlatformNodeDelegateWin::~ViewAXPlatformNodeDelegateWin() = default;
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.html b/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.html index cd25990..69ee219 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.html +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.html
@@ -27,7 +27,7 @@ } } </style> - <div id="shadow" hidden$="[[!shouldShowShadow]]"></div> + <div id="shadow" hidden></div> <div id="button-container"> <div id="backward" on-click="onBackwardButtonClicked_"
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.js b/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.js index 45d50cd..d3176fc 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.js +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/button_bar.js
@@ -32,7 +32,8 @@ shouldShowShadow: { type: Boolean, value: false, - }, + observer: 'onShouldShowShadowChange_', + } }, /** @private */ @@ -49,4 +50,9 @@ onBackwardButtonClicked_() { this.fire('backward-navigation-requested'); }, + + /** @private */ + onShouldShowShadowChange_() { + this.$.shadow.hidden = !!this.shouldShowShadow; + }, });
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/multidevice_setup.html b/ui/webui/resources/cr_components/chromeos/multidevice_setup/multidevice_setup.html index 3070216..7e1ee2c 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/multidevice_setup.html +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/multidevice_setup.html
@@ -30,22 +30,15 @@ flex-direction: column; font-size: 13px; height: 100%; + line-height: 16px; margin: auto; + max-width: var(--multidevice-setup-width, var(--default-ui-width)); + padding: 32px; } iron-pages { - height: 100%; overflow: var(--iron-pages-overflow, visible); - } - - button-bar { - padding: 24px; - } - - @media screen and (orientation: portrait) { - :host-context(html[screen=oobe]) button-bar { - align-items: center; - } + padding: 0 32px; } @media screen and (max-width: 767px) { @@ -55,6 +48,7 @@ /* Add height of buttons plus padding on top and bottom of buttons. */ margin-bottom: calc(var(--narrow-button-bar-height) + calc(2 * var(--narrow-button-bar-spacing))); + padding: 32px 32px 0 32px; } iron-pages { @@ -101,6 +95,7 @@ delegate="[[delegate]]"> </start-setup-page> </iron-pages> + <div class="flex"></div> <button-bar forward-button-hidden="[[!forwardButtonTextId]]" backward-button-hidden="[[!backwardButtonTextId]]" cancel-button-hidden="[[!cancelButtonTextId]]"
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/password_page.html b/ui/webui/resources/cr_components/chromeos/multidevice_setup/password_page.html index 3fd567d..ac75f0e 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/password_page.html +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/password_page.html
@@ -10,12 +10,6 @@ <dom-module id="password-page"> <template> <style include="multidevice-setup-shared"> - #content-container { - display: flex; - flex: 1; - flex-direction: column; - } - #user-info-container { align-items: center; color: var(--paper-grey-600); @@ -34,12 +28,6 @@ margin-top: 64px; width: 100%; } - - @media screen and (orientation: landscape) { - #user-info-container { - padding-top: 72px; - } - } </style> <ui-page header-text="[[i18nDynamic(locale, 'passwordPageHeader')]]" icon-name="google-g">
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/setup_succeeded_page.html b/ui/webui/resources/cr_components/chromeos/multidevice_setup/setup_succeeded_page.html index 2105228..37f85df 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/setup_succeeded_page.html +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/setup_succeeded_page.html
@@ -10,9 +10,7 @@ <template> <style include="multidevice-setup-shared"> #page-icon-container { - align-items: center; display: flex; - flex: 1; justify-content: center; } @@ -21,6 +19,7 @@ url(setup_succeeded_icon_1x.png) 1x, url(setup_succeeded_icon_2x.png) 2x); height: 156px; + margin-top: 64px; width: 416px; } </style>
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/start_setup_page.html b/ui/webui/resources/cr_components/chromeos/multidevice_setup/start_setup_page.html index 153297c..f3b5939 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/start_setup_page.html +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/start_setup_page.html
@@ -15,7 +15,7 @@ <style include="multidevice-setup-shared"> #selector-and-details-container { display: flex; - flex-direction: column; + margin-top: 20px; min-height: 246px; } @@ -49,13 +49,14 @@ color: var(--paper-grey-600); display: flex; flex-direction: column; - margin-top: 18px; } #feature-details-container { + border-inline-start: 1px solid rgb(218, 220, 224); display: flex; flex-direction: column; justify-content: center; + padding-inline-start: 24px; } #feature-details-container-header { @@ -66,7 +67,7 @@ align-items: center; box-sizing: border-box; display: flex; - min-height: 36px; + padding: 10px 0; } .feature-detail iron-icon { @@ -88,14 +89,22 @@ display: inline-block; } - #additional-content-container { - display: flex; - flex-direction: column; - } + /* On devices with small screens, use a single-column layout. */ + @media screen and (max-width: 767px) { + #selector-and-details-container { + display: flex; + flex-direction: column; + margin-top: 32px; + } - @media screen and (orientation: landscape) { - #additional-content-container { - justify-content: center; + #feature-details-container { + border-inline-start: none; + margin-top: 32px; + padding-inline-start: inherit; + } + + .feature-detail { + min-height: 45px; } } </style> @@ -105,8 +114,36 @@ <span slot="message" id="multidevice-summary-message" inner-h-t-m-l= "[[i18nAdvancedDynamic_(locale, 'startSetupPageMessage')]]"> </span> - <div id="additional-content-container" slot="additional-content"> + <div slot="additional-content"> <div id="selector-and-details-container"> + <div id="deviceSelectionContainer" class="flex"> + [[getDeviceSelectionHeader_(devices)]] + <div id="singleDeviceName" + hidden$="[[!doesDeviceListHaveOneElement_(devices)]]"> + [[getFirstDeviceNameInList_(devices)]] + </div> + <div hidden$="[[!doesDeviceListHaveMultipleElements_(devices)]]"> + <select id="deviceDropdown" + class="md-select" + on-change="onDeviceDropdownSelectionChanged_"> + <template is="dom-repeat" items="[[devices]]"> + <option + class$="[[getDeviceOptionClass_(item.connectivityStatus)]]" + value$="[[getInstanceIdOrLegacyDeviceId_(item)]]"> + [[getDeviceNameWithConnectivityStatus_(item)]] + </option> + </template> + </select> + </div> + <div class="flex"></div> + <div id="page-icon-container"> + <div id="page-icon"></div> + </div> + <div class="flex"></div> + <div id="footnote"> + [[i18nAdvancedDynamic_(locale, 'startSetupPageFootnote')]] + </div> + </div> <div id="feature-details-container" class="flex"> <div id="feature-details-container-header"> [[i18nDynamic(locale, 'startSetupPageFeatureListHeader')]] @@ -150,34 +187,6 @@ </span> </div> </div> - <div id="deviceSelectionContainer" class="flex"> - [[getDeviceSelectionHeader_(devices)]] - <div id="singleDeviceName" - hidden$="[[!doesDeviceListHaveOneElement_(devices)]]"> - [[getFirstDeviceNameInList_(devices)]] - </div> - <div hidden$="[[!doesDeviceListHaveMultipleElements_(devices)]]"> - <select id="deviceDropdown" - class="md-select" - on-change="onDeviceDropdownSelectionChanged_"> - <template is="dom-repeat" items="[[devices]]"> - <option - class$="[[getDeviceOptionClass_(item.connectivityStatus)]]" - value$="[[getInstanceIdOrLegacyDeviceId_(item)]]"> - [[getDeviceNameWithConnectivityStatus_(item)]] - </option> - </template> - </select> - </div> - <div class="flex"></div> - <div id="page-icon-container"> - <div id="page-icon"></div> - </div> - <div class="flex"></div> - <div id="footnote"> - [[i18nAdvancedDynamic_(locale, 'startSetupPageFootnote')]] - </div> - </div> </div> </div> </ui-page>
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.html b/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.html index 3d7087a..5d4d3be6 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.html +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.html
@@ -14,141 +14,28 @@ h1 { color: var(--google-grey-900); - font-family: 'Google Sans', Roboto, sans-serif; + font-family: 'Google Sans'; font-size: 28px; - font-weight: 400; + font-weight: normal; + line-height: 28px; margin: 0; - padding-top: 40px; - text-align: var(--multidevice-setup-text-alignment); + padding-top: 36px; + } + + #message-container { + box-sizing: border-box; + min-height: 32px; + padding-top: 16px; } </style> - <template is="dom-if" if="[[newLayoutEnabled]]"> - <!-- - Below code is duplicated in oobe-adaptive-dialog. Please make sure - code changed are applied to both places. - --> - <style> - :host { - --multidevice-setup-dialog-height: var(--oobe-oobe-dialog-height-base); - --multidevice-setup-dialog-width: var(--oobe-oobe-dialog-width-base); - --multidevice-setup-dialog-content-padding: 40px; - } - - :host-context([orientation=horizontal]) { - --multidevice-setup-dialog-content-direction: row; - --multidevice-setup-dialog-item-alignment: unset; - --multidevice-setup-text-alignment: start; - --multidevice-setup-dialog-content-width: calc( - var(--multidevice-setup-dialog-width) - - 4 * var(--multidevice-setup-dialog-content-padding) - - var(--multidevice-setup-dialog-header-width)); - /* Header takes 40% of the width remaining after applying padding */ - --multidevice-setup-dialog-header-width: clamp(302px, - calc(0.4 * (var(--multidevice-setup-dialog-width) - - 4 * var(--multidevice-setup-dialog-content-padding))) , 346px); - } - - :host-context([orientation=vertical]) { - --multidevice-setup-dialog-content-direction: column; - --multidevice-setup-dialog-item-alignment: center; - --multidevice-setup-text-alignment: center; - --multidevice-setup-dialog-content-width: calc( - var(--multidevice-setup-dialog-width) - - 2 * var(--multidevice-setup-dialog-content-padding)); - /* Header takes 40% of the width remaining after applying padding */ - --multidevice-setup-dialog-header-width: clamp(302px, - calc(0.4 * (var(--multidevice-setup-dialog-width) - - 2 * var(--multidevice-setup-dialog-content-padding))) , 346px); - } - - #message-container { - color: var(--google-grey-700); - line-height: 18px; - min-height: 32px; - overflow-wrap: break-word; - padding-top: 16px; - text-align: var(--multidevice-setup-text-alignment); - } - - #main-container { - align-items: var(--multidevice-setup-dialog-item-alignment); - display: flex; - flex-direction: var(--multidevice-setup-dialog-content-direction); - height: 100%; - } - - #header-container { - align-items: var(--multidevice-setup-dialog-item-alignment); - display: flex; - flex-direction: column; - padding-bottom: 0; - padding-inline-end: var(--multidevice-setup-dialog-content-padding); - padding-inline-start: var(--multidevice-setup-dialog-content-padding); - padding-top: calc(var(--multidevice-setup-dialog-content-padding) - + 2 * min(40px, max(24px, calc(var(--multidevice-setup-dialog-height) - * 0.025)))); - width: var(--multidevice-setup-dialog-header-width); - } - - :host-context([screen=oobe]) #header-container { - padding-top: calc(var(--multidevice-setup-dialog-content-padding) - + 2 * min(40px, max(24px, calc(var(--multidevice-setup-dialog-height) - * 0.025))) + 32px); - } - - #additional-content-container { - border: transparent; - display: flex; - flex: 1; - margin-top: 40px; - overflow-y: auto; - padding-bottom: 0; - padding-inline-end: var(--multidevice-setup-dialog-content-padding); - padding-inline-start: var(--multidevice-setup-dialog-content-padding); - padding-top: 0; - width: var(--multidevice-setup-dialog-content-width); - } - </style> - <div id="main-container"> - <div id="header-container"> - <iron-icon icon="[[computeIconIdentifier_(iconName)]]"></iron-icon> - <h1>[[headerText]]</h1> - <div id="message-container"> - <slot name="message"></slot> - </div> - </div> - <div id="additional-content-container"> - <slot name="additional-content"></slot> - </div> - </div> - </template> - <template is="dom-if" if="[[!newLayoutEnabled]]"> - <style> - #main-container { - padding: 32px 64px; - } - - #message-container { - line-height: 18px; - min-height: 32px; - padding-top: 16px; - } - - #additional-content-container { - margin-top: 24px; - } - </style> - <div id="main-container"> - <iron-icon icon="[[computeIconIdentifier_(iconName)]]"></iron-icon> - <h1>[[headerText]]</h1> - <div id="message-container"> - <slot name="message"></slot> - </div> - <div id="additional-content-container"> - <slot name="additional-content"></slot> - </div> - </div> - </template> + <iron-icon icon="[[computeIconIdentifier_(iconName)]]"></iron-icon> + <h1>[[headerText]]</h1> + <div id="message-container"> + <slot name="message"></slot> + </div> + <div id="additional-content-container"> + <slot name="additional-content"></slot> + </div> </template> <script src="ui_page.js"></script> </dom-module>
diff --git a/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.js b/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.js index 7cf19d5..27d1ff30 100644 --- a/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.js +++ b/ui/webui/resources/cr_components/chromeos/multidevice_setup/ui_page.js
@@ -22,19 +22,6 @@ * @type {string} */ iconName: String, - - /** - * Whether new OOBE layout is enabled. - * - * @type {string} - */ - newLayoutEnabled: { - type: Boolean, - value() { - return loadTimeData.valueExists('newLayoutEnabled') && - loadTimeData.getBoolean('newLayoutEnabled'); - } - }, }, /**